可以在客户端使用require()
(或类似的东西)吗?
示例
var myClass = require('./js/myclass.js');
发布于 2011-03-02 22:01:44
您应该在require.js或head.js中查找这一点。
发布于 2011-08-05 22:19:52
我一直在用browserify做这件事。它还允许我将Node.js模块集成到客户端代码中。
我在这里写了博客:Add node.js/CommonJS style require() to client-side JavaScript with browserify
发布于 2011-12-16 23:32:51
如果你想拥有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;
}());
注意:这段代码可以工作,但并不完整(特别是url解析),并且没有实现所有的Node.js特性(我昨晚才把它放在一起)。你不应该在真实的应用程序中使用这个代码,但是它给了你一个起点。我用这个简单的模块对它进行了测试,它可以工作:
function hello() {
console.log('Hello world!');
}
exports.hello = hello;
https://stackoverflow.com/questions/5168451
复制相似问题