jquery 的引用BUG?
liyoc opened this issue · 4 comments
被这个问题彻底搞困惑了,接触seajs没几天, 一直被如何引入jquery 而困扰. 我怎么感觉jquery 必须放在 jquery/jquery/1.10.1/jquery.js 才能生效呢?
目录结构很简单, 所有文件都在一个目录中, index.html, application.js, jquery.js
index.html:
<script src="sea.js" ></script><script>
seajs.config({
base: "./",
alias: {
"jquery": "jquery.js" // 换成"jquery/jquery/1.10.1/jquery.js", 并将jquery放入这个位置就没有问题。
}
});
seajs.use("./application");
</script>
application.js:
define(function(require,exports,module){
var $ = require('jquery');
console.log($("#xxx").html());
});
jquery.js 来自 seajs-master example/sea-modules/jquery/jquery/1.10.1/jquery.js
错误是: TypeError: $ is not a function,
debug seajs.cache
jquery 其实已经被加载进来了。。。
但是发现还有一个 http://localhost:8080/plugins/seajs/mktry/jquery/jquery/1.10.1/jquery.js
这个就不知道从哪里来的了。。。
期待您的回复 :)
因为 spmjs 上封装的 jquery 是加入了完整 id 的文件。
if ( typeof define === "function" ) {
define("jquery/jquery/1.10.1/jquery-debug", [], function () { return jQuery; } );
}
在 seajs 中,文件的路径和 id 必须匹配,否则无法读取到模块。seajs/seajs#438
文件路径要和 id 匹配。可以理解将 id 理解为旅馆的房间号,不要进错房间,否则其他人就找不到你了。
谢谢,问题解决了。grunt build 之后的文件id和使用的路径一样就行了。完美了!
谢谢!!被这个问题坑了大半个小时!!