【发布时间】:2012-11-14 17:48:49
【问题描述】:
我在 requirejs 中加载依赖项时遇到问题,因此尝试重新创建最简单的结构来显示我的问题。 html 文件包含一个引导输入框,我想在页面加载后填充数据。如果我的 main.js 脚本是:
requirejs.config({
paths: {
jquery: 'libs/jquery/jquery-min',
bootstrap: 'libs/bootstrap/bootstrap.min',
underscore: 'libs/underscore/underscore-min',
backbone: 'libs/backbone/backbone-optamd3-min',
cs: 'libs/require/cs',
'coffee-script': 'libs/coffeescript/coffee-script'
},
shim: {
bootstrap: {
deps: ['jquery']
}
});
require(['cs!router']);
我的主干入口点是一个非常简单的路由器:
define ['jquery','underscore','backbone','bootstrap'], ($, _, Backbone) ->
AppRouter = Backbone.Router.extend
initialize: () ->
@data = ['one','two','three']
routes: '': 'index'
index: () ->
$('.typeahead').typeahead({source:@data})
app_router = new AppRouter
Backbone.history.start()
如果页面从清理的网络缓存加载,我会在控制台上收到以下错误:
TypeError:a 不是函数
TypeError: $(".typeahead").typeahead 不是函数
错误:模块加载超时:cs!router http://requirejs.org/docs/errors.html#timeout
如果我只是重新加载页面,所有错误都会消失,一切正常。如果有人能向我解释这里发生了什么,我将非常感激,谢谢。
【问题讨论】:
-
我相信你的主脚本中的
define应该是require。 -
对不起,我的意思是 require(['cs!app']);在配置内容之后,我的主应用脚本开始:define ['jquery',...,'bootstrap'] ...
-
我不知道它是否相关,但你不需要
exports: 'bootstrap'。见:blog.credera.com/topic/technology-solutions/java/… -
没有影响主要问题...我正在重新编辑帖子以使我的结构更清晰。
标签: requirejs