browserify模块加载到函数中
我有一个app.js这是我的web应用程序的主要文件。 它初始化用户界面并加载不同的模块。 目前这是一个包含所有代码的大文件。 我想重构这个function,并将其分解为独立的模块,然后将它们与browserify捆绑在一起。 App.js也依赖于jQuery和一些模块。
我已经在package.json
定义了browser
部分
"browser": { "jquery": "./node_modules/jquery/dist/jquery.js", "jquery-ui": "./static/js/vendor/jquery-ui-1.12.1/jquery-ui.min.js", "App": "./static/js/app.js", "myModule": "./static/js/myModule.js" }
另外我用browserify-shim
来加载一些无法加载的jquery插件。
对于browserify-shim
我已经定义了一个configuration部分:
"browserify": { "transform": [ "browserify-shim" ] }, "browserify-shim": { "jquery": "$", "jquery-ui": { "depends": [ "jquery:$" ] }, "bootstrap": { "depends": [ "jquery:$" ] }, "dropdown": { "depends": [ "jquery:$" ] }, "App": { "exports": "App", "depends": [ "jquery:$" ] }, }
我的entry.js
文件
var $ = require("jquery"); window.$ = window.jQuery = jQuery; var App = require('./app.js'); require('./some jquery plugins');
在我的app.js
var App = function(){ some code... var myModule = require('./myModule.js'); myModule(); some code... return { init: function() { someFunctions(); someFunctions(); } } }(); $(function(){ App.init(); });
在我的myModule.js
module.exports = function() { some code with jquery... };
它捆绑正确,但如果我加载页面,我会得到
app.js:14Uncaught Error: Cannot find module './myModule.js'
如果我在浏览器中查看源代码,它会告诉我:
var myModule = __browserify_shim_require__('./myModule.js');
所以似乎browserify无法在此范围内正确加载模块。
我究竟做错了什么? 我忘记了什么吗? 我想我不需要填充我自己的模块,因为我可以使用commonjs格式的browserify。 在这种情况下,我必须使用另一种模式吗?
感谢您的帮助!
编辑:
我还没有解决scheme。 我重构了整个事情,现在我不再需要浏览器垫片了。 没有它,你可以添加大多数插件。