He estado confiando mucho en CSS para un sitio web en el que estoy trabajando. En este momento, todos los estilos CSS se están aplicando por etiqueta, por lo que ahora estoy tratando de moverlo a un estilo más externo para ayudar con cualquier cambio futuro.
Pero ahora el problema es que he notado que recibo una "Explosión CSS". Me resulta difícil decidir cómo organizar mejor y resumir datos dentro del archivo CSS.
Estoy usando una gran cantidad de div
etiquetas dentro del sitio web, pasando de un sitio web basado en tablas. Así que obtengo muchos selectores CSS que se ven así:
div.title {
background-color: blue;
color: white;
text-align: center;
}
div.footer {
/* Styles Here */
}
div.body {
/* Styles Here */
}
/* And many more */
Todavía no está tan mal, pero como soy un principiante, me preguntaba si se podrían hacer recomendaciones sobre la mejor manera de organizar las diversas partes de un archivo CSS. No quiero tener un atributo CSS separado para cada elemento en mi sitio web, y siempre quiero que el archivo CSS sea bastante intuitivo y fácil de leer.
Mi objetivo final es facilitar el uso de los archivos CSS y demostrar su poder para aumentar la velocidad del desarrollo web. De esta manera, otras personas que puedan trabajar en este sitio en el futuro también se acostumbrarán a usar buenas prácticas de codificación, en lugar de tener que aprenderlo como yo lo hice.
fuente
simplicity
,complexity
,maintenance
,structure
yrefactoring
.Respuestas:
Esta es una muy buena pregunta. Dondequiera que miro, los archivos CSS tienden a perder el control después de un tiempo, especialmente, pero no solo, cuando se trabaja en equipo.
Las siguientes son las reglas a las que estoy tratando de cumplir (no es que siempre me las arreglo).
Refactorizar temprano, refactorizar a menudo. Limpie con frecuencia los archivos CSS, fusione varias definiciones de la misma clase. Eliminar definiciones obsoletas de inmediato .
Al agregar CSS durante la corrección de errores, deje un comentario sobre lo que hace el cambio ("Esto es para asegurarse de que el cuadro quede alineado en IE <7")
Evite las redundancias, por ejemplo, definir lo mismo en
.classname
y.classname:hover
.Use comentarios
/** Head **/
para construir una estructura clara.Use una herramienta de prettifier que ayuda a mantener un estilo constante. Uso Polystyle , con lo que estoy bastante contento (cuesta $ 15 pero es dinero bien gastado). También hay otros gratuitos (por ejemplo, Code Beautifier basado en CSS Tidy , una herramienta de código abierto).
Construye clases sensatas. Vea a continuación algunas notas sobre esto.
Use semántica, evite la sopa DIV; use
<ul>
s para menús, por ejemplo.Defina todo en el nivel más bajo posible (por ejemplo, una familia de fuentes, color y tamaño predeterminados en el
body
) y utilíceloinherit
siempre que sea posibleSi tiene CSS muy complejo, tal vez un precompilador CSS ayude. Estoy planeando investigar xCSS por la misma razón pronto. Hay varios otros alrededor.
Si trabaja en equipo, resalte la necesidad de calidad y estándares para los archivos CSS también. Todos son grandes en los estándares de codificación en sus lenguajes de programación, pero hay poca conciencia de que esto también es necesario para CSS.
Al trabajar en un equipo, no considerar el uso de control de versiones. Hace que las cosas sean mucho más fáciles de rastrear, y la edición de conflictos es mucho más fácil de resolver. Realmente vale la pena, incluso si eres "justo" en HTML y CSS.
No trabajes con
!important
. No solo porque IE = <7 no puede manejarlo. En una estructura compleja, el uso de a!important
menudo es tentador para cambiar un comportamiento cuya fuente no se puede encontrar, pero es un veneno para el mantenimiento a largo plazo.Construyendo clases sensatas
Así es como me gusta construir clases sensatas.
Aplico primero la configuración global:
Luego, identifico las secciones principales del diseño de la página, por ejemplo, el área superior, el menú, el contenido y el pie de página. Si escribí un buen marcado, estas áreas serán idénticas a la estructura HTML.
Luego, comienzo a construir clases CSS, especificando la mayor cantidad de ascendencia posible, siempre que sea razonable, y agrupando las clases relacionadas lo más cerca posible.
Piense en toda la estructura CSS como un árbol con definiciones cada vez más específicas cuanto más lejos esté de la raíz. Desea mantener el número de clases lo más bajo posible y desea repetirse tan pocas veces como sea posible.
Por ejemplo, supongamos que tiene tres niveles de menús de navegación. Estos tres menús se ven diferentes, pero también comparten ciertas características. Por ejemplo, son todos
<ul>
, tienen el mismo tamaño de fuente y los elementos están uno al lado del otro (en oposición a la representación predeterminada de unul
). Además, ninguno de los menús tiene viñetas (list-style-type
).Primero, defina las características comunes en una clase llamada
menu
:luego, defina las características específicas de cada uno de los tres menús. El nivel 1 tiene 40 píxeles de altura; niveles 2 y 3, 20 píxeles.
Nota: también puede usar varias clases para esto, pero Internet Explorer 6 tiene problemas con varias clases , por lo que este ejemplo usa
id
s.El marcado del menú se verá así:
Si tiene elementos semánticamente similares en la página, como estos tres menús, primero trate de resolver los puntos en común y colóquelos en una clase; luego, calcule las propiedades específicas y aplíquelas a las clases o, si tiene que admitir Internet Explorer 6, los ID.
Consejos HTML diversos
Si es posible, asigne una clase única al cuerpo de cada página:
<body class='contactpage'>
esto hace que sea muy fácil agregar ajustes específicos de la página a la hoja de estilo:Al crear menús automáticamente, agregue la mayor cantidad de contexto CSS posible para permitir un estilo extenso más adelante. Por ejemplo:
De esta forma, se puede acceder a cada elemento del menú para diseñar de acuerdo con su contexto semántico: ya sea el primer o el último elemento de la lista; Si es el elemento actualmente activo; y por numero.
fuente
font-weight: bold
allí .... disciplina es la única medicina :)id
pero seguro que suena como uno. Tal vez el concepto podría aclararse?id
también.Aquí hay solo 4 ejemplos:
En los 4 mi respuesta ha incluido el consejo de descargar y leer los sistemas CSS CSS de Natalie Downe . (El PDF incluye toneladas de notas que no están en las diapositivas, ¡así que lea el PDF!). Tome nota de sus sugerencias para la organización.
EDIT (05/02/2014) cuatro años después, diría:
fuente
No escriba encabezados en CSS
Solo divide las secciones en archivos. Cualquier comentario CSS, debería ser solo eso, comentarios.
Use un guión para combinarlos en uno; si necesario. Incluso puede tener una buena estructura de directorios, y simplemente hacer que su script escanee de forma recursiva en busca de
.css
archivos.Si debe escribir encabezados, tenga una tabla de contenido al comienzo del archivo
Los encabezados en la tabla de contenido deben ser perfectamente iguales a los encabezados que escriba más adelante. Es un dolor buscar encabezados. Para agregar al problema, ¿cómo exactamente se supone que alguien sabe que tiene otro encabezado después de su primer encabezado? PD. no agregue doc-like * (estrella) al comienzo de cada línea cuando escriba TOC, solo hace que sea más molesto seleccionar el texto.
Escriba comentarios con o dentro de las reglas, no fuera del bloque
En primer lugar, cuando edita el script hay una posibilidad de 50/50 de que preste atención a lo que está fuera del bloque de reglas (particularmente si es una gran cantidad de texto;)). En segundo lugar, no hay (casi) ningún caso en el que necesite un "comentario" afuera. Si está afuera, es el 99% del tiempo un título, así que manténgalo así.
Dividir la página en componentes.
Los componentes deberían tener
position:relative
, nopadding
y nomargin
, la mayor parte del tiempo. Esto simplifica% gobierna mucho, así como lo que permite mucho más simpleabsolute:position
'ing de elementos, ya que si hay un recipiente posicionado absoluto el elemento posicionado absoluto utilizará el contenedor cuando se calculatop
,right
,bottom
,left
propiedades.La mayoría de los DIV en un documento HTML5 suelen ser un componente.
Un componente también es algo que puede considerarse una unidad independiente en la página. En términos simples, tratar algo como un componente si tiene sentido tratar algo como una caja negra .
Yendo con el ejemplo de la página QA nuevamente:
Al dividir la página en componentes, divide su trabajo en unidades manejables.
Ponga reglas con un efecto acumulativo en la misma línea.
Por ejemplo
border
,margin
ypadding
(pero nooutline
) todos se suman a las dimensiones y el tamaño del elemento que está diseñando.Si simplemente no son tan legibles en una línea, al menos colóquelos cerca:
Use la taquigrafía cuando sea posible:
Nunca repitas un selector
Si tiene más instancias del mismo selector, hay una buena posibilidad de que inevitablemente termine con varias instancias de las mismas reglas. Por ejemplo:
Evite usar TAG como selectores, cuando puede usar id / classes
En primer lugar, las etiquetas DIV y SPAN son la excepción: ¡nunca debe usarlas, nunca! ;) Úselos solo para adjuntar una clase / id.
Esta...
Debería escribirse así:
Debido a que los DIV colgantes adicionales no agregan nada al selector. También fuerzan una regla de etiqueta innecesaria. Si tuviera que cambiar, por ejemplo,
.answer
de adiv
a a,article
su estilo se rompería.O si prefieres más claridad:
La razón es que la
border-collapse
propiedad es una propiedad especial que solo tiene sentido cuando se aplica a atable
. Si.statistics
no es un,table
no debería aplicarse.¡Las reglas genéricas son malas!
No te ahorran tiempo, hacen explotar tu cabeza; así como hacer que el mantenimiento sea una pesadilla. Cuando esté escribiendo la regla, es posible que sepa dónde se aplican, sin embargo, eso no garantiza que su regla no lo moleste más adelante.
Para agregar a esto, las reglas genéricas son confusas y difíciles de leer, incluso si tiene alguna idea del documento que está diseñando. Esto no quiere decir que no deba escribir reglas genéricas, simplemente no las use a menos que realmente tenga la intención de que sean genéricas, e incluso que agreguen tanta información de alcance en el selector como sea posible.
Cosas como esta...
... tiene el mismo problema que usar variables globales en un lenguaje de programación. ¡Tienes que darles alcance!
Básicamente eso se lee como:
Me gusta usar ID cuando un componente que conozco es un singleton en una página; Sus necesidades pueden ser diferentes.
Nota: Idealmente, debería escribir lo suficiente. Sin embargo, mencionar más componentes en el selector es el error más indulgente, en comparación con mencionar menos componentes.
Supongamos que tiene un
pagination
componente. Lo usas en muchos lugares de tu sitio. Este sería un buen ejemplo de cuándo escribiría una regla genérica. Digamosdisplay:block
los enlaces de los números de página individuales y proporcione un fondo gris oscuro. Para que sean visibles, debes tener reglas como esta:Ahora digamos que usa su paginación para una lista de respuestas, puede encontrar algo como esto
Esto hará que tus enlaces blancos sean negros, lo que no quieres.
La forma incorrecta de solucionarlo es:
La forma correcta de solucionarlo es:
Los comentarios "lógicos" complejos no funcionan :)
Si escribe algo como: "este valor depende de bla-bla combinado con la altura de bla-bla", es inevitable que cometa un error y todo se caerá como un castillo de naipes.
Mantenga sus comentarios simples; si necesita "operaciones lógicas", considere uno de esos lenguajes de plantillas CSS como SASS o LESS .
¿Cómo se escribe una paleta de colores?
Deja esto para el final. Tenga un archivo para toda su paleta de colores. Sin este archivo, su estilo aún debería tener una paleta de colores utilizable en las reglas. Su paleta de colores debe sobrescribir. Encadena selectores utilizando un componente principal de muy alto nivel (p. Ej.
#page
) Y luego escribe su estilo como un bloque de reglas autosuficiente. Puede ser solo color o algo más.p.ej.
La idea es simple, su paleta de colores es una hoja de estilo independiente del estilo base, en el que se conecta en cascada .
Menos nombres, requiere menos memoria, lo que hace que el código sea más fácil de leer
Usar menos nombres es mejor. Idealmente use palabras muy simples (¡y cortas!): Texto, cuerpo, encabezado.
También encuentro que la combinación de palabras simples es más fácil de entender que tener una sopa de palabras largas "apropiadas": postbody, posthead, userinfo, etc.
Mantenga el vocabulario pequeño, de esta manera, incluso si algún extraño que viene a leer su sopa de estilo (como usted después de algunas semanas;)) solo necesita entender dónde se usan las palabras en lugar de donde se usa cada selector. Por ejemplo, lo uso
.this
siempre que un elemento supuestamente sea "el elemento seleccionado" o "el elemento actual", etc.Limpia después de ti
Escribir CSS es como comer, a veces dejas un desastre. Asegúrate de limpiar ese desastre, o el código de basura simplemente se acumulará. Elimina las clases / identificadores que no uses. Elimina las reglas CSS que no uses. Asegúrese de que todo esté bien y que no tenga reglas en conflicto o duplicadas.
Si, como sugerí, trató algunos contenedores como cajas negras (componentes) en su estilo, usó esos componentes en sus selectores y guardó todo en un archivo dedicado (o dividió adecuadamente un archivo con un TOC y encabezados), entonces su el trabajo es sustancialmente más fácil ...
Puede usar una herramienta como la extensión Dust-Me Selectores de firefox (consejo: apúntelo a su sitemap.xml) para ayudarlo a encontrar parte de la basura oculta en sus armas nucleares y carnies css.
Mantener un
unsorted.css
archivoSupongamos que está diseñando un sitio de control de calidad y que ya tiene una hoja de estilo para la "página de respuestas", a la que llamaremos
answers.css
. Si ahora necesita agregar una gran cantidad de CSS nuevo, agréguelo a launsorted.css
hoja de estilo y luego refactorice en suanswers.css
hoja de estilo.Varias razones para esto:
fuente
Echa un vistazo a 1. SASS 2. Brújula
fuente
La mejor manera que he visto para contrarrestar la
CSS
hinchazón es utilizando los principios CSS orientados a objetos.Incluso hay un marco OOCSS que es bastante bueno.
Algunas de las ideologías van en contra de mucho de lo que se ha dicho aquí en las respuestas principales, pero una vez que sepa cómo
CSS
diseñar de manera orientada a objetos, verá que realmente funciona para mantener el código magro y malo.La clave aquí es identificar 'Objetos' o patrones de bloques de construcción en su sitio y arquitecto con ellos.
Facebook contrató a la creadora de OOCSS, Nicole Sullivan para obtener muchos ahorros en su código front-end (HTML / CSS). Si en realidad se puede conseguir un ahorro no sólo en el CSS, pero en su HTML también, que por el sonido de la misma, es muy posible que usted como usted menciona la conversión de un
table
diseño basado en un montón dediv
'sOtro gran enfoque es similar en algunos aspectos a OOCSS, es planificar y escribir su CSS para que sea escalable y modular desde el principio. Jonathan Snook ha realizado una excelente redacción y libro / libro electrónico sobre SMACSS - Arquitectura escalable y modular para CSS
Déjame conectarte con algunos enlaces:
5 errores de CSS masivo - (Video)
5 errores de CSS masivo - (Diapositivas)
Bloat CSS - (Diapositivas)
fuente
También debe comprender la cascada, el peso y cómo funcionan.
Noto que está utilizando solo identificadores de clase (div.title). ¿Sabía que también puede usar identificaciones y que una identificación tiene más peso que una clase?
Por ejemplo,
hará que todos esos elementos compartan un tamaño de fuente, digamos, o un color, o cualesquiera que sean sus reglas. Incluso puede hacer que todas las DIV que son descendientes de # page1 obtengan ciertas reglas.
En cuanto al peso, recuerde que los ejes CSS se mueven del más general / más ligero al más específico / más pesado. Es decir, en un selector CSS, un especificador de elemento anula un especificador de clase y un especificador de ID anula. Los números cuentan, por lo que un selector con especificadores de dos elementos (ul li) tendrá más peso que uno con un solo especificador (li).
Piense en ello como dígitos. Un 9 en la columna de las unidades sigue siendo menor que uno en la columna de las decenas. Un selector con un especificador de ID, un especificador de clase y dos de elementos tendrá más peso que un selector sin ID, 500 de clase y 1.000 de elemento. Este es un ejemplo absurdo, por supuesto, pero entiendes la idea. El punto es que aplicar este concepto te ayuda a limpiar mucho CSS.
Por cierto, no es necesario agregar el especificador de elemento a la clase (div.title) a menos que tenga conflictos con otros elementos que tienen class = "title". No agregue peso innecesario, ya que puede necesitar usar ese peso más tarde.
fuente
.myclass
, seleccionas todo con la clasemyclass
. En CSS, las clases son idénticas a los identificadores en ese sentido.¿Puedo sugerir menos marco dinámico CSS
Es similar a SASS como se mencionó anteriormente.
Ayuda a mantener CSS por clase principal.
P.ej
Lo que hace esto: aplica el ancho: 100% a # child1 y # child2.
Además, # child1 CSS específico pertenece a #parent.
Esto llevaría a
fuente
Creo que lo difícil es traducir el diseño requerido para un sitio en una serie de reglas. Si el diseño del sitio es claro y está basado en reglas, entonces los nombres de clase y la estructura CSS pueden fluir a partir de eso. Pero si las personas, con el tiempo, agregan aleatoriamente pequeños bits al sitio que no tienen mucho sentido, no hay mucho que pueda hacer al respecto en el CSS.
Tiendo a organizar mis archivos CSS más o menos así:
Restablecimiento de CSS, basado en Eric Meyer . (Porque de lo contrario, encuentro que, para la mayoría de los elementos, tengo al menos una o dos reglas que simplemente restablecen los estilos predeterminados del navegador; por ejemplo, la mayoría de mis listas no se parecen al estilo HTML predeterminado para las listas).
Sistema de rejilla CSS, si el sitio lo requiere. ( Baso el mío en 960.gs )
Estilos para componentes que aparecen en cada página (encabezados, pies de página, etc.)
Estilos para componentes que se utilizan en varios lugares del sitio.
Estilos que solo son relevantes en páginas individuales
Como puede ver, la mayor parte de eso depende del diseño del sitio. Si el diseño es claro y organizado, su CSS puede serlo. Si no, estás jodido.
fuente
Mi respuesta es de alto nivel para abordar las preocupaciones de alto nivel que ha planteado en su pregunta. Puede haber trucos y ajustes organizativos de bajo nivel que puede hacer para que sea más bonito, pero ninguno de ellos puede solucionar las deficiencias metodológicas. Hay varias cosas que afectan la explosión de CSS. Obviamente, la complejidad general del sitio, pero también cosas como la semántica de nombres, el rendimiento de CSS, la organización de archivos CSS y la capacidad de prueba / aceptabilidad.
Parece que está en el camino correcto con la semántica de nombres, pero puede ir un paso más allá. Las secciones de HTML que aparecen repetidamente en el sitio sin modificaciones estructurales (conocidas como "módulos") pueden considerarse raíces selectoras, y desde allí puede abarcar el diseño interno relativo a esa raíz. Este es el principio básico de CSS orientado a objetos , y puede leer / ver más sobre esto en esta charla de un ingeniero de Yahoo .
Es importante tener en cuenta que este enfoque limpio puede ser contrario a la preocupación por el rendimiento, lo que favorece a los selectores cortos basados en la identificación o el nombre de la etiqueta . Encontrar ese equilibrio depende de usted, pero a menos que tenga un sitio masivo, esto debería ser solo una guía en la parte posterior de su cabeza que le recuerde que debe mantener cortos sus selectores. Más sobre el rendimiento aquí .
Por último, ¿va a tener un único archivo CSS para todo su sitio o varios archivos (un único archivo base utilizado con archivos por página o por sección)? El archivo único es mejor para el rendimiento, pero puede ser más difícil de entender / mantener con varios miembros del equipo, y puede ser más difícil de probar. Para las pruebas, le recomiendo que tenga una sola página de prueba CSS que incluya todos los módulos CSS compatibles para probar colisiones y cascadas involuntarias.
Alternativamente, puede tener un enfoque de múltiples archivos , para abarcar las reglas CSS a una página o sección. Esto requiere que el navegador descargue varios archivos, lo cual es un problema de rendimiento. Puede usar la programación del lado del servidor para especificar y agregar (y minimizar) los archivos CSS en un solo archivo de forma dinámica. Pero dado que estos archivos están separados y las pruebas para ellos estarían separadas, introduce la posibilidad de una apariencia inconsistente en las páginas / secciones. Por lo tanto, las pruebas se vuelven más difíciles.
Depende de usted analizar las necesidades específicas del cliente, equilibrar estas preocupaciones en consecuencia.
fuente
Como dije antes que yo: Entra en OOCSS. Sass / Less / Compass es tentador de usar, pero hasta que se use CSS vainilla de la manera correcta, Sass / Less / Compass solo empeorará las cosas.
En primer lugar, lea sobre css eficiente. prueba Google Page Speed y lee lo que Souders ha escrito sobre css eficiente.
Luego, ingrese OOCSS.
Revolucionará cada parte de la escritura de CSS. Estoy totalmente renovado y me encanta.
ACTUALIZACIÓN: SMACSS es similar a OOCSS, pero en general es más fácil de adaptar.
fuente
Los principios básicos para CSS sensible, extraídos de la refactorización de CSS: de CSS de solo agregado a CSS modular
fuente
Muchas veces veré a personas dividir el archivo en secciones, con un comentario de encabezado entre las secciones.
Algo como
Funciona bastante bien y puede facilitarle regresar más tarde y encontrar en qué está trabajando.
fuente
Deberías mirar BEM .
Teoría
BEM es un intento de proporcionar un conjunto de instrucciones para organizar y nombrar selectores css en un intento de hacer que las cosas sean más reutilizables y modulares y para evitar enfrentamientos entre los selectores del tipo que a menudo conduce a códigos de espagueti y dolores de cabeza de especificidad.
Cuando se usa correctamente, en realidad tiene algunos efectos muy positivos.
BEM funciona bien con SASS para brindar un estilo casi orientado a objetos a CSS. Puede crear archivos modulares, que manejan la visualización de un único elemento de la IU y contienen variables, como colores y 'métodos', como la forma en que se manejan los elementos internos. Si bien un programador de OO incondicional podría rechazar esta idea, de hecho, los conceptos aplicados incorporan muchas de las partes más bonitas de las estructuras de OO, como la modularidad, el acoplamiento suelto y la cohesión ajustada y la reutilización sin contexto. Incluso puede construir de una manera que se parece a un objeto encapsulado utilizando Sass y el
&
operato r.Un artículo más detallado de la revista Smashing se puede encontrar aquí ; y uno de Harry Roberts de CCS Wizardry (de quien cualquier persona involucrada en CSS debería leer) está aquí .
En la práctica
He usado esto, varias veces, junto con haber usado SMACSS y OOCSS, lo que significa que también tengo algo para compararlos. También he trabajado en algunos grandes problemas, a menudo de mi propia creación, sin experiencia.
Cuando uso BEM en el mundo real, aumento la técnica con un par de principios adicionales. Utilizo clases de utilidad: un buen ejemplo es una clase de contenedor:
Y también confío un poco en la cascada y la especificidad. Aquí el módulo BEM sería
.primary-box
y.header
sería el contexto para una anulación específica(Intento hacer todo lo posible para que todo sea lo más genérico y libre de contexto posible, lo que significa un buen proyecto, casi todo está en los módulos que son reutilizables)
Un punto final que destacaría aquí es que, por pequeño y poco complejo que parezca su proyecto, debe hacerlo desde el principio, por dos razones:
Componentes web
En 2015 comenzamos a analizar los componentes web. Todavía no sé mucho sobre esto, pero buscan unir todas las funcionalidades de front-end en módulos autónomos, intentando efectivamente aplicar el tipo de principios de BEM al front-end como un todo y componentes dispersos pero totalmente acoplados elementos como fragmentos DOM, Js (MVC) y CSS que construyen el mismo widget de UI.
Al hacer esto, abordarán algunos de los problemas originales que existen con css que hemos tratado de resolver con cosas como BEM, mientras que en el camino hace que algunas de las otras arquitecturas front-end sean más sensatas.
Hay algunas lecturas adicionales aquí y también un polímero Framework que vale la pena echarle un vistazo.
Finalmente
También creo que esta es una excelente y moderna guía css de mejores prácticas , diseñada específicamente para evitar que los grandes proyectos css se vuelvan desordenados. Intento seguir la mayoría de estos.
fuente
Te recomendaría que mires el marco CSS "Compass Style" .
fuente
hay un gran material aquí y algunos han tomado mucho tiempo para responder esta pregunta, sin embargo, cuando se trata de hojas de estilo separadas o individuales, iría con archivos separados para el desarrollo y luego pasaría a tener todos sus CSS genéricos utilizados en la fusión fusionada. en un solo archivo cuando se implementa.
de esta manera, tiene lo mejor de ambos mundos, aumenta el rendimiento (menos solicitudes HTTP que se solicitan desde el navegador) y la separación de problemas de código durante el desarrollo.
fuente