我正在通过 websockets 在 HTML5 客户端和在 node.js 上运行的服务器之间执行消息传递。自然地,我选择了 JSON 作为消息格式,因此创建了通用的 javascript 代码,定义了各种消息内容类型和转换操作。javascript 代码在两个项目之间共享。
我将我的 Web 客户端创建为一个 git 项目,将我的服务器创建为另一个 git 项目。部分原因是我正在使用 phonegap 为各种基于触摸的环境构建基于 webkit 的客户端。这也是各种逻辑的很好分离。
为了共享通用代码,我为通用逻辑创建了一个单独的项目,并使用 git 的子项目将代码“导入”到其他两个项目中。
现在这适用于基于 html5 的项目,因为我可以执行以下操作来包含代码:
<script src="common/js/comms.js" type="text/javascript"></script>
但是对于节点,我在尝试获取代码时遇到了问题。为了获得代码,我最终做了以下事情:
var fs = require('fs');
eval(fs.readFileSync('./common/js/comms.js').toString());
虽然我采用的方法有效,但我注意到当我有依赖项时它开始变得非常混乱(例如,如果我想要 a.js,我需要 x.js、y.js 和 x.js),而且我必须为希望使用这些实体中的任何一个的每个 node.js js 文件执行此操作。
我也不习惯使用这种eval
方法。我没有安全问题,尽管我想使用严格模式,我的理解是 eval 和严格模式像油和水一样结合在一起。
所以我的问题是,在 html 项目和 node.js 项目之间包含共享 js 文件的最佳方法是什么?我更喜欢遵循严格的东西。
我应该注意到,虽然围绕这个主题有几个问题,但我找不到任何可以解决我提出的具体问题的问题。我还应该补充一点,我不希望从“服务器”“提供”文件。HTML5 客户端是“独立的”。
澄清一下,我在“通用 js 文件”中的内容类似于以下内容:
var Comms = function (options) {
...
}
在 HTML5 中,我可以只引用 via new Comms()
,这也是我希望在 node.js 中做的事情。