Javascript Node.js和客户端共享相同的脚本
使用Node.js的理论好处之一是可以在客户端和服务器之间共享相同的脚本。如果客户端不支持javascript,那么就有可能将相同的功能降级到服务器 但是,Node.jsJavascript Node.js和客户端共享相同的脚本,javascript,scope,client-server,node.js,Javascript,Scope,Client Server,Node.js,使用Node.js的理论好处之一是可以在客户端和服务器之间共享相同的脚本。如果客户端不支持javascript,那么就有可能将相同的功能降级到服务器 但是,Node.jsrequire()方法可以自己工作。在您加载的脚本中,您可以将内容添加到此或导出,这些内容稍后将在获取脚本的对象中可用: var stuff = require('stuff'); stuff.show(); 在stuff.js中: this.show = function() { return 'here is my
require()
方法可以自己工作。在您加载的脚本中,您可以将内容添加到此
或导出
,这些内容稍后将在获取脚本的对象中可用:
var stuff = require('stuff');
stuff.show();
在stuff.js中:
this.show = function() {
return 'here is my stuff';
}
var ns = typeof exports == 'undefined' ? (function() {
return window['stuff'] = {};
})() : exports;
ns.show = function() {
return 'here is my stuff';
}
delete ns; // remove ns from the global scope
因此,在客户端上重新使用此脚本时,.show()
方法将添加到窗口
范围中。这不是我们在这里想要的,相反,我们希望将其添加到自定义名称空间中
到目前为止,我唯一的解决方案是(在stuff.js中):
这非常有效,因为我可以在服务器和客户端上调用
stuff.show()
。但它看起来很奇怪。我尝试搜索解决方案,但node.js仍然非常新(即使对我来说也是如此),因此几乎没有可靠的资源。有人对如何解决这个问题有更好的想法吗?简而言之,如果你想重复使用脚本,不要使用Node.js特定的东西,你必须使用最低的公分母,浏览器
解决办法是:
这个
我希望我能给你一个简单的开箱即用的解决方案,但在这种情况下,两种环境都有很大的不同。如果你真的有大量的代码,你可以考虑一个生成文件的构建脚本。你可以只写你自己的<>代码>需要/<代码>函数,并把它作为一个脚本加载到浏览器中,它的运行方式与它在NoDE上的方式完全一样。你必须下载脚本来完成这项工作,这需要花费相当长的时间并阻止其他内容。