使用require.js加载browserify boundle.js

时间:2017-07-20 16:07:32

标签: javascript node.js requirejs browserify

我们有使用require.js的框架 我们正在加载如下的包

define(["converter/service/utils"], function (utils) {

现在我们可以使用utils文件。

现在我们有一个新的js文件,它是browserify和uglify,如

browserify main.js | uglifyjs > bundle.js

我已经将boundle.js文件添加到我的项目中(在服务文件夹下),我想加载它但是它不起作用...

我尝试加载它如下:

   define(["converter/service/bundle"], function (bundle) {

但是bundle是空的(调试它时......)

知道如何使用require.js加载browserfiy文件吗?

我知道在broswerify的文档中我们应该像

一样添加它
<script src="bundle.js"></script>

我们使用require.js 来加载模块,我可以使用其他js文件... 例如,如果我将此文件保存在我的项目中

https://rawgit.com/hugeen/lebab-experiment/master/lebab.js

我可以用require.js加载它......

编辑:

我所做的是npm init&amp;

npm install lebab --save

创建文件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)用于验证它 与webstoram vscode进行一些项目调整。我只想验证捆绑包是否正确创建......

1 个答案:

答案 0 :(得分:1)

您的软件包不包含允许RequireJS加载它的必要代码,因为默认情况下browserify不包含所需的代码。获得所需结果的一种方法是使用--standalone告诉Browserify在您的数据包周围添加UMD wrapper

browserify --standalone someName main.js | uglifyjs > bundle.js

someName是UMD包装器在检测到它未在CommonJS或AMD环境中运行时将使用的名称。在这种情况下,它会将您的包导出为全局空间中的符号someName。您必须决定要在那里使用的名称。

使用UMD包装器,您的包将检测到它在AMD环境中运行(因为RequireJS使define可用),并将调用define以RequireJS作为模块注册自己