javascript - 如果我的模块依赖于另一个模块,如何使用 node.js 在客户端和服务器之间共享模块?

标签 javascript oop node.js

这是我的 Node.js 情况:

我正在尝试在 Node.js 服务器和游戏浏览器之间共享代码。基本上我想分享一下游戏逻辑。

假设我的游戏有一个 table ,并且该 table 可以有玩家。我希望每个模块都是客户端和服务器都可以使用的模块。

我知道我可以做这样的事情:

(function(exports){

   exports.test = function(){
        return 'hello world'
    };

})(typeof exports === 'undefined'? this['Table']={}: exports);

我可以在我的 table 上得到类似的东西。但是,如果我需要在这个 Table 模块中使用 Players 该怎么办?像这样的东西:

(function(exports){

   exports.test = function(){
        var Player = require('./Player');
        var p1 = new Player();
    };

})(typeof exports === 'undefined'? this['Table']={}: exports);

虽然这在 Node 中可以工作,但显然在浏览器上不行,因为 require 没有定义。如果没有 require,它可以在浏览器上运行,但不能在 Node 上运行。

TL;DR:我需要将一个模块中的代码“包含”到另一个模块中,该模块可以由浏览器(客户端)和服务器共享。

谢谢

最佳答案

您可以使用 require.js 在 Node 和浏览器中加载模块。

See documentation on the require.js page

关于javascript - 如果我的模块依赖于另一个模块,如何使用 node.js 在客户端和服务器之间共享模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13804508/

相关文章:

c# - 在文档准备好之前隐藏元素?

javascript - 使用扩展语法替换字典中的项目

javascript - 如何在 d3 上标记力导向图?

node.js - 在 Mac OSX 上安装 Bower 时,path.join 的参数必须是字符串

Node.js module.exports 护照经过路由验证

javascript - 无法在输入文本中添加空格

c++ - 涉及多态性的极其奇怪的错误?

python - 属性 setter 在 Python 类中不起作用

node.js - 除非我提供 CC 号码,否则在 Heroku 中使用 MongoLab 不起作用?

java - 封装形式不同