Skip to content
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已死 #1605

Closed
gumutianqi opened this issue Oct 19, 2015 · 34 comments
Closed

感觉一直追赶的SeaJS已死 #1605

gumutianqi opened this issue Oct 19, 2015 · 34 comments

Comments

@gumutianqi
Copy link

如今的Seajs已经不是当初的Seajs了,射雕大侠已经不活跃了,SPM3.x抛弃了CMD,也差不多抛弃了Seajs,关键是我自己现在都没法用了。

当初从Seajs0.1发布的时候开始切换,CMD模块做了一大推,后来出了spmjs.org,再后来spmjs.io,期间自己将所有自己常用的30多个module全部转换了build方式,升级SPM,升级package.json配置文件,从删除family属性,更换module命名空间,publish和build方式,再后来define头也去掉了,才发现自己的一系列module已经没法维护了,升级了部分功能后,无法用新的SPM来bulid,改了配置,又无法使用seajs.use()了,规则变化,导致我凌乱了。

如果的Seajs一点都不纯粹了,不是么,requirejs还是3年前的requirejs,seajs已经不是了;当初跟requirejs对抗的优势都哪里去了,依托Seajs的社区生态又都哪里去了,请还我们一个跟3年前requirejs一样纯粹的Seajs……

@lizzie
Copy link
Member

lizzie commented Oct 19, 2015

ls 是 seajs 忠实粉丝啊。可惜时代在变,人也在变,技术也在变。所谓随波逐流,就这个道理。

你可以 @lifesinger @afc163 回答你的感觉。。

@kebot
Copy link

kebot commented Oct 19, 2015

此时,需要一个 webpack-seajs-loader

@hxgdzyuyi
Copy link

@kebot +1

@afc163
Copy link
Member

afc163 commented Oct 19, 2015

其实 RequireJS 也好,Sea.js 也好,CommonJS、AMD 还是 CMD 也好,在当年的产生和流行,都不是为了推框架,目的都是为了模块化开发。现在 ES2015 规范已出,JS 模块已经得到标准化,早先的模块化方案的没落,和 webpack 和 babel 等转换工具的火爆,都是大势所趋。吾等螳臂挡车,并没有什么卵用。

@hxgdzyuyi
Copy link

@afc163 楼主在吐槽 seajs 的升级不舒服吧。

@foprc
Copy link

foprc commented Oct 19, 2015

死忠の愤怒

话说各种转换器已经不错了,用用ES6的也还好。

@lifesinger
Copy link
Member

很抱歉,我一直欠大家一篇文章,就是《Sea.js 已死》。

任何一个技术产品,都有其生命周期,随着 ES6、ES7、webpack、babel 等技术与工具的兴起,Sea.js 也好,RequireJS 也好,都有了更好的解决方案。当前情况下,用 loader 意义已经不大。

推荐大家可以用下 http://ant.design/ ,也是 Arale 体系的一次重大技术升级,都不需要 loader 了。

很抱歉,同时因为 Sea.js 的死去,我充满惊喜。

你对 Sea.js 大失所望,却是我对你的欣喜若狂……

@afc163
Copy link
Member

afc163 commented Oct 19, 2015

你对 Sea.js 大失所望,却是我对你的欣喜若狂……

👍

@jincdream
Copy link

对的。!seajs 已经死了~ 加载器应该面向未来,面向标准了~

@fundon
Copy link
Contributor

fundon commented Oct 20, 2015

Unwatched

@cloudcome
Copy link

用 coolie http://coolie.ydr.me/ 吧,专注 cmd “一百年”,前端构建 + 模块加载器一体化服务。😄

就目前,没有任何模块化方案可以撼动。

@kebot
Copy link

kebot commented Oct 31, 2015

疑问:脱离英文社区,单独搞出一套东西出来合适吗?

@hxgdzyuyi
Copy link

@kebot 感觉这是一个知乎好问题。

对比 php 社区,作为轮子, php 社区有 yii 和 thinkphp, 前者依赖英文社区[有外国人参与],后者依赖中文社区。yii 口碑上明显要好于 thinkphp,想了想举不出反驳的例子。

作为应用型的轮子,比如 discuz 。我觉得撇开代码好不好的问题不谈,至少在应用上,在功能和创新上 discuz 依托于中文社区做的并不差。这种轮子【论坛,CMS,博客】,脱离英文社区搞起来的先例还是有的。

@kebot
Copy link

kebot commented Nov 1, 2015

@hxgdzyuyi 有道理,给知乎红人点赞

@codetalks-new
Copy link

看了大家的讨论,我却觉得有点感伤呢?眼眶已经湿润...

@syyzw
Copy link

syyzw commented Dec 23, 2015

一句话,学好英语,说多了是泪

@leochan2017
Copy link

一代人做一代人的事情。上一代前端框架或者库已经基本完成使命了,让我们默默记住并怀念它们。

@hkongm
Copy link

hkongm commented Feb 3, 2016

时代更迭必然结果,继续拥抱变化吧

@mopduan
Copy link

mopduan commented Aug 19, 2016

曾经在项目中用过一年多Sea.js,也在CSDN大会上听过玉伯对Sea.js的分享,不过浏览器Loader确实已经过时了,这篇文章问问前端工程化解决方案简介(快速搭建前端工程化解决方案)也谈起过使用Sea.js的经历。

@michael8090
Copy link

michael8090 commented Nov 18, 2016

@kebot 我写了几个seajs的babel插件,能够将seajs的模块转换成标准模块,这样webpack就能打包了,对于需要打包seajs模块团队可能有点帮助。

详细可以看这里,使用方法就是在webpack里引入这几个babel插件。

@breezefeng
Copy link

@michael8090 你写的插件怎么使用呢?还有一个问题,在用seajs的时候会设置一个js的base路径,所有require的时候都是基于base的,使用webpack打包的时候会导致js模块找不到,这个问题你是怎么解决的呢

@michael8090
Copy link

michael8090 commented Dec 27, 2016

@breezefeng

先回答第二个问题,第一个答案比较长,写在下面。

  1. 怎么解决seajs的base:配置webpack的resolve.root字段,让他等于seajs的base,例如
webpackConfig = {
    resolve: {
        root: [path.resolve('../../src/js/')] // 这个数组里写你定义的seajs的base,注意要用path.resolve获取绝对路径
    }
}
  1. 怎么使用那几个插件:

    1. babel-plugin-root-resolver:使用了上面的那个配置之后,webpack负责帮你找到对应的文件位置,不需要在编译时转换了,于是不需要这个插件
    2. babel-plugin-remove-seajs-dependency-arraybabel-plugin-seajs-async-to-webpack-ensure: 安装之后,在babel-loader里加上这两个plugin就可以了,例如:
            loaders: [{
                exclude: [/node_modules/],
                test: /\.js$/,
                loader: `babel-loader?${JSON.stringify({ plugins: [
                    'remove-seajs-dependency-array',
                    'seajs-async-to-webpack-ensure'
                ] })}`,
            }

其实可以把这两个插件封装成一个webpack loader,用起来就方便很多了,我有时间弄一下。

@breezefeng
Copy link

@michael8090 可以加下QQ聊下吗,我的QQ:1024597165

@michael8090
Copy link

@breezefeng ok

@luojianet
Copy link

mark

@blusewang
Copy link

@lifesinger 真会说话!
”你对 Sea.js 大失所望,却是我对你的欣喜若狂……“自己的产品是死是活无所谓,关系最重要!哈哈哈!
值得学习!做技术的是不该得罪人!技术不能信仰,只能利用。但人是有温度的值得关爱!

@blusewang
Copy link

不过,中国人做工具总是如此非主流。再牛逼也挤不进西方的主流体系。做得再好,最后都是空。ant.design,我看结局还是和sea.js差不两样。还是认真玩ES6,webpack之流吧!
不是我瞧不起楼主大牛们,我也做不好,印度阿三也做不好。
就像论起兵法,西方人再怎么学,也建立不了学说;只能学习利用!

@lcoder
Copy link

lcoder commented Apr 15, 2017

@blusewang ant.design很火啊,你确定会和seajs一样么。我也两者都用过,seajs说真的,我还没打包成功过一次,但是ant.design上手简单,配置灵活,不是一样量级的。

@blusewang
Copy link

blusewang commented Apr 15, 2017

@lcoder 哈哈,我是感慨。不是预测!sea.js确是没几个好用的打包工具。
我是支持我们的开发者/团队也能在IT界展露头脚的。
至于ant.design火不火,我认为有一定的用户量为基础,重要的你用着顺手又稳定,就是最好的。
技术是用来被别人使用的,不必崇拜,分出神鬼!

@zzzzzc
Copy link

zzzzzc commented Apr 20, 2021

@kebot 我写了几个seajs的babel插件,能够将seajs的模块转换成标准模块,这样webpack就能打包了,对于需要打包seajs模块团队可能有点帮助。

详细可以看这里,使用方法就是在webpack里引入这几个babel插件。

能给一个webpack 配置吗?
entry
和index.html 中,应该如何进行修改呢?

@michael8090
Copy link

@kebot 我写了几个seajs的babel插件,能够将seajs的模块转换成标准模块,这样webpack就能打包了,对于需要打包seajs模块团队可能有点帮助。
详细可以看这里,使用方法就是在webpack里引入这几个babel插件。

能给一个webpack 配置吗?
entry
和index.html 中,应该如何进行修改呢?

https://michael8090.github.io/2016/11/18/build_seajs_bundle_with_webpack.html

上面的链接里有大部分需要用到的东西,可以参考下。

@LeoEatle
Copy link

插个眼,感觉是个模块加载历史潮流中值得插眼的帖子

另外也不是纯插眼,近期在团队里对于旧的seajs加载方式的web项目进行了webpack改造,但依然是通过webpack loader的方式把webpack内部加载改造为了seajs.use,这样既做到利用webpack打包的生态,也可以利用seajs动态加载的特性。

另外,最后又使用了一个plugin来对最后的bundle进行一个seajs模块包装。所以也依然可以用于其他的框架去加载,可拓展到微前端。

当前未开源,感兴趣的可私聊我了解

@wukongtime
Copy link

插个眼,感觉是个模块加载历史潮流中值得插眼的帖子

另外也不是纯插眼,近期在团队里对于旧的seajs加载方式的web项目进行了webpack改造,但依然是通过webpack loader的方式把webpack内部加载改造为了seajs.use,这样既做到利用webpack打包的生态,也可以利用seajs动态加载的特性。

另外,最后又使用了一个plugin来对最后的bundle进行一个seajs模块包装。所以也依然可以用于其他的框架去加载,可拓展到微前端。

当前未开源,感兴趣的可私聊我了解

请问怎么联系大佬?目前接手一个古老的项目,使用各种方式尽力优化,但是对加入webpack有心无力。

@LeoEatle
Copy link

插个眼,感觉是个模块加载历史潮流中值得插眼的帖子
另外也不是纯插眼,近期在团队里对于旧的seajs加载方式的web项目进行了webpack改造,但依然是通过webpack loader的方式把webpack内部加载改造为了seajs.use,这样既做到利用webpack打包的生态,也可以利用seajs动态加载的特性。
另外,最后又使用了一个plugin来对最后的bundle进行一个seajs模块包装。所以也依然可以用于其他的框架去加载,可拓展到微前端。
当前未开源,感兴趣的可私聊我了解

请问怎么联系大佬?目前接手一个古老的项目,使用各种方式尽力优化,但是对加入webpack有心无力。

抱歉过了很久才回复,这里其实是直接用webpack loader去针对seajs模块把webpack的require临时替换成一个webpack无法识别的自定义函数,这个自定义函数最后又会被替换成seajs的require

不过我建议在项目量不大的情况下,最好是将之前的seajs模块都替换成ES6模块,一劳永逸

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests