一个多星期以来,我一直在研究 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函数