因此,我遇到了一个有趣的用例,其中我使用Browserify将我的所有资产捆绑到一个项目中,但是当某个应用内窗口时,需要加载一个大型外部(项目外部)模块被访问。(这是一个视频播放器模块,由三个脚本组成,在需要时会异步引入这些脚本)。
目前,我遇到了各种各样的错误,从uncalled object
将requireJS模块加载到Browserizedapp.js
文件之前的cannot find module
错误,到在Browserized代码之后加载的错误。
无论如何,我可以让Browserify和RequireJS在同一页面上很好地播放吗?我迷失了方向!
TL; DR-window.require
在浏览器化脚本中使用。
也许它仍然可以帮助某人。我碰巧使用了一个完全基于requireJS风格的AMD的基于“外部”基于dojo的库,它绝对是“无法浏览的”并且不能转换为CommonJS或任何理智的东西。我自己的代码完全被浏览器化了。这样工作正常:
在浏览器化require
的脚本之前加载AMD加载程序(定义了全局功能):
<script src="dojo/dojo.js"></script> <!-- RequireJS/AMD loader, defining a global 'require'-->
<script src="app/main.js"></script> <!-- The Browserify bundle -->
在您自己的js中,调用对象require
上的函数window
(因为您将拥有一个本地浏览器-覆盖require
全局浏览器)
window.require(['dojo/dojo'], function (dojo) { ... });
可以require
自行调用以加载子模块等的“外部”应用程序或库工作得很好,因为代码不在浏览器化上下文中,并且全局代码require
未在此处隐藏。
也许如果您有一些纯粹的标准RequireJS模块,则可以通过某种方式将它们转换为可浏览器化,但是在我看来,这不是一个选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句