Ari*_*deh 4 commonjs node.js requirejs
我的第一个问题是:谁负责处理requireNodejs应用程序中的语句?是Node本身吗?还是CommonJS?还是RequireJS?CommonJS是否包含在Node中?RequireJS怎么样?
现在我的第二个问题:
我有一个if-else语句,它决定我们是在服务器端还是客户端渲染.我想在客户端或服务器端渲染时加载不同的库.是否可以在运行时加载模块?恰好在它需要的那一刻?
if (typeof window === undefined){
var serverSideLibrary = require('A');
//....
}else{
var clientSideLibrary = require('B');
}
Run Code Online (Sandbox Code Playgroud)
看起来Node在启动应用程序之前加载了所需的所有内容.因此,如果您在代码顶部或if-else块中需要它,那么这一点并不重要.
在Node.js中,Node本身处理require.你错了 - require在计划的评估到达之前,不会对其进行评估.如果你有这个代码:
var mod;
setInterval(function() {
if (true) {
mod = require("a");
} else {
mod = require("b");
}
}, 5000);
Run Code Online (Sandbox Code Playgroud)
...您可以确定两件事:1.b永远不会加载模块,并且2.模块a将在五秒钟后才会加载.
在浏览器中,require仅在使用定义它的库时才定义,例如RequireJS,Browserify或Webpack.通常,这些工具保持接近Node的行为:虽然浏览器可能会立即下载所有代码(特别是如果您有一个构建步骤将所有模块放入一个文件中),它们会将每个模块包装在一个函数中直到required 为止它才会被实际评估.
如果你想根据你的代码是在客户端还是在服务器上运行来加载不同的模块,我建议你在构建步骤中执行此操作 - 大多数构建工具(如上所述)具有此功能,或者它可以作为插件使用 - 而不仅仅是一个if声明,因为if声明你仍在制作浏览器下载代码,它永远不会使用.
| 归档时间: |
|
| 查看次数: |
2327 次 |
| 最近记录: |