我正在使用grunt-browserify并特别遇到两个问题。使用以下配置选项,任务已启动并成功运行。该变量jsFilesToConcat
代表 Backbone.js + Marionette.js 应用程序的所有 javascript 文件、主应用程序定义、前端实用程序资产(例如 Bootstrap 插件)以及与项目关联的所有 JS。这是错误的方法吗?当时的想法是一次加载整个 250k JS 应用程序(及其所有依赖项)。
我想提供免责声明,这对我来说是新领域,所以我认为我的预期用例可用于插件已经提供的选项,但我对两个错误感到困惑:
1) Backbone not defined
- 这意味着脚本实际上正在加载,但是,当我在 Chrome 开发工具中检查调用堆栈时,它只显示匿名自调用函数。所以我不清楚如何将 Backbone 对象传递给 Marionette 以便在加载时扩展它。
2) require is not defined
- 在我声明的那一行出现错误var SampleApp = require('SampleApp')
。我是否需要在我的 grunt 配置或 node.js server.js 配置中做一些特别的事情来公开该require
功能?
3) javascript 是否在自身内部异步执行,这部分是不是我没有正确处理的 browserify 预期行为?我认为由于我将很多 JS 实用程序包装在一个全局包装器中以保护命名空间,这就是某些功能不可用的原因,但我不清楚为什么这会影响require
.
// uses grunt-browserify task
browserify: {
developmentJs: {
options: {
debug: true,
alias: ["./js/app.dev.js:SampleApp"],
},
src: [
'<%= pkg.jsFilesToConcat %>'
],
dest: 'public-dev/js/app.dev.js'
}
}
然后在index.html
我的单页 Marionette 应用程序中,我有。
(function ($) {
$(document).ready( function() {
var sampleApp = require('SampleApp');
console.log( SampleApp );
});
})(jQuery);