在我的页面上包含节点模块

时间:2016-07-20 07:33:07

标签: javascript node.js npm

在我的网页上包含节点模块的最佳方法是什么?

我应该使用像<script src="../../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>这样的绝对路径,还是有更简单,更好的方法呢?

谢谢。

3 个答案:

答案 0 :(得分:1)

在app.js文件中添加此内容

app.use('/placeholder', express.static(__dirname + '/node_modules/'));

这允许你写:

<script src="/placeholder/bootstrap/dist/js/bootstrap.min.js"></script>

Node会将该路径重定向到node_modules文件夹。

您可以将placeholder更改为您想要的任何内容,我的名称为scripts

答案 1 :(得分:0)

节点模块设计用于NodeJS环境中的服务器端执行,而不是用于浏览器。因此,将它们包含在网页中的最佳方式不是。

我会注意到Bootstrap是一个客户端框架,所以它首先作为NodeJS模块毫无意义。

如果您正在为客户端软件包寻找类似1.2.840.10045.4.3.2 2.16.840.1.101.3.4.2.1 的工具,那么本周的风格为Bower

答案 2 :(得分:0)

我对这个问题的回答会有所不同,有点进步。 也许它现在对你没有帮助,但肯定会在未来它会。此外,它会有助于其他人。

是的,第一个答案绝对正确,您可以添加占位符,然后在索引文件中添加相对于它的链接。

现在,您使用像gulp或grunt这样的任务运行器吗?如果不是,我会建议你开始使用它,因为你可以减少大量的手工工作使用这些工具,最终节省了大量的时间。

你可能在想我为什么在这里谈论吞咽或咕噜声。我很快就会回答这个问题。

由于您使用的是node.js,因此您已经知道如何在Node中加载模块。 例如:require(&#39; express&#39;);

如果我们可以将此方法用于客户端应用程序,该怎么办?您只需要在html中包含一个js文件,并且该js文件将需要所有其他js库。

很好,突然间你可以将html页面中的脚本标签数量从大约20-30减少到1.

这是模块加载器的用武之地。

但是浏览器不理解require语句。

为了解决这个问题,我们使用了一个名为browserify的工具,我们可以使用gulp(我之前谈过)配置一个任务来浏览我们的文件。 当您使用它时,您将需要将所有js库和您自己的js文件放入一个文件中(例如:app.js)。但正如我们所说的浏览器不理解要求。这是browserify将这个app.js文件预先处理它并吐出一个应该包含在你的html中的文件的地方。

您可以按照这篇文章来清楚地了解如何实现这一目标。 Scalable app using Gulp and browserify

非常整洁吧! :)

其他一些模块加载器是System.js和webpack