MT是手机腾讯网前端团队开发维护的一个专注于移动端的js模块管理框架。
Git:http://git.oschina.net/luyongfugx/mt
mt介绍文档:http://mt.tencent.com/mt1index.html
为什么使用MT
无更新不下载
简单友好的模块定义规范
简单易用的打包管理工具
强大的js增量更新代理服务
MT2.0新增特性
本地存储异常回调
统计回调
combo支持
新增LCS增量算法
1. 本地存储异常,统计回调
设置回调
通过设施g_config的storeInc对象的statFunc,storeExFunc两个函数,可以设置统计和本地存储异常回调 , statFunc在请求每个js的时候触发,便于统计每个js的请求情况,storeExFunc在写本地存储异常回调, 将脚本内容写入本地存储出现异常的时候调用,用来提供给业务清理本地存储。
2. combo支持
冷combo
冷combo就是在打包混淆的时候把多个不同的模块打包进同一个js,前台下载的时候直接下载这个js 这个MT1.0已经支持
热combo,半热combo
半热combo是相对冷combo来说的,除了走打包实现冷combo以外,我们还支持通过前台配置来实现半热combo或热combo
我们设置了combo的cb为true,说明走combo. conf的配置则设置了哪些模块是要走combo一起下载的, 即使打包脚本没有把他们打在一起。 为了看效果,我们先把cb设为false,conf设置为空数组,表示不走combo
3. 新增基于lcs算法的增量更新
MT1.0的增量更新是基于chunk算法来实现的,精确度是到块级别的。后来很多朋友给我意见,说其实可以做得更加精确一些,精确到字符级别。 于是我用lcs算法实现了精确到字符级别的设计,最后这个demo也可以看作是整个MT2.0的使用方法
首先到我们的github:https://github.com/mtjs/mt下载代码,然后看mt2.0文件夹下的demo目录,里面有个test.html
本地打包
我们运行demo目录下的build.sh ,其实是执行命令
node ../js/mtbuild.js test.html build.conf lcs
第三个参数说明走lcs增量更新算法,你也可以设置成chunk走老算法
启动增量服务
到js目录下执行命令
node storeincServer.js lcs ../demo
第2个参数说明走lcs增量更新算法,你也可以设置成chunk走老算法,第三个参数是根目录,这里设置成../demo
效果演示
打开chrome(必须支持localstorage),输入地址:http://localhost:6600/test.html,可以看到请求的是全量的js
重新运行命令
node ../js/mtbuild.js test.html build.conf lcs
这时候生成2014053000003版本代码,打开chrome(必须支持localstorage), 输入地址:http://localhost:6600/test.html,这时候可以看到请求的内容是增量的,并且精确到了字符级别:
我们来看下同样是这个修改,如果我们走chunk算法,会是什么样子。 我们需要重新走一遍上边的流程,但是把build.sh命令的lcs参数改成chunk,启动storeincServer时的lcs也改成chunk, 这里就不罗嗦步骤了,我们直接看看走chunk是的网络请求。
发现相对lcs算法,chunk的精确度是比较差的,所以推荐使用lcs算法。
项目主页:http://mt.tencent.com/
下载地址:http://git.oschina.net/luyongfugx/mt
来自:开源中国社区
yilons 于 2014-06-16 08:45:58发表:
2# 544897909
有道理
544897909 于 2014-06-16 00:05:52发表:
太难了,能不能简单点的(6)m:b