我正在使用JavaScript客户端(在浏览器中运行)和Node.js服务器创建一个小型应用程序,并使用WebSocket进行通信。
我想在客户端和服务器之间共享代码。至少可以说,我才刚刚开始使用Node.js,而我对现代JavaScript的了解还有些生疏。因此,我仍然对CommonJS require()函数有所了解。如果我使用“导出”对象创建程序包,那么我将看不到如何在浏览器中使用相同的JavaScript文件。
我想创建一套在两端使用的方法和类,以方便编码和解码消息以及其他镜像任务。但是,Node.js / CommonJS打包系统似乎使我无法创建可在两侧使用的JavaScript文件。
我也尝试使用JS.Class来获得更严格的OO模型,但是我放弃了,因为我无法弄清楚如何使提供的JavaScript文件与require()一起使用。我在这里想念什么吗?
如果您想编写一个可以同时在客户端和服务器端使用的模块,那么我在简短的博客文章中介绍了一种快速简便的方法: 为Node.js和浏览器编写,本质上如下(this与相同window) :
this
window
(function(exports){ // Your code goes here exports.test = function(){ return 'hello world' }; })(typeof exports === 'undefined'? this['mymodule']={}: exports);
另外,也有一些旨在在客户端实现Node.js API的项目,例如Marak的 gemini 。
您可能还对DNode感兴趣,它使您可以公开JavaScript函数,以便可以使用基于JSON的简单网络协议从另一台计算机上调用它。