我是一个初学者,需要JS,我在这里有疑问。
我的文件的结构如下:
root
|____assets
|____bootstrap-3.0.1
|________dist
|____________js
|____________bootstrap.min.js
|________js
|________angulajs.min.js
|________app.js
|________jquery.min.js
|________underscorejs-min.js
|____________app
|________________main.js
我的app.js文件如下:
requirejs.config({
"baseUrl": "assets/js",
"paths": {
": "app",
"jquery": "jquery.min",
"jquery-migrate": "jquery-migrate.min",
"twitter-bootstrap": "../bootstrap-3.1.0/dist/js/bootstrap.min",
"underscore": "underscore-min"
},
"shim": {
"twitter-bootstrap": {
deps: [ "jquery" ]
}
}
});
requirejs(["app/main"]);
我的主js如下:
define([ "jquery", "twitter-bootstrap" ], function($) {
$(function() {
$("#teste").tooltip();
});
});
我的问题是关于Bootstrap的主文件和依赖关系的问题。如果我声明了引导程序取决于jQuery,我仍然必须将" jQuery"包括在定义函数中?我试图删除" jQuery"声明,但没有注入依赖性,我收到了 undefined 错误。
感谢您的任何帮助!
这样做确实是要走的方法:
define([ "jquery", "twitter-bootstrap" ], function($) {
$(function() {
$("#teste").tooltip();
});
});
在上面的代码中,很明显$
应绑定到jquery
模块。如果这样做:
define(["twitter-bootstrap" ], function($) {
$(function() {
$("#teste").tooltip();
});
});
您将$
绑定到twitter-bootstrap
模块。没有进一步的配置,这将无法使用,因为twitter-bootstrap
什么都没有导出。(它以jQuery插件的形式安装。)您可以通过这样的设置垫片来解决它:
"shim": {
"twitter-bootstrap": {
deps: [ "jquery" ],
exports: '$.fn.tooltip',
init: function ($) { return $; }
}
}
但是,我不建议这样做,因为有人在不知道上下文的情况下(即,不知道jquery
和twitter-bootstrap
模块之间的关系)不容易知道发生了什么。
在exports
字段上方的垫片中不是绝对必要的,但是它有助于需要何时加载自举。它应该是一个不存在的符号 prior 被加载的bootstrap,但在加载后存在。