在我的网页上包含节点模块的最佳方法是什么?
我应该使用像<script src="../../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
这样的绝对路径,还是有更简单,更好的方法呢?
谢谢。
答案 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