javascript - 我可以在现有的 javascript 应用程序中使用节点模块吗?

标签 javascript jquery npm browserify webpack

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

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

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

以前,我一直使用 bower 安装库,并仅使用 script 标记在本地使用它们。

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

我想要做的是

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

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

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

最佳答案

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

global.lib = require('somelib');

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

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

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

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

关于javascript - 我可以在现有的 javascript 应用程序中使用节点模块吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27189089/

相关文章:

javascript - Angular Material Design 具有强制选择功能的自动完成文本框

javascript - 如何在用户向下滚动到内容时加载内容?

node.js - MERN 堆栈项目中的 React [create-react-app] 正在提供依赖项

javascript - 我对 XMLHTTPREQUEST() 感到困惑

javascript - AngularJs 上的加载 url 未检测到 onload 事件

javascript - 返回页面中所有 iframe 的 ID

javascript - 在不使用禁用属性的情况下使输入字段看起来已禁用

node.js - 错误!代码 ENOENT,npm 错误!错误号 34

node.js - 将一组文件路径从命令行传递到 "npm run test"上?

javascript - 尝试使用 js、jquery 和 PHP 上传图片时出错