3

我已经通过 npm 安装了主干,它放在 node_modules 文件夹中(不在 web 根目录中)我如何将它包含在我的 index.html 文件中?

4

3 回答 3

7

完全基于CommonJS(即Node-style)模块编写前端代码是可能的。

如果您通过 npm 安装前端依赖项,则可以使用 Browserify 之类的包捆绑工具将所有依赖项捆绑到一个文件中。这样,您可以像使用服务器端包一样使用依赖于浏览器的包:使用 Node 的 require 函数。您只需要一个模块(在 node_modules 目录或常规文件中)并使用它。

browserify 的基本使用非常简单:只需执行browserify clientcode.js > webroot/clientbundle.jswebroot您的 web 根目录在哪里。然后包含clientbundle.js在您的html文件中。

clientcode.js应该是客户端的“主”脚本,类似于 Express 应用程序的“app.js”(或类似)。它可以任意大,但您也可以仅将其用作引导代码来运行在其他 CommonJS 模块中定义的函数。

请注意,您可以轻松地将浏览器化依赖项与常规依赖项混合。您预先包含的任何脚本(例如未浏览的 jquery)都将成为全局脚本,并且 browserify 不会阻止您访问全局变量。

但请注意:一些基于客户端库通过 npm 分发的包不(完全)符合 CommonJS 规范。有些可能不会导出任何东西,有些可能(出乎意料地)创建全局变量等。

另请参阅带有 CommonJS 和 Browserify 的 Backbone 应用程序

browserify 的一些替代方案:

我还没有尝试过。

于 2013-08-05T16:21:25.180 回答
2

虽然对后端和前端都使用 npm 的想法听起来很诱人——这对我来说确实如此——但尝试使用 Bower 或 Ender.js 来代替前端依赖项。我个人更喜欢 bower,因为我可以更轻松地将它包含到我的 requireJS 模块结构中。它会让你不会因为沮丧而口吐白沫。

于 2013-08-05T16:03:06.773 回答
0

前端依赖我会推荐使用Bower。有许多组件可供您使用,并且它们非常易于设置。

于 2013-08-05T17:51:26.197 回答