Deb*_*dux 81 javascript node.js
是否可以require()在客户端使用(或类似的东西)?
例
var myClass = require('./js/myclass.js');
Run Code Online (Sandbox Code Playgroud)
And*_*are 41
你应该看看require.js或head.js这一点.
小智 22
我一直在使用browserify.它还允许我将Node.js模块集成到我的客户端代码中.
我在这里写博客:使用browserify将node.js/CommonJS样式require()添加到客户端JavaScript
Ren*_*nck 14
如果你想拥有Node.js风格,require你可以使用这样的东西:
var require = (function () {
var cache = {};
function loadScript(url) {
var xhr = new XMLHttpRequest(),
fnBody;
xhr.open('get', url, false);
xhr.send();
if (xhr.status === 200 && xhr.getResponseHeader('Content-Type') === 'application/x-javascript') {
fnBody = 'var exports = {};\n' + xhr.responseText + '\nreturn exports;';
cache[url] = (new Function(fnBody)).call({});
}
}
function resolve(module) {
//TODO resolve urls
return module;
}
function require(module) {
var url = resolve(module);
if (!Object.prototype.hasOwnProperty.call(cache, url)) {
loadScript(url);
}
return cache[url];
}
require.cache = cache;
require.resolve = resolve;
return require;
}());
Run Code Online (Sandbox Code Playgroud)
注意:这段代码有效,但不完整(特别是url解析),并没有实现所有Node.js功能(我昨晚把它放在一起). 你不应该在真正的应用程序中使用这个代码,但它为你提供了一个起点.我用这个简单的模块测试它,它的工作原理:
function hello() {
console.log('Hello world!');
}
exports.hello = hello;
Run Code Online (Sandbox Code Playgroud)
ser*_*rby 12
我问自己同样的问题.当我调查它时,我发现选择压倒性的.
幸运的是,我找到了这个优秀的电子表格,可以帮助您根据自己的要求选择最好的装载机:
https://spreadsheets.google.com/lv?key=tDdcrv9wNQRCNCRCflWxhYQ
我发现通常建议在编译时预处理脚本并将它们捆绑在一个(或很少)包中,require并在编译时将其重写为一些"轻量级填充程序".
我已经使用了应该能够执行此操作的"新"工具
已经提到的browserify也应该很合适 - http://esa-matti.suuronen.org/blog/2013/04/15/asynchronous-module-loading-with-browserify/
旧堆栈溢出解释 - CommonJS,AMD和RequireJS之间的关系?
各种模块框架及其require()需要的详细讨论在Addy Osmani中 - 用AMD编写模块化JavaScript,CommonJS和ES Harmony
| 归档时间: |
|
| 查看次数: |
124722 次 |
| 最近记录: |