Javascript 使用Browserify v2的全局请求
我想使用Browserify绑定我的文件,但是我需要在HTML页面本身上的Browserify bundledJavascript 使用Browserify v2的全局请求,javascript,module,browserify,Javascript,Module,Browserify,我想使用Browserify绑定我的文件,但是我需要在HTML页面本身上的Browserify bundledbundle.js中包含一个模块。由于页面上未定义require功能,因此当前无法执行此操作 看来bundle.js中由browserify定义的require函数在IIFE中,所以我不能使用它。是否可以将此选项替换为全局要求 <script src="bundle.js"></script> <script> // Require the `ap
bundle.js
中包含一个模块。由于页面上未定义require
功能,因此当前无法执行此操作
看来bundle.js
中由browserify定义的require
函数在IIFE中,所以我不能使用它。是否可以将此选项替换为全局要求
<script src="bundle.js"></script>
<script>
// Require the `app` module inside of `bundle.js`
var app = require('app');
app.start();
</script>
//需要bundle.js中的'app'模块`
var-app=require('app');
app.start();
我之所以需要这样做,是因为我的app.start
函数需要传递一些JSON,这些JSON只能由服务器端模板呈现
注意:我正在使用Browserify v2。您可以使用-r
为您指定的文件运行:
x、 js:
控制台
$ browserify -r ./x.js > bundle.js
然后在html中:
<script src="bundle.js"></script>
<script>
var x = require('./x.js');
console.log(x(3))
</script>
var x=要求('./x.js');
控制台日志(x(3))
将打印333
在您的情况下,只需执行browserify-r app
即可将require('app')
公开给外部上下文。谢谢。奇怪的是,如果你传递一个相对的URL,比如x.js
,而不是/x.js
,那么它会与TypeError一起出错:不是字符串或缓冲区
,你必须传递路径,因为模块解析发生在绑定时。v2中的客户端捆绑包中不再有模块解决方案算法。我希望将require方法附加到构建模块返回的全局,从而实现封装。类似于bundle.require('./x.js')
。我所做的是在主文件中创建需求清单。有更好的方法吗?我很担心全局要求,因为我正在编写的软件是要嵌入到其他网站上的。require
的不同实现可能会在至少一些站点上定义。browserify文档说明browserify将退回到以前定义的任何require函数,因此只要路径不冲突,它可能不会干扰其他函数。
<script src="bundle.js"></script>
<script>
var x = require('./x.js');
console.log(x(3))
</script>