Han*_*kov 14 javascript jquery requirejs
使用requirejs我的main.js看起来像这样
requirejs.config({
baseUrl: '/javascript/',
paths: {
jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min',
async: 'requirePlugins/async',
hbs: 'hbs'
},
waitSeconds: 7
});
define(['common'], function () {
loadFonts();
});
Run Code Online (Sandbox Code Playgroud)
main.js包含在脚本调用的页面中
<script data-main="/javascript/main.js" src="/javascript/require-2.0.1.js"></script>
Run Code Online (Sandbox Code Playgroud)
Common是网站的基本功能,jquery doc ready函数等包含在define调用中:
define(['jquery'], function() {
//jQuery dependant common code
});
Run Code Online (Sandbox Code Playgroud)
这很好用,从谷歌CDN加载jQuery并执行代码.但是当我在加载main.js之后添加一个require调用时
<script data-main="/javascript/main.js" src="/javascript/require-2.0.1.js"></script>
require(['jquery'], function ($) {
//code
});
Run Code Online (Sandbox Code Playgroud)
从/javascript/jquery.js请求jquery而不是google cdn的已定义路径.我仍然是requirejs的新手,但在我看来,在任何其他请求被解雇之前应该定义路径,有人可以帮助我理解我做错了什么吗?
我认为这可能是因为data-main在RequireJS脚本标记上使用了该属性; 要解析它,RequireJS本身必须加载和解析.在我的测试中(特别是对于IE9),在解析RequireJS配置文件(data-main属性指定的文件)之前,浏览器将直接在RequireJS脚本标记之后下载并执行任何脚本标记.
为了解决这个问题,我只是退出使用该data-main属性,而是将配置文件直接放在RequireJS脚本标记之后作为普通脚本标记,现在一切似乎都很开心.
具体来说,这就是它的样子(使用你的样本):
<script src="/javascript/require-2.0.1.js"></script>
<script src="/javascript/main.js"></script>
Run Code Online (Sandbox Code Playgroud)
Hun*_*der -2
我认为你可以将完整的 url 嵌入到 require 块中。喜欢:
require(['http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min'], function ($) {
//code
});
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你的 jquery 链接无效。