【问题标题】:Can I use node modules in an existing javascript application?我可以在现有的 javascript 应用程序中使用节点模块吗?
【发布时间】:2015-01-27 03:19:22
【问题描述】:

我的目标是弄清楚如何在现有的 javascript 应用程序中使用节点模块

我现有的应用程序是基于 jQuery 和 ReactJS 的。

我遇到了一些我想在项目中开始使用的节点模块,它们似乎只能作为模块使用(因此不能通过简单地添加 script 标签来使用它们)。

以前我一直使用bower 来安装库并在本地使用它们,只需使用script 标签。

我知道我可以使用 Browserify 或 Webpack 将一堆 Node 模块捆绑到一个 javascript 文件中,但是如何将其中的模块公开给我现有的应用程序?

我想做的是

<script src="jquery.min.js"/>
<script src="bundle.js"/>
<script src="myapp.js"/>

myapp.js 可以使用全局变量来表示 module_x,这是一个 npm 模块。

我预见到的一个问题是bundle.js 可能已经包含 jquery,那么我该如何解决这个问题呢?我知道有些人可能会说“将您的整个项目转换为模块”,然后它就可以工作了!但我想知道是否可以不这样做,尽管有所有好处;-)

【问题讨论】:

  • 我是新手,我使用 Gulp 将我的模块和脚本“构建”到一个 script.js 文件中......然后将其包含在我的 index.html 中,可以像你一样使用知道。刚刚阅读了 Gulp 和 pipe 以及那些好东西......抱歉不能给出更合格的答案,所以我只是试图通过评论来提供帮助

标签: javascript jquery npm browserify webpack


【解决方案1】:

这不是更好的做法,但您可以在 browserify 中使用全局变量。这样,您将能够在您需要的任何范围内访问使用 require() 获得的库。只需使用:

global.lib = require('somelib');

然后通过browserify浏览您的源文件。如果您不知道如何操作,请阅读documentation。它非常易于使用。

之后,只需从您需要的任何地方访问lib。

另外,如果您已经将 jQuery 定义为包之前的全局,您将能够在浏览器化文件中访问它。在您的主要 browserify 文件中,只需:

var someVar = require('./somefile.js');
var allDivs = $("div"); // $ was a global before this file runs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 2011-12-11
    • 1970-01-01
    相关资源
    最近更新 更多