我如何在Node.js和浏览器之间共享代码?
我正在用一个JavaScript客户端(在浏览器中运行)和一个Node.js服务器创建一个小应用程序,使用WebSocket进行通信。
我想分享客户端和服务器之间的代码。 我刚刚开始使用Node.js,至少可以说,我对现代JavaScript的了解有点生疏。 所以我仍然对CommonJS require()函数有所了解。 如果我使用'export'对象创建我的包,那么我看不到我如何在浏览器中使用相同的JavaScript文件。
我想要创建一组方法和两端使用的类,以便于编码和解码消息以及其他镜像任务。 但是,Node.js / CommonJS打包系统似乎无法创建可在两侧使用的JavaScript文件。
我也尝试使用JS.Class来获得更紧密的OO模型,但是我放弃了,因为我无法弄清楚如何让提供的JavaScript文件与require()一起工作。 我在这里错过了什么吗?
如果你想编写既可以采用客户端和服务器端的模块,我有一个快速简便的方法很短的博客文章:写作的Node.js和浏览器,实质上包含以下(其中, this
是一样的window
):
(function(exports){
// Your code goes here
exports.test = function(){
return 'hello world'
};
})(typeof exports === 'undefined'? this['mymodule']={}: exports);
另外还有一些项目旨在在客户端实现Node.js API,例如Marak的双子座。
您可能也对DNode感兴趣,它允许您公开一个JavaScript函数,以便可以使用简单的基于JSON的网络协议从另一台机器调用它。
Epeli在这里http://epeli.github.com/piler/有一个很好的解决方案,即使没有库,也可以将它放在一个名为share.js的文件中
(function(exports){
exports.test = function(){
return 'This is a function from shared module';
};
}(typeof exports === 'undefined' ? this.share = {} : exports));
在服务器端只需使用:
var share = require('./share.js');
share.test();
而在客户端只需加载js文件然后使用
share.test();
不要忘记,JavaScript函数的字符串表示代表该函数的源代码。 你可以简单地用封装的方式编写你的函数和构造函数,以便它们可以被toString()函数和发送给客户端。
另一种方法是使用构建系统,将通用代码放在单独的文件中,然后将它们包含在服务器和客户端脚本中。 我通过WebSockets使用这种方法进行简单的客户端/服务器游戏,其中服务器和客户端运行基本相同的游戏循环,并且客户端每隔一个时钟周期与服务器同步以确保没有人作弊。
我的游戏构建系统是一个简单的Bash脚本,它通过C预处理器运行这些文件,然后通过sed来清理一些垃圾cpp留下的垃圾,所以我可以使用所有正常的预处理器东西,如#include,#define,#ifdef等等
链接地址: http://www.djcxy.com/p/67103.html上一篇: How can I share code between Node.js and the browser?
下一篇: Database resiliency