Javascript 理解requirejs路径
使用requirejs my main.js如下所示Javascript 理解requirejs路径,javascript,jquery,requirejs,Javascript,Jquery,Requirejs,使用requirejs my 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' }, waitSecon
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();
});
main.js包含在带有脚本调用的页面中
<script data-main="/javascript/main.js" src="/javascript/require-2.0.1.js"></script>
这很好,jQuery从GoogleCDN加载并执行代码。但是当我在加载main.js之后添加require调用时
<script data-main="/javascript/main.js" src="/javascript/require-2.0.1.js"></script>
require(['jquery'], function ($) {
//code
});
require(['jquery'],函数($){
//代码
});
jquery是从/javascript/jquery.js请求的,而不是从定义的google cdn路径请求的。我仍然是requirejs的新手,但在我看来,应该在触发任何其他请求之前定义路径,有人能帮我理解我做错了什么吗?我想你可以在require块中嵌入完整的url。比如:
require(['http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min'], function ($) {
//code
});
顺便说一句,您的jquery链接无效 也许您在需要加载js之前先放置config语句 您应该首先加载require.js,将配置代码放在后面,然后调用require(['jquery'],…) 它搜索/javascript/的原因是您的require.js文件位于那里,并且它是默认的基本url require.js可能永远不会使用您的配置
请参阅关于require config。我认为这可能是由于在RequireJS脚本标记上使用了
data main
属性;要对其进行解析,必须加载并解析RequireJS本身。在我的测试中(特别是针对IE9),浏览器将在解析RequireJS配置文件(由data main
属性指定的文件)之前直接下载并执行RequireJS脚本标记后面的任何脚本标记
为了解决这个问题,我只需停止使用datamain
属性,而是将配置文件作为一个普通的脚本标记直接放在RequireJS脚本标记之后,现在一切似乎都很好
具体来说,这就是它的外观(使用您的示例):
您必须重命名define以满足需要
require(['common'], function () {
loadFonts();
});
我建议使用而不是路径
来配置特定的模块位置
路径
更多用于快捷方式/前缀,以简化/配置包含,而不是完整的模块路径
请记住:您需要将要全局应用的映射放置在
*
对象中的星号(*
)下。原因是您在加载require.js模块后立即放置require(['jquery']…
),因此,它会在读取配置设置之前尝试加载['jquery']
为什么它试图在/javascript/jquery.js
中查找jquery?这是因为您的数据main
属性
RequireJS加载与baseUrl相关的所有代码
通常设置为与数据主目录中使用的脚本相同的目录
为页面加载的顶级脚本的属性
此链接说明require.js模块加载过程:
我可以,但jQuery将自身定义为amd模块,因此我应该能够使用“jQuery”,而不是每次都必须写入整个url。为什么jQuery链接无效?您好,我尝试访问
http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min
找到了404。很抱歉,我忘了在脚本中添加requirejs appends.jsu所有模块都是脚本。您的链接是正确的。很抱歉造成混淆。在浪费了一个多小时之后,我也放弃了data main
。使用双脚本方法消除了我的定义加载错误。TYVM!
<script src="/javascript/require-2.0.1.js"></script>
<script src="/javascript/main.js"></script>
require(['common'], function () {
loadFonts();
});