He visto muchas introducciones a los marcos CSS recientemente. Hace unos días dije algo: "En mi limitado campo de visión, no he visto nada que realmente pueda llamarse un marco CSS ~". Puede que sea mío. El campo de visión es demasiado pequeño o el mundo es demasiado grande. Todavía siento que todavía hay muchas cosas que no puedo ver.
Veamos primero un concepto con el que estoy de acuerdo:
El marco se puede dividir en dos tipos: White-Box y Black-Box.
Los marcos basados en herencia se denominan marcos de caja blanca. El llamado cuadro blanco tiene visibilidad y la subclase conoce los detalles de implementación interna de la clase principal heredada. Los desarrolladores de aplicaciones que utilizan marcos de caja blanca desarrollan sistemas derivando subclases o anulando métodos miembro de las clases principales. La implementación de una subclase depende en gran medida de la implementación de la clase principal, y esta dependencia limita la flexibilidad y la integridad de la reutilización. Pero la forma de resolver esta limitación puede ser heredar solo la clase padre abstracta, porque las clases abstractas básicamente no proporcionan una implementación concreta. El marco de caja blanca es el esqueleto del programa y las subclases derivadas del usuario son accesorios de este esqueleto.
Un marco basado en el ensamblaje de componentes de objetos es un marco de caja negra. Los desarrolladores de aplicaciones obtienen la implementación del sistema clasificando y ensamblando objetos. Los usuarios solo necesitan comprender la interfaz externa del componente y no necesitan comprender la implementación interna específica. Además, el ensamblaje es más flexible que la herencia y se puede cambiar dinámicamente. La herencia es solo un concepto estático en tiempo de compilación.
En una situación ideal, cualquier funcionalidad requerida se puede obtener ensamblando componentes existentes. De hecho, los componentes disponibles están lejos de satisfacer las necesidades. A veces es más fácil obtener nuevos componentes mediante herencia que ensamblar nuevos componentes utilizando componentes existentes. La caja blanca y la caja negra se utilizarán en el desarrollo del sistema al mismo tiempo. Sin embargo, los marcos de caja blanca tienden a evolucionar hacia marcos de caja negra, y los marcos de caja negra también son los objetivos ideales que el desarrollo de sistemas espera lograr.
Echemos un vistazo a los muchos marcos CSS que hay en Internet hoy en día (YUI se llama "Herramientas CSS de la biblioteca YUI" en lugar de "Marcos CSS YUI"). ¿Cuántos de ellos están realmente escritos con el concepto de marco y cuántos de ellos? simplemente defina las clases base de estilo. Por supuesto, es posible que la comprensión del marco por parte de todos no sea la misma y es posible que no esté de acuerdo con lo que digo.
Hablemos del marco CSS nuevamente. No es que no reconozca la existencia de esto. He estado probando este tipo de cosas desde hace uno o dos años. Para sitios web grandes, el desarrollo front-end requiere una solución. Naturalmente, el marco es la primera opción. Es una pena que esté demasiado lejos de mí y esté demasiado débil T_T. Sólo necesito dos cosas:
Algo para gestionar el contenido a continuación.
Clase/Componente
Obviamente, el primer punto es que CSS no puede hacerlo y el segundo punto es que es muy débil en comparación con otros lenguajes.
Cuando estaba trabajando en un sitio web de tamaño mediano hace aproximadamente un año, para ser vago, pensé en modularizar el contenido y dejar que los programadores armaran las páginas. La dirección general es encapsular un bloque funcional tras otro. Los programadores solo necesitan usar el HTML y CSS correspondientes cuando quieran usar qué contenido es conveniente para todos. No es necesario repetir el código. Hola a todos. Es realmente bueno.
En el mismo sitio web, es normal que se utilicen bloques de contenido similares varias veces. Esto también hace posible la modularización, como una lista de imágenes, una lista de avatares de usuarios o una lista de íconos de grupo. ¿Escribirlo? ¿Deberían escribirse las mismas palabras así?
.photoListUesr,.photoListGroup{ /*_*/ }
Esto no significa que sea imposible, pero ¿qué pasa si de repente desea agregar uno similar? En este momento, es posible que deba ajustar el estilo. ¿Qué hay de mí? Intenté usarlo así:
<div class="photoList UesrCt" />
<div class="photoList GrupoCt" />
En este caso, separamos las expresiones comunes desde el principio, usamos .photoList como prototipo y manejamos los detalles a través de clases adicionales. Hace unos días, escribí sobre programación XHTML y CSS orientada a objetos. De hecho, solo escribí la mitad y la otra mitad fueron ejemplos detallados, pero no los terminé porque tuve que hacer demasiados ejemplos. El núcleo ya estaba escrito ^^ Por supuesto, esto también tiene ciertos problemas, es decir, la definición del prototipo inicial debe ser muy cuidadosa y tratar de garantizar que incluso si se revisa en el futuro, es posible que no sea necesario. modificado. Con CSS, básicamente un marco solo puede caber en un sitio web como máximo. Por supuesto, si el sitio web es lo suficientemente grande, tiene sentido usarlo de esta manera.
Cuanto más modulares se vuelven HTML y CSS, más fragmentados se vuelven los archivos y más grave se vuelve este problema. HTML es fácil de manejar, ya que la aplicación eventualmente se fusionará y generará una copia, pero CSS generalmente se descarta y se usa directamente. Si en el ejemplo de ahora, la forma de importar CSS a la página web es así:
@importar URL(/xxx/photoList.css);
@importar URL(/xxx/UserCt.css);
@importar URL(/xxx/GroupCt.css);
Incluso puedes considerar usar un programa para combinar páginas, pero es fácil de usar y proporcional a la cantidad de solicitudes. Generalmente, todos optarán por fusionar archivos manualmente. Aunque el cerebro humano es más inteligente que una computadora, en muchos casos la potencia informática del cerebro humano no es tan buena como la de una computadora. Una vez tuve la idea de usar un programa del lado del servidor para manejar el mecanismo de liberación de CSS. La dirección general es analizar el uso de varias páginas de todo el sitio a través de registros de acceso al sitio web y usar el programa para calcular qué usos públicos. es necesario fusionar el orden (el orden de los archivos CSS afectará la prioridad), etc. Varios cálculos y resultados comprimidos.
Desgraciadamente, un programa tan complejo puede que sólo sea adecuado para una emisora o para un grupo de emisoras de la misma serie. Aunque es un poco problemático de hacer, creo que es necesario utilizar este método para sitios web a nivel de portal. Por supuesto, la premisa es que todo el equipo debe utilizar el mismo patrón de diseño.
PD: El programa de publicación de CSS anterior es solo mi fantasía. Aún no lo he probado. Los amigos interesados pueden probarlo. Si hay algún accidente, no seré responsable.
Por supuesto, lo anterior no se puede llamar marcos CSS, tal vez solo se pueda llamar una solución a nivel de sistema. Después de todo, CSS es solo un lenguaje descriptivo.
Anoche estaba comiendo pato asado con Yueying, hablamos sobre esto y me preguntó si tenía una solución frontal integrada. Se enfrentará el mismo problema cuando JS esté componenteizado, y mecanismos de publicación similares también deberían ser aplicables a JS. Pero todavía no he pensado en una solución completamente integrada. Tal vez Yueying me invite a comer pato asado unas cuantas veces más y pueda resolverlo.