Open lianqin7 opened 11 years ago
在seajs的模式里面,所有的js文件都是 CMD 模块。 而在 CMD 模块中,对模块的引用只能通过 require() 及 require.async() 的方式,seajs.use的用法是 不符合规范 的
require()
require.async()
seajs.use
在js文件中使用 seajs.use 也有性能问题,比如:
目前“正确”使用 seajs.use 的流程是这样的:
... | | - 在 html/vm 里写 seajs.use 去请求模块(js文件) ====异步===> 模块 ====> 运行 callback | | - 其他html渲染,script运行等 | ...
整个过程的请求都是 异步的 ,不会阻塞
如果是在 js 文件里写 seajs.use 的情况是这样的:
... | - 在 html/vm 里用 script 标签去加载写有 seajs.use 的入口js | - ====同步====> 加载 入口js ====> 运行(有seajs.use) ====异步====> 模块 ====> 运行callback | | - 其他html渲染,script运行等 | ...
很明显的,入口js文件是同步加载进来的,然后才去异步加载依赖的模块,多了一次 同步的js请求 性能会受影响
js 里的 seajs.use 是无法享受 combo 服务的 ,这个原因另说,也是对性能的大影响
目前只提供一个js调用的接口
// 页面中越早调用越好 // 建议在引入 atom.js 之后马上设置 seajs.setLocale(locale);
目前 locale的规范 是: "en-us","zh-cn"等这种字符串( 小写字母+中划线 )
"en-us","zh-cn"
{locale}
var i18nStr = './i18n/{locale}.js'; var i18n = require(i18nStr) || {};
联系架构组,把新增的语言模块给架构组,由架构组同学来添加即可
为什么js里不能使用seajs.use?
首先
在seajs的模式里面,所有的js文件都是 CMD 模块。 而在 CMD 模块中,对模块的引用只能通过
require()
及require.async()
的方式,seajs.use
的用法是 不符合规范 的其次
在js文件中使用
seajs.use
也有性能问题,比如:目前“正确”使用 seajs.use 的流程是这样的:
整个过程的请求都是 异步的 ,不会阻塞
如果是在 js 文件里写 seajs.use 的情况是这样的:
很明显的,入口js文件是同步加载进来的,然后才去异步加载依赖的模块,多了一次 同步的js请求 性能会受影响
还有
js 里的 seajs.use 是无法享受 combo 服务的 ,这个原因另说,也是对性能的大影响
i18n相关
改变页面的i18n
目前只提供一个js调用的接口
目前 locale的规范 是:
"en-us","zh-cn"
等这种字符串( 小写字母+中划线 )模块里使用i18n模块的方法
{locale}
来代替 i18n 中标识语言的部分通用组件里的 i18n 不够了,要新增怎么办?
联系架构组,把新增的语言模块给架构组,由架构组同学来添加即可