初次seajs使用
第一次用报了$=null的错误。然后上网查了是jquery需要封装成CMD才能使用。于是就删掉jquery中的AMD支持,就OK了
之后又use了uploadifive这个jquery插件,不论用use方式还是require方式,虽然能导入uploadifive,而且也没报错,但是不能用的。点upload按钮都没反应。初始化的js代码都执行了。(否则报错)。必须用传统的script标签导入才能使用。而且jquerymobile用use或require都是支持的。
因为这个原因,我只好用传统的script标签导入jquery和所有jquery插件。因为不能只有一个uploadifive用传统的,它依赖jquery,jquery也需要用传统的方式导入。因此所有jq插件都必须用传统方式了。
然后想将css也一起用use方式导入。这个应该没问题。但是,若js都用传统方式了,css也没必要再用use方式,直接用传统的link标签导入吧。
搞了一圈,只有自己写的js和css用seajs的CMD模块化导入。几次想放弃用seajs,但是既然这么多人用它肯定是有好处的。
不知道requirejs怎么样,由于jquery默认支持amd模块,不需要手动修改jquery。那jquery插件需要再修改吗?有空再研究下requirejs。而且我做的项目基本是所有js资源都要预加载的,应该更适合用requirejs。
记录:
1可使用spminstalljquery/jquery命令在当前目录下自动生成CMD模块化后的jquery。
存在问题:
1想将css一起打包进main,导入了seajs-style,并在config配置了preload:["style"],但是sea.importStyle依然是null?
2旧代码存在相互依赖。但是seajs2.1.1不支持相互依赖了。而node.js是支持的。seajs会自动停止,不执行了。
解决方案:采用中间件解耦。参考资料
3src中的js文件引用了src外部的公共js,如何将这些共用的js也一起压缩打包?好像spmbuild只能压缩src目录下的js文件。