我正在尝试设置一个接口,我可以编写一个可以在服务器(nodejs)和客户端(javascript)上使用的js文件。
示例文件是Vector对象,我想在客户端和服务器上使用它,因为我正在创建一个多人游戏。
在node.js中,我知道你可以使用以下语法来要求源文件......
var Vector = require('./vector');
然后,您可以通过输入module.exports
来访问其Vector
。
这里的问题是,对于服务器,我需要在文件末尾添加一些额外的代码......
module.exports = Vector;
...客户端没有必要。
是否可能需要源代码,如下所示?
var data = (...) // get data from vector.js file
var Vector = require_code(data + 'module.exports = Vector');
如果没有,可能还有另一种方法可以完成我想要完成的任务。
这可能听起来有些令人困惑,但非常感谢帮助!
提前致谢,
大卫。
答案 0 :(得分:1)
听起来像是在寻找UMDs - 通用模块定义。
(function (root, factory) {
if (typeof define === "function" && define.amd) {
define(["jquery", "underscore"], factory);
} else if (typeof exports === "object") {
module.exports = factory(require("jquery"), require("underscore"));
} else {
root.Requester = factory(root.$, root._);
}
}(this, function ($, _) {
// this is where I defined my module implementation
var Requester = { // ... };
return Requester;
}));
您需要将root.Requestor
中的名称更改为模块的名称。 root
获取this
的值,该值将成为全局对象或您通常在浏览器上调用window
的内容。
此特定示例将jQuery
和underscore
视为示例依赖项,但如果需要,它们很容易分解出来。