在服务器和浏览器上使用 JavaScript 模块的最佳方式是什么?
我目前正在构建一个使用 NodeJS 的 JavaScript 项目,并且一些对象在客户端和服务器端之间共享。 我试图在节点上使用模块系统,但在浏览器上找不到节点模块的合适实现。 目前我的测试架构是这样的:
Framework.js (只是创建一个公共命名空间和整个框架应该知道的一些函数。它位于名为 Shared 的文件夹中)
var Framework = {};
exports.Framework = Framework;
Module.js (负责特定部分的框架的一部分)
var fw = require('../Shared/Module.js');
fw.Module = function() {};
exports.Framework = fw;
这些模块继续下去。 我尝试使用在网络上找到的简单的 common.js 实现,但它在模块创建的范围上存在一些错误。我也尝试了这篇文章 http://caolanmcmahon.com/posts/writing_for_node_and_the_browser 上显示的想法,尽管它没有不起作用,因为我必须在我的模块中需要基本对象,而这在浏览器上不起作用。
我应该如何构建这段代码,以便我可以组织我的代码,使其在不同文件上具有不同的模块,以便在服务器和浏览器中使用(其中一些)?
I'm currently building an JavaScript project that uses NodeJS and some objects are shared between client and server side.
I was trying to use the module system on node but I couldn't find a suitable implementation of the node modules on the browser.
Currently my test architecture is like this:
Framework.js (just creating a common namespace and some functions that the whole framework should know. It is on folder named Shared)
var Framework = {};
exports.Framework = Framework;
Module.js (Part of the framework responsible for a specific part)
var fw = require('../Shared/Module.js');
fw.Module = function() {};
exports.Framework = fw;
These modules go on and on.
I tried using a simple common.js implementation found on the web but it had some bugs on the scope created by the module. I also tried the idea shown on this post http://caolanmcmahon.com/posts/writing_for_node_and_the_browser although it doesn't work, since I have to require the base object in my modules which wouldn't work on the browser.
How should I structure this code in a way that I can organize my code having different modules on different files to use (some of them) in server and browser?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有一些 JavaScript 模块库可以在浏览器和 Node.js 上运行。一个例子:RequireJS:
There are JavaScript module libraries that both work on browsers and Node. One example: RequireJS: