New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

引入juqery框架,用var $ = require('jquery');和require('jquery');有什么区别吗? #1007

Closed
QzhouZ opened this Issue Nov 3, 2013 · 4 comments

Comments

Projects
None yet
4 participants
@QzhouZ

QzhouZ commented Nov 3, 2013

引入juqery框架,用var $ = require('jquery');和require('jquery');有什么区别吗?
第一种jquery是cmd模块:

define(function(require,exports,module) {
    var $ = require('jquery');
    function init(str) {
        $("#test").click(function() {
            alert(str);
        })  
    }
    exports.init = init;
});

第二种就是普通的jquery库:

define(function(require,exports,module) {
    require('jquery');
    function init(str) {
        $("#test").click(function() {
            alert(str);
        })  
    }
    exports.init = init;
});

这两种有什么区别吗,用第二种会出现什么问题吗?

还有个问题就是我看案例都是在模块里引入jquery的,这跟直接在头部引入有什么优势吗,我在头部引入后,就不用每个模块再引入了,这样不是更方便吗??

@QzhouZ QzhouZ closed this Nov 3, 2013

@QzhouZ QzhouZ reopened this Nov 3, 2013

@hotoo

This comment has been minimized.

Show comment
Hide comment
@hotoo

hotoo Nov 3, 2013

Member

非 CMD 模块会污染全局作用域。
CMD 模块则只对当前作用域有效,不影响其他作用域。

Member

hotoo commented Nov 3, 2013

非 CMD 模块会污染全局作用域。
CMD 模块则只对当前作用域有效,不影响其他作用域。

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Nov 5, 2013

Member

这两种有什么区别吗,用第二种会出现什么问题吗?

第一种的话,jquery 也是一个标准的 CMD 模块,如果存在 jquery 的多个版本时,彼此可以共存。
第二种的话,jquery 是一个,如果一个页面中存在多个 jquery 版本时,全局变量 jQuery / $ 会彼此覆盖。

可以根据你的实际情况,选用合适的方案就好。

还有个问题就是我看案例都是在模块里引入jquery的,这跟直接在头部引入有什么优势吗,我在头部引入后,就不用每个模块再引入了,这样不是更方便吗??

头部引入,每个模块就可以用了,好处是简单清晰,但坏处也有:

  1. jquery.js 是同步引入,对于展现型页面来说,会影响首屏显示时间。
  2. 每个模块的依赖信息不全,等于假设了所有模块都依赖 jquery 的某个特定版本,当 jquery 升级时,需要检查所有模块是否正常工作。

当然,一般情况下,头部统一引入 jquery.js 也够用了。

具体怎么用,还得看你的场景,与你的选择。

Member

lifesinger commented Nov 5, 2013

这两种有什么区别吗,用第二种会出现什么问题吗?

第一种的话,jquery 也是一个标准的 CMD 模块,如果存在 jquery 的多个版本时,彼此可以共存。
第二种的话,jquery 是一个,如果一个页面中存在多个 jquery 版本时,全局变量 jQuery / $ 会彼此覆盖。

可以根据你的实际情况,选用合适的方案就好。

还有个问题就是我看案例都是在模块里引入jquery的,这跟直接在头部引入有什么优势吗,我在头部引入后,就不用每个模块再引入了,这样不是更方便吗??

头部引入,每个模块就可以用了,好处是简单清晰,但坏处也有:

  1. jquery.js 是同步引入,对于展现型页面来说,会影响首屏显示时间。
  2. 每个模块的依赖信息不全,等于假设了所有模块都依赖 jquery 的某个特定版本,当 jquery 升级时,需要检查所有模块是否正常工作。

当然,一般情况下,头部统一引入 jquery.js 也够用了。

具体怎么用,还得看你的场景,与你的选择。

@lifesinger lifesinger closed this Nov 5, 2013

@QzhouZ

This comment has been minimized.

Show comment
Hide comment
@QzhouZ

QzhouZ Nov 5, 2013

@lifesinger 原来如此,谢谢玉伯老师的回答~

QzhouZ commented Nov 5, 2013

@lifesinger 原来如此,谢谢玉伯老师的回答~

@kmvan

This comment has been minimized.

Show comment
Hide comment
@kmvan

kmvan Dec 5, 2013

那现在 seajs2.1版本不也是同步引入吗?

kmvan commented Dec 5, 2013

那现在 seajs2.1版本不也是同步引入吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment