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