javascript – 使用Require.js和Backbone定义全局App Namespace

我是Require.js的新手,我正在尝试做一些我认为很简单的事情但是开始变得很痛苦.

我正在尝试为我的Backbone应用程序定义一个全局命名空间,并将其作为模块加载.这是我的命名空间(main.js):

define(
['jquery','underscore','backbone','GlobalRouter'
],function($,_,Backbone) {
var App= {
    Models: {},Views: {},Collections: {},Routers: {},init: function() {
        new App.Routers.GlobalRouter();
        Backbone.history.start();
    }
}
return App;

});

这是我的config.js文件:

require.config({
// your configuration key/values here
baseUrl: "js",// generally the same directory as the script used in a data-main attribute for the top level script
paths: {
    'jquery' : '//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min','underscore': 'vendor/underscore-min','backbone': 'vendor/backbone-min','marionette': 'vendor/backbone.marionette','main' : 'main'
},// set up custom paths to libraries,or paths to RequireJS plugins
shim: {
    'underscore': {
        exports: '_'
    },'backbone': {
        deps: ['underscore','jquery'],exports: 'Backbone'
    },'main' : {
        deps: ['underscore','jquery','GlobalRouter'],exports: 'TEWC'
    }

} // used for setting up all Shims (see below for more detail)
});

define([
'jquery','main'
],Backbone,App,GlobalRouter) {
console.log(App)
alert('hit ')
  $(function() {
       App.init();
    });
 }

);

好的方法,这是我的路由器:

define([
'jquery',TEWC) {

TEWC.Routers.GlobalRouter = Backbone.Router.extend({
    routes: {
        "" : "index","documents/:id" : "edit","login" : "login"
    },edit: function(id) {
        alert('edit')
    },index: function() {
        alert('index')
    },login: function() {
        alert('login')
    }
});

});

在过去,我得到一个’app is undefined error’.现在,几分钟后我收到加载超时错误,说明:

Uncaught Error: Load timeout for modules: main

但是,警报不会触发,并且main.js似乎没有加载,但我相信路由器确实如此,并且它没有吠叫TEWC未定义 – 所以它可能正在加载,即使它不在我的网络标签?

这可能是一个新手问题 – 有没有人对此有任何见解?

最佳答案
以下代码未定义GlobalRouter,但它已传递给define回调

define([
'jquery',GlobalRouter) {
console.log(App)
alert('hit ')
  $(function() {
       App.init();
    });
 }

添加GlobalRouter来定义

其次,当它无法加载主..你可以从控制台检查它试图访问的URL是什么?它很可能是一个错误的配置.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)