w3schools property img attribute javascript node.js commonjs

javascript - property - ¿Cómo requerir módulos CommonJS en el navegador?



title label html (6)

¿Cuál es la mejor manera de cargar módulos CommonJS como javascript del lado del cliente en el navegador?

Los módulos CommonJS ponen su funcionalidad en el espacio de nombres module.exports y generalmente se incluyen usando require(pathToModule) en un script del lado del servidor. Cargarlos en el cliente no puede funcionar de la misma manera (requiere que se reemplacen, se debe tener en cuenta la asincronía, etc.)

He encontrado cargadores de módulos y otras soluciones: Browserify, RequireJS, yabble, etc. o formas de simplemente modificar los módulos. ¿Cuál considera que es la mejor manera y por qué?


¿Qué hay de browserify ? Su descripción es: "Browser-side require () para sus módulos de nodo y paquetes npm" que suena como lo que necesita.



CommonJS Compiler https://github.com/dsheiko/cjsc ¿Por qué? Funciona bien con nodejs (CommonJs) modules / treat module exactamente como nodejs / y con UMD, trae un código extra mínimo para el JavaScript compilado, permite exportar archivos globales de bibliotecas de terceros sin tocar su código, mapas fuente y un truco que otros no pueden hacer :

var str = require( "lorem-ipsum.txt" ); console.log( str );

Salida:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi...

Aquí las diapositivas https://speakerdeck.com/dsheiko/modular-javascript-with-commonjs-compiler


He utilizado requirejs extensivamente en el pasado (implementación en BBC iPlayer en 2010) y funciona bien. Puede manejar módulos CommonJS, pero necesita un contenedor adicional, que me parece molesto. Si también desea usar esos módulos en node.js, necesita usar requirejs también del lado del servidor, lo que no me gusta hacer ya que no es idiomatic node.js JavaScript.

He usado webmake y browserify el año pasado en algunos proyectos. Inicialmente, el paso de compilación me desalentó, pero después de haberlo usado extensamente este año, puedo decir que esto no es un problema.

Browserify tiene una función de reloj incluida, que funciona muy bien. Webmake se puede conectar a un observador (como watchr ) o, puede utilizar el módulo webmake-middleware , que se puede utilizar como parte de una aplicación express o connect. Esto tiene la ventaja de que en lugar de compilar el JavaScript en cada guardado, solo se compila cuando realmente lo solicita. Connect hace que sea trivial crear un servidor (también estático), por lo que podría crear un pequeño servidor estático node.js para servir sus archivos si desea desarrollar su interfaz sin un back-end.

Bonificación: no es necesario un script de compilación ya que siempre se ocupa del código creado.


No puedo decir que probé las otras que mencionaste aquí, pero me gusta RequireJS porque:

  • Funciona de manera similar a CommonJS
  • Es fácil de usar
  • Implementa algunos de los próximos estándares nuevos
  • Puede usarlo en NodeJS para que pueda usar los mismos archivos en el servidor y el cliente
  • Incluye un minificador / empacador para implementar en la producción
  • Tiene complementos. El complemento de texto, que le permite cargar archivos HTML, es muy útil para aplicaciones grandes.

webmake es una de las opciones. Lo uso para empacar aplicaciones compiladas a partir de más de 200 módulos de más de 20 paquetes. Funciona.

Si desea ver algún ejemplo, consulte: SoundCloud Playlist Manager , es estrictamente del lado del cliente y creado con Webmake.