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

seajs 2.1.1中去掉了seajs.modify 后,如何preload CDN 中的jquery ? #862

Closed
lchuilu opened this Issue Jul 22, 2013 · 22 comments

Comments

Projects
None yet
9 participants
@lchuilu

lchuilu commented Jul 22, 2013

之前1.3.1 的时候 引用 jquery 可以先引用一个原始的没经过 cmd修改的jquery 然后使用

 seajs.modify("jquery", function(require, exports) {
   window.jQuery = window.$ = exports
 })

将 $ 暴露出来, 但升级2.1.1以后 seajs.modify 已经被去掉了 ,那现在该如何做才能在不修改 jquery的情况下,preload jquery 呢?

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Jul 22, 2013

Member

直接

seajs.config({
  preload: ['path/to/jquery.js']
})

这样就会 preload 进来。

Member

lifesinger commented Jul 22, 2013

直接

seajs.config({
  preload: ['path/to/jquery.js']
})

这样就会 preload 进来。

@lifesinger lifesinger closed this Jul 22, 2013

@lchuilu

This comment has been minimized.

Show comment
Hide comment
@lchuilu

lchuilu Jul 22, 2013

哦,不好意思,我可能没说明白。我的意思是 我之前是用 seajs.modify 来暴露非 CMD的 jquery 模块,升级到2.1.1以后没有seajs.modify 可用了,该如何暴露 jquery ?

lchuilu commented Jul 22, 2013

哦,不好意思,我可能没说明白。我的意思是 我之前是用 seajs.modify 来暴露非 CMD的 jquery 模块,升级到2.1.1以后没有seajs.modify 可用了,该如何暴露 jquery ?

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Jul 22, 2013

Member

2.1 后,不推荐使用非 CMD 模块,推荐使用前封装一下。

Member

lifesinger commented Jul 22, 2013

2.1 后,不推荐使用非 CMD 模块,推荐使用前封装一下。

@lchuilu

This comment has been minimized.

Show comment
Hide comment
@lchuilu

lchuilu Jul 22, 2013

明白了,多谢。

lchuilu commented Jul 22, 2013

明白了,多谢。

@lchuilu

This comment has been minimized.

Show comment
Hide comment
@lchuilu

lchuilu Jul 22, 2013

@lifesinger 我使用 如下代码封装了 jquery,

define(function(require, exports, module) = {
 
    //原jquery.js代码...
 
    module.exports = $.noConflict(true);
});

这样的话需要在每一个模块中 require('jquery')
怎样修改 jquery 才能在 config中 preload一次 jquery 就可以使用,而不是在每一个模块中 require 一次 jquery呢?
之前都是用seajs.modify 将jquery 暴露全局了。现在seajs.modify 没了,真不知道该怎么弄了。

lchuilu commented Jul 22, 2013

@lifesinger 我使用 如下代码封装了 jquery,

define(function(require, exports, module) = {
 
    //原jquery.js代码...
 
    module.exports = $.noConflict(true);
});

这样的话需要在每一个模块中 require('jquery')
怎样修改 jquery 才能在 config中 preload一次 jquery 就可以使用,而不是在每一个模块中 require 一次 jquery呢?
之前都是用seajs.modify 将jquery 暴露全局了。现在seajs.modify 没了,真不知道该怎么弄了。

@nuintun

This comment has been minimized.

Show comment
Hide comment
@nuintun

nuintun Jul 22, 2013

简单,不封装jquery,直接引入!

nuintun commented Jul 22, 2013

简单,不封装jquery,直接引入!

@lchuilu

This comment has been minimized.

Show comment
Hide comment
@lchuilu

lchuilu Jul 22, 2013

@NewtonNiu 恩,直接引入这个办法我是知道的,我只是想知道还有没有像以前 seajs.modify 一样方便的方法在seajs中直接暴露 jquery 的方法。

lchuilu commented Jul 22, 2013

@NewtonNiu 恩,直接引入这个办法我是知道的,我只是想知道还有没有像以前 seajs.modify 一样方便的方法在seajs中直接暴露 jquery 的方法。

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Jul 22, 2013

Member

@lchuilu 我看懂你的需求了,现在也可以,如下

seajs.on('exec', function(module) {
   if (module.uri === seajs.resolve('jquery')) {
      window.$ = window.jQuery = module.exports
   }
})

你试一下,功能类似原来的 modify

Member

lifesinger commented Jul 22, 2013

@lchuilu 我看懂你的需求了,现在也可以,如下

seajs.on('exec', function(module) {
   if (module.uri === seajs.resolve('jquery')) {
      window.$ = window.jQuery = module.exports
   }
})

你试一下,功能类似原来的 modify

@zero7u

This comment has been minimized.

Show comment
Hide comment
@zero7u

zero7u Jul 23, 2013

@lifesinger 有些框架像上面一样,省略分号;有些就特别推荐多写分号,甚至 for () {};还有在js文件最开始加分号等。seajs的打包压缩工具一直没学会,没有引号压缩会有问题吗?

zero7u commented Jul 23, 2013

@lifesinger 有些框架像上面一样,省略分号;有些就特别推荐多写分号,甚至 for () {};还有在js文件最开始加分号等。seajs的打包压缩工具一直没学会,没有引号压缩会有问题吗?

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Jul 23, 2013

Member

@zero7u 有没有分号,对打包工具一般都没影响,除非工具本身写得有问题。

Member

lifesinger commented Jul 23, 2013

@zero7u 有没有分号,对打包工具一般都没影响,除非工具本身写得有问题。

@xingyuzhe

This comment has been minimized.

Show comment
Hide comment
@xingyuzhe

xingyuzhe Aug 20, 2013

我们不同的项目公用一个组件,有的用了seajs,有的没有,没有这个转换 让人怎么搞?

我们不同的项目公用一个组件,有的用了seajs,有的没有,没有这个转换 让人怎么搞?

@xingyuzhe

This comment has been minimized.

Show comment
Hide comment
@xingyuzhe

xingyuzhe Aug 20, 2013

哈 原来这样 直接alias 进去 就可以直接 require到的

哈 原来这样 直接alias 进去 就可以直接 require到的

@xingyuzhe

This comment has been minimized.

Show comment
Hide comment
@xingyuzhe

xingyuzhe Aug 20, 2013

能require到 但是 只是 加载执行了而已,之前的问题还是存在

能require到 但是 只是 加载执行了而已,之前的问题还是存在

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Aug 23, 2013

Member

@xingyuzhe 具体是什么问题?前面回复中的方案能解决你的问题吗?

Member

lifesinger commented Aug 23, 2013

@xingyuzhe 具体是什么问题?前面回复中的方案能解决你的问题吗?

@xingyuzhe

This comment has been minimized.

Show comment
Hide comment
@xingyuzhe

xingyuzhe Aug 25, 2013

情况是这样,我有些组件,公用性很强,想要不同项目都可以用,有些项目是没有引入seajs的,那我不能写成seajs的格式(别的项目用不了),我又想在有seajs的项目能作为一个模块使用(直接引入页面里面的就算了),现在没有了转换机制,我该怎么做呢?

2013/8/23 lifesinger notifications@github.com

@xingyuzhe https://github.com/xingyuzhe 具体是什么问题?前面回复中的方案能解决你的问题吗?


Reply to this email directly or view it on GitHubhttps://github.com/seajs/seajs/issues/862#issuecomment-23163343
.

情况是这样,我有些组件,公用性很强,想要不同项目都可以用,有些项目是没有引入seajs的,那我不能写成seajs的格式(别的项目用不了),我又想在有seajs的项目能作为一个模块使用(直接引入页面里面的就算了),现在没有了转换机制,我该怎么做呢?

2013/8/23 lifesinger notifications@github.com

@xingyuzhe https://github.com/xingyuzhe 具体是什么问题?前面回复中的方案能解决你的问题吗?


Reply to this email directly or view it on GitHubhttps://github.com/seajs/seajs/issues/862#issuecomment-23163343
.

@xingyuzhe

This comment has been minimized.

Show comment
Hide comment
@xingyuzhe

xingyuzhe Aug 25, 2013

define("channelindex", [ "slider" ], function(require, exports, module)
这种经过transport以后的格式用use为什么得不到返回模块? define( function(require, exports,
module) 这种原始的cmd模块才能得到 这个是什么情况?2.1.1版本的

在 2013年8月25日下午1:48,将真宇 xilie180@gmail.com写道:

情况是这样,我有些组件,公用性很强,想要不同项目都可以用,有些项目是没有引入seajs的,那我不能写成seajs的格式(别的项目用不了),我又想在有seajs的项目能作为一个模块使用(直接引入页面里面的就算了),现在没有了转换机制,我该怎么做呢?

2013/8/23 lifesinger notifications@github.com

@xingyuzhe https://github.com/xingyuzhe 具体是什么问题?前面回复中的方案能解决你的问题吗?


Reply to this email directly or view it on GitHubhttps://github.com/seajs/seajs/issues/862#issuecomment-23163343
.

define("channelindex", [ "slider" ], function(require, exports, module)
这种经过transport以后的格式用use为什么得不到返回模块? define( function(require, exports,
module) 这种原始的cmd模块才能得到 这个是什么情况?2.1.1版本的

在 2013年8月25日下午1:48,将真宇 xilie180@gmail.com写道:

情况是这样,我有些组件,公用性很强,想要不同项目都可以用,有些项目是没有引入seajs的,那我不能写成seajs的格式(别的项目用不了),我又想在有seajs的项目能作为一个模块使用(直接引入页面里面的就算了),现在没有了转换机制,我该怎么做呢?

2013/8/23 lifesinger notifications@github.com

@xingyuzhe https://github.com/xingyuzhe 具体是什么问题?前面回复中的方案能解决你的问题吗?


Reply to this email directly or view it on GitHubhttps://github.com/seajs/seajs/issues/862#issuecomment-23163343
.

@lifesinger

This comment has been minimized.

Show comment
Hide comment
@lifesinger

lifesinger Aug 25, 2013

Member

是不是想在有和没有 seajs 的页面中,都可以加载某个使用某个模块?

这可以参考 jQuery 的封装方式:

if ( typeof module === "object" && module && typeof module.exports === "object" ) {
    module.exports = jQuery;
} else {
    if ( typeof define === "function" && define ) {
        define( "jquery", [], function () { return jQuery; } );
    }
}

if ( typeof window === "object" && typeof window.document === "object" ) {
    window.jQuery = window.$ = jQuery;
}
Member

lifesinger commented Aug 25, 2013

是不是想在有和没有 seajs 的页面中,都可以加载某个使用某个模块?

这可以参考 jQuery 的封装方式:

if ( typeof module === "object" && module && typeof module.exports === "object" ) {
    module.exports = jQuery;
} else {
    if ( typeof define === "function" && define ) {
        define( "jquery", [], function () { return jQuery; } );
    }
}

if ( typeof window === "object" && typeof window.document === "object" ) {
    window.jQuery = window.$ = jQuery;
}
@zero7u

This comment has been minimized.

Show comment
Hide comment
@zero7u

zero7u Aug 25, 2013

@xingyuzhe 这个问题我也遇到过,玉伯大人说是因为use的id要和define的id一致才可以返回模块。参考下这个吉利的bug #888 。因此你的代码可以修改为:

seajs.use('path-to-channelindex', function() { // 先加载
    seajs.use('channelindex', function(channelindex) { // 后使用
        // do sth. width channelindex
    })
})

zero7u commented Aug 25, 2013

@xingyuzhe 这个问题我也遇到过,玉伯大人说是因为use的id要和define的id一致才可以返回模块。参考下这个吉利的bug #888 。因此你的代码可以修改为:

seajs.use('path-to-channelindex', function() { // 先加载
    seajs.use('channelindex', function(channelindex) { // 后使用
        // do sth. width channelindex
    })
})
@zuaa

This comment has been minimized.

Show comment
Hide comment
@zuaa

zuaa Oct 23, 2013

我也遇到这个问题,不过我是刚接触seajs,发现文档中的modify 在新版本的seajs中根本不存在。现在我想通过seajs来加载jquery和jquery cookie,并完成一些cookie的一些操作,不知道有没有类似的引用jquery插件的例子给我参考一下。

zuaa commented Oct 23, 2013

我也遇到这个问题,不过我是刚接触seajs,发现文档中的modify 在新版本的seajs中根本不存在。现在我想通过seajs来加载jquery和jquery cookie,并完成一些cookie的一些操作,不知道有没有类似的引用jquery插件的例子给我参考一下。

@xtuhcy

This comment has been minimized.

Show comment
Hide comment
@xtuhcy

xtuhcy Feb 28, 2014

modify也不推荐,shim插件也不推荐,只能改代码封装??

xtuhcy commented Feb 28, 2014

modify也不推荐,shim插件也不推荐,只能改代码封装??

@21paradox

This comment has been minimized.

Show comment
Hide comment
@21paradox

21paradox Mar 7, 2014

我是这样做的:比如引入了google的 jquery 1.8.2和seajs 2.1.1 ,在这两个文件后面+上

可以这样:
define("jquery", [], function(require, exports, module) {
module.exports = window.jQuery;
});
define("$", [], function(require, exports, module) {
module.exports = window.jQuery;
});

也可以这样:
define("jquery", [], function(require, exports, module) {
module.exports = window.jQuery;
});
seajs.config({
alias: {
'$': 'jquery'
}
});

我是这样做的:比如引入了google的 jquery 1.8.2和seajs 2.1.1 ,在这两个文件后面+上

可以这样:
define("jquery", [], function(require, exports, module) {
module.exports = window.jQuery;
});
define("$", [], function(require, exports, module) {
module.exports = window.jQuery;
});

也可以这样:
define("jquery", [], function(require, exports, module) {
module.exports = window.jQuery;
});
seajs.config({
alias: {
'$': 'jquery'
}
});

@WhoIsSmile

This comment has been minimized.

Show comment
Hide comment
@WhoIsSmile

WhoIsSmile Aug 20, 2016

只能该代码吗?我还想用一些网上的cdn 加速呢

只能该代码吗?我还想用一些网上的cdn 加速呢

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