我认为我们正在做同样的事情。
我们取得了一些成功。我们有库(我们称之为“slib”),编译为 AMD js 文件。它不依赖于npm模块或浏览器,因此可以从节点和浏览器调用。
1) 要从节点调用它,我们使用 requirejs:
文件 require.conf.js
module.exports = function(nodeRequire){
global.requirejs = require('requirejs');
requirejs.config({
baseUrl: __dirname+"/../web/slib/",
paths: {
slib: "."
},
nodeRequire: nodeRequire
});
}
在任何其他服务器端(nodejs)文件中,我们在开头添加这一行
require("./require.conf")(require);
然后我们调用slib的代码:
var Computation = requirejs("slib/Computation");
2) 要从浏览器调用 slib,我们只需要使用 requirejs。它处理一切都很好。
3) 我们不需要直接从
看来你可以使用 browserfy 让一些 npm 模块可以从 slib 的代码中访问,但我们还没有尝试过。
另外,我认为在 node 端使用 requirejs 可以更简单(为什么我们需要第二个 'requirejs' 函数和 node 的函数?)我们只是没有很好地研究它,但这很有效。
在任何 slib 模块中你都可以写
if (window)
window.module1 = this // or whatever
它会在加载时导出为旧的 js lib