使用require.js加载browserify的boundle.js
我们有与require.js一起工作的框架,我们正在加载如下的包
define(["converter/service/utils"], function (utils) {
现在我们可以使用utils文件。
现在我们有一个新的js文件,这是一个浏览和uglify像
browserify main.js | uglifyjs > bundle.js
我已经将boundle.js文件添加到我的项目(服务文件夹下),我想加载它,但它不工作…
我尝试加载它,如下所示:
define(["converter/service/bundle"], function (bundle) {
但捆绑是空的(而debugging它…)
任何想法如何使用require.js加载browserfiy文件?
我知道在博客文档中我们应该加上它
<script src="bundle.js"></script>
但我们使用require.js来加载模块,我可以这样做与其他js文件…例如,如果我保存在我的项目中的这个文件
https://rawgit.com/hugeen/lebab-experiment/master/lebab.js
我可以加载require.js …
编辑:
我所做的是npm init
&
npm install lebab --save
创build文件main.js
并把下面的代码
var lebab = require("lebab");
并运行命令
browserify --standalone someName main.js | uglifyjs > bundle.js
它成功完成
把bundle.js
文件放在converter/service
文件夹下
并试图要求如下:
define(["converter/service/bundle"], function (bundle) {
或者也是
define(["converter/service/someName"], function (bundle) {
它不工作…我在这里错过了什么?
EDIT2
由于我们使用我们的工具(包装require.js)很难跟踪正确的错误,有一些工具(require.js),我用它来validation它与webstoram vscode与一些项目的调整。 我只是想validation捆绑被创build了正确…
你的bundle不包含允许RequireJS加载它的必要的代码,因为默认情况下, browserify
不包括那个。 获得所需结果的一种方法是使用--standalone
来告诉Browserify在您的包中放置一个UMD包装 :
browserify --standalone someName main.js | uglifyjs > bundle.js
someName
是UMD包装器所使用的名称,如果它检测到它不在CommonJS或AMD环境中运行。 在这种情况下,它将在全局空间中将您的包导出为符号someName
。 你必须决定你想用什么名字。
使用UMD包装器,你的包会检测到它正在AMD环境中运行(因为RequireJS使得define
可用),并且将调用define
来以RequireJS作为模块注册自己。