No hace mucho, un internautor me preguntó sobre el uso de necesidades y mares en el front-end. Le pregunté si su empresa tenía una biblioteca JavaScript o un marco JavaScript escrito por sí mismo antes. Su respuesta no fue nada. Acaba de escuchar que las necesidades y los mares son cosas nuevas y nuevas tecnologías, que son muy valiosas, por lo que quería usarlo.
El problema de este internautor me hizo pensar en la tecnología de carga del módulo JavaScript. En el último artículo, di la estructura básica de una biblioteca JavaScript que escribí. De hecho, una de las razones para escribir este artículo es que quiero usar tecnología como RequestJ o SEAJS para rediseñar el modelo básico de mi biblioteca JavaScript. Después de conocer esta tecnología en profundidad, descubrí que usar el sistema de carga del módulo para resolver el problema de desacoplar el código común y el código de negocio en la biblioteca JavaScript es incorrecto. El alcance del sistema de carga del módulo es resolver el problema de dependencia entre las diferentes bibliotecas de JavaScript, en lugar de ayudarlo a desarrollar una biblioteca JavaScript.
Entonces, ¿qué es un sistema de carga del módulo JavaScript?
El sistema del módulo se utiliza principalmente para resolver el problema de conflicto de nombres de los objetos de operación en diferentes bibliotecas de JavaScript y el problema de dependencia entre diferentes bibliotecas de JavaScript. El sistema de carga del módulo está dirigido a grandes aplicaciones web front-end o aplicaciones gigantes de front-end web.
En general, en las páginas de aplicaciones de front-end web gigantes, la página tiene funciones muy ricas y negocios complejos. Además, a medida que pasa el tiempo, las funciones de la página a menudo cambian, lo que lleva a los desarrolladores front-end que a menudo desarrollan módulos funcionales para nuevas funciones. Sin embargo, las funciones entre varios módulos funcionales en el negocio real también pueden penetrar entre sí, depender entre sí y tener relaciones complejas. Cuando la página es compleja, la relación entre cada biblioteca frontal será difícil de administrar y controlar, y el sistema de carga del módulo será útil en este momento.
Para la mayoría de los programadores, no hay muchas oportunidades para soportar independientemente una aplicación de front-end web tan grande, y hay muchas oportunidades para desarrollar aplicaciones web pequeñas y medianas. Por ejemplo, proyectos web de nivel empresarial, hay muy pocos tipos de bibliotecas JavaScript utilizadas en dichos proyectos, y las dependencias de cada biblioteca son fáciles de controlar, por lo que no es necesario introducir ningún sistema de gestión de módulos. Incluso las páginas web de muchas compañías de Internet pequeñas y medianas probablemente no sean tan complicadas como las de los front-end de las aplicaciones web de nivel empresarial, por lo que la relación entre sus módulos o bibliotecas de JavaScript es fácil de administrar. De hecho, las aplicaciones pequeñas y medianas anteriores son todas para escenarios ciertos o específicos. Por lo tanto, personalmente creo que ante tales proyectos de front-end web, finalmente podemos formar una biblioteca independiente de JavaScript. Las características de esta biblioteca deben ser similares a las de un tipo de biblioteca: una biblioteca principal más varias bibliotecas enchufables. El propósito de la biblioteca principal es resolver el problema de generalidad, y debe ser reutilizable y migrado. El propósito de la biblioteca de complementos a menudo está relacionado con el código de negocio. Sin embargo, para distinguir el alcance de la biblioteca principal y la biblioteca de complemento, agregué la función de espacio de nombres a la biblioteca.
La tecnología de carga del módulo JavaScript y la tecnología Hadoop tienen algunas similitudes, es decir, ambas son tecnologías para sistemas súper grandes, y solo pueden desempeñar su papel en ciertas condiciones. Por lo tanto, estas tecnologías se lanzan desde grandes compañías de Internet, porque las grandes compañías de Internet deben resolver problemas después de que sus aplicaciones se vuelvan más grandes y más complejas. Cuando su sistema todavía está en su infancia, a menudo debe tener cuidado al usar estas tecnologías. Deberíamos encontrar la forma más simple y efectiva de resolver nuestros problemas reales. Si cree que este sistema se hará más grande en el futuro, entonces debe retener la interfaz para usar estas tecnologías en el futuro. Si se usa demasiado temprano, es muy probable que cuando la escala del sistema se expande, el costo de refactorizar su código será mayor.
Para los sistemas de carga de módulos, el escenario más adecuado es resolver el problema del desacoplamiento entre los grandes módulos de aplicación de front-end web. Si solo escribimos un nuevo archivo JavaScript y usamos la tecnología de carga del módulo de inmediato, esto no es un poco de tecnología de abuso. Antes de usar una determinada tecnología, no solo debemos considerar cómo usarla o cómo se usa, sino que también debemos pensar si es valioso usarla.
Finalmente, quiero decir que creo que se utilizan pequeños y medianos front-end se utilizan para la implementación de producción. Debido a que JavaScript no es el más complejo, es mejor empaquetar todos los archivos de JavaScript externos en un archivo externo de JavaScript. Esta ventaja es que reduce el número de solicitudes HTTP. El uso de la tecnología de carga de módulos hará que sea muy problemático empacar archivos, e incluso no se puede hacer (módulos como RequestJS y SEAJS se basan en archivos, y cada módulo es un archivo independiente), lo que es contrario a resolver el propósito de reducir HTTP.