我有一些错误如下;
Uncaught ReferenceError: Marionette is not defined
我正在使用以下files(main.ts->config, app.ts-> first class of the app)
使用grunt watch (typescript compile with --module amd)。我的问题是参考我的错误问题,如何导入木偶(modules/marionette.d.ts)
以便我可以使用Marionette.Application();
并配置我的应用程序?
main.ts;
// Require JS all the things
/// <reference path="modules/require.d.ts" />
/// <reference path="modules/marionette.d.ts" />
require.config({
basePath: 'assets/js',
paths : {
backbone : 'vendor/backbone',
underscore : 'vendor/underscore',
jquery : 'vendor/jquery',
marionette : 'vendor/backbone.marionette',
debug : 'vendor/ba-debug',
handlebars: 'vendor/handlebars'
},
shim : {
jquery : {
exports : 'jQuery'
},
underscore : {
exports : '_'
},
backbone : {
deps : ['jquery', 'underscore'],
exports : 'Backbone'
},
marionette : {
deps : ['jquery', 'underscore', 'backbone'],
exports : 'Marionette'
},
handlebars: {
exports:'Handlebars'
},
debug: {
exports: 'debug'
}
}
});
// initalise the app
// load AMD module app.ts (compiled to app.js) , tsc --module AMD main.ts
// and include shims $, _, Backbone
require(['backbone', 'app','routers/router','routers/controller', 'debug', 'jquery','underscore'], (Backbone, App, CustomRouter, AppController, debug, $, _ ) => {
debug.log('starting app');
App.on('initialize:after', function(options) {
if (Backbone.history) {
Backbone.history.start();
}
});
var router = new CustomRouter({
controller : new AppController()
});
App.start();
});
app.ts;
/// <reference path="modules/marionette.d.ts" />
var app:any = new Marionette.Application();
app.addRegions({
header : '#Header',
// main : CustomRegion.extend({el: '#main'})
main : '#Main'
});
app.addInitializer(function() {
});
由于
答案 0 :(得分:1)
你需要告诉requireJS在开始运行app.js之前加载marionette
。
这是使用amd-dependency完成的:
/// <amd-dependency path="marionette"/>
您可以在此处查看示例:https://github.com/basarat/typescript-amd/blob/master/app/scripts/app.ts 以及视频教程:http://www.youtube.com/watch?v=4AGQpv0MKsA
答案 1 :(得分:-1)
我使用它作为参考,它完美地运作Structuring Backbone with RequireJS and Marionette。希望这有助于您解决问题! :)