如何在客户端使用node.js模块系统

我想在客户端JavaScript应用程序中使用CommonJS模块系统。 我select了nodejs作为实现,但找不到关于如何使用nodejs客户端的任何教程或文档,即不使用node application.js

我在我的html页面中包含了像这样的node.js:

 <script type="text/javascript" src="node.js"></script> 

请注意,我没有在我的本地机器上创buildnodejs,我仍然在Windows上(我知道Cygwin选项)。 当我想在我自己的javascript中使用require函数时,它说它是未定义的。

 var logger = require('./logger'); 

我的问题是,是否有可能使用这样的nodejs?

Node.js是一个服务器端应用程序,您可以在服务器上运行JavaScript。 你想要做的是在客户端使用require函数。

最好的办法是自己编写require方法,或者使用其他使用不同语法(如requireJS)的其他实现。

在做了一些额外的研究之后,似乎没有人用客户端的commonJS语法编写一个require模块。 我会在不久的将来写我自己的,我build议你也这样做。

[编辑]

一个重要的副作用是require函数是同步的,因此加载大块的javascript将完全阻塞浏览器。 这几乎总是一个不需要的副作用。 如果你要这样做,你需要知道你在做什么。 requireJS语法被设置为可以asynchronous完成。

github上的SubStack有一个名为node- browserify的模块。

它将压缩和捆绑您的模块,并将其作为一个单独的js文件提供,但是您可以像使用Node.js(来自模块自述文件中的示例)那样使用它:

 <html> <head> <script type="text/javascript" src="/browserify.js"></script> <script type="text/javascript"> var foo = require('./foo'); window.onload = function () { document.getElementById('result').innerHTML = foo(100); }; </script> </head> <body> foo = <span style='font-family: monospace' id="result"></span> </body> </html> 

从模块描述:

Browserify

浏览器端require()用于你的节点模块和npm包**

Browserify会在指定的安装点提前将所有内容捆绑在一起。 没有这个ajaxy模块加载业务。

更多function:

  • recursion地捆绑npm模块的依赖关系
  • 吸食的浏览器使用es5-shim
  • 过滤{min,ugl}通知
  • 咖啡脚本也起作用!

正如马赛罗所说…

Browserify

Browserify

它神奇地让你这样做。

如果你想用与Node.js相同的风格模块编写浏览器代码,可以试试Webmake 。 看看这个应用程序构build的简单原型: SoundCloud播放列表pipe理器

客户端有一个很好的需求node.js-like库。 这就是所谓的收尾。 检查出kamicane /包装

请尝试

 angular.js 

要么

 express.js 

编写客户端代码。

如果我没有错,那么所有你想要的是运行一段代码或每当客户端执行所需的操作时调用一个函数。 我想要执行上述操作,你可以使用Ajax从客户端调用函数。下面的链接将帮助你