seajs/examples

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和使用的路径一样就行了。完美了!

谢谢!!被这个问题坑了大半个小时!!