我已经研究了CommonJs、AMD、模块加载和相关问题一个多星期。我感觉似乎没有一样东西可以满足我的需求。我的基本需求是在前端和后端之间无缝共享代码。这方面有各种问题,包括客户端的模块格式、脚本加载和模块格式转换/包装等。我最近一直在苦恼的是如何在node.js中同时使用CommonJS和AMD(或类似AMD的东西)。
理想情况下:
在node.js中,你无法回避commonJs,所以我的想法是,如果我想使用AMD,它必须与commonJs共同工作。我可以使用什么工具、库或技术来使类似AMD的东西正常工作呢?
例如,我想编写这样一个模块:
var x = require('x')
modules.exports = function(a, callback) {
if(a) {
require(['y','z'], function(y,z) {
callback(x, y.o + z.k)
}
} else {
callback(x, "ok")
}
}
理想情况下:
- 无论是node.js还是类似amd的模块,在解析路径时都遵循node.js的方式(除非模块路径以"/"、"./"或"../"开头,这时会关注node_modules)
- 服务器端无需在构建步骤中进行源代码转换(也就是说,模块可以在node.js中运行,而不需要每个模块都进行编程式转换)
module
或require
不需要显式传递到类似amd的require函数中