He creado un módulo de nodo que es básicamente solo un JS útil que también se puede usar desde el lado del cliente. Sé que require.js puede cargar componentes de common.js, pero no necesariamente quiero hacer un mandato que todos los que usan mi módulo de cliente necesiten también, common.js o algo así. Tampoco quiero obligarlos a eliminar el module.exports = ...
en la parte inferior del archivo. ¿Cómo otros resuelven este problema? ¿Simplemente creas 2 versiones, o 2 versiones "compiladas"? ¿Module.exports funciona en todos lados?module.exports client side
18
A
Respuesta
16
Esto es lo que hace underscore.js:
if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = _;
}
exports._ = _;
} else {
root['_'] = _;
}
4
Esto ha funcionado para mí (CoffeeScript). Suponga 'Espacio de nombres' es lo que quiere reclamar en el ámbito window
para el cliente
(module ? {}).exports = @Namespace =
my: 'cool'
module: '!'
continuación, puede utilizar require('namespace').my === 'cool'
en Node.js o Namespace.my === 'cool'
en el navegador. Esto se traduce en JS como
(typeof module !== "undefined" && module !== null ? module : {}).exports = this.Namespace = {
my: 'cool',
module: '!'
};
1
Me parece más simple:
try {
module.exports = exports = MyModule;
} catch (e) {}
Este archivo se puede incluir tanto en el navegador y node.js.
Cuestiones relacionadas
- 1. Mongodb client side javascript api
- 2. Hybrid server-side-java y client-side-javascript charting library?
- 3. Cualquier sitio grande que use Client Side XSLT?
- 4. Side-Side ClickOnce Instalaciones
- 5. Node.js module.exports en CoffeeScript
- 6. Colocando 3 div's Side by Side
- 7. Obtener module.exports desde dentro del mismo archivo
- 8. C++ Server-Side-Scripting
- 9. Objective-c Server Side
- 10. HowTo Unit Client Client Code
- 11. Python server side AJAX library?
- 12. Server Side Javascript: ¿Por qué?
- 13. C# optimizations and side effects
- 14. Invalidando ASP.NET FormsAuthentication server side
- 15. Side effect - ¿Qué es esto?
- 16. Server Client envía/recibe texto simple
- 17. El objeto Node.js no es una función - module.exports
- 18. Dependency Walker Error: la información de configuración Side-by-Side para "ABC.DLL" contiene errores
- 19. Error: La información de configuración Side-by-Side en "BLAH.EXE" contiene errores
- 20. Error de configuración Side-by-Side para compilación de depuración de 64 bits en VS2008
- 21. Server-side ASP.Net Ajax manejo de excepciones
- 22. twist perspective broker server side delay
- 23. Server Side API para aplicaciones móviles
- 24. WCF Service Client Lifetime
- 25. Jersey Client + set proxy
- 26. Microsoft SQL Browser Client
- 27. C# REST API Client
- 28. lua socket client
- 29. HTTPS utilizando Jersey Client
- 30. Good Client Socket Pool
La mejor exposición sobre este tema que conozco es http://www.2ality.com/2011/11/module-gap.html. El autor analiza las ventajas/desventajas y los modos de desarrollo/despliegue. –