节点js需要代码而不是文件
Node js require code instead of file
我正在尝试设置一个界面,我可以在其中编写一个可以在服务器 (nodejs) 和客户端 (javascript) 上使用的 js 文件。
一个示例文件是 Vector 对象,我想在客户端和服务器上使用它,因为我正在创建多人游戏。
在node.js中,我知道您可以使用以下语法来请求源文件...
var Vector = require('./vector');
然后您可以通过输入 Vector
.
来访问它的 module.exports
这里的问题是,对于服务器,我需要在文件末尾添加一些额外的代码...
module.exports = Vector;
...客户端不需要。
是否可能需要源代码,如下所示?
var data = (...) // get data from vector.js file
var Vector = require_code(data + 'module.exports = Vector');
如果没有,可能有另一种方法可以完成我想要完成的事情。
这听起来可能有点混乱,但非常感谢您的帮助!
提前致谢,
大卫.
听起来您正在寻找 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
作为示例依赖项,但如果需要,它们很容易分解。
我正在尝试设置一个界面,我可以在其中编写一个可以在服务器 (nodejs) 和客户端 (javascript) 上使用的 js 文件。
一个示例文件是 Vector 对象,我想在客户端和服务器上使用它,因为我正在创建多人游戏。
在node.js中,我知道您可以使用以下语法来请求源文件...
var Vector = require('./vector');
然后您可以通过输入 Vector
.
module.exports
这里的问题是,对于服务器,我需要在文件末尾添加一些额外的代码...
module.exports = Vector;
...客户端不需要。
是否可能需要源代码,如下所示?
var data = (...) // get data from vector.js file
var Vector = require_code(data + 'module.exports = Vector');
如果没有,可能有另一种方法可以完成我想要完成的事情。
这听起来可能有点混乱,但非常感谢您的帮助!
提前致谢,
大卫.
听起来您正在寻找 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
作为示例依赖项,但如果需要,它们很容易分解。