MT 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
MT 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
MT 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
MT 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
MT 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 MIT
操作系统 跨平台
软件类型 开源软件
开源组织 腾讯
地区 国产
投 递 者 卢勇福
适用人群 未知
收录时间 2014-04-23

软件简介

MT是手机腾讯网前端团队开发维护的一个专注于移动端的js模块管理框架。

github: https://github.com/mtjs/mt

为了方便大家我们还在http://git.oschina.net上放了一个镜像:

http://git.oschina.net/luyongfugx/mt

为什么使用MT

  • 无更新不下载

  • 简单友好的模块定义规范

  • 简单易用的打包管理工具

  • 强大的js增量更新代理服务

快速上手(可查看demo目录下代码)

安装mtbuild

github, npm

$ npm install mtbuild -g

项目结构

MT项目架构一般如下图所示,release文件夹存放本地打包生成的内容,build.conf为打包配置文件。

编写模块

AMD...

define('p1', ['p2', 'p3'], function (p2, p3) { var o = {
        k: 'v' }; return o;
});

编写配置

页面配置:参考实例,在test.html中会存在一段单独的script标签,示意加载及打包配置。

<script type="text/javascript" id="file_config"> var g_config = { // 约定变量名为 g_config,  script 标签 id 为 file_config jsmap:{ 'init': 'base.js', 'util': 'base.js', // 合并后指向同一个文件 'p1': 'page/p1.js', 'p2': 'page/p2.js', 'p3': 'page/p3.js' },
        storeInc:{ 'store': true, // 使用本地存储 'inc': true, // 使用增量更新 'proxy':true, 'debug': false // 调试模式 },
        testEnv: false, // 标识是否为测试环境 staticPath: '/release', // 此项目静态文件路径 和 下面域名拼接
        serverDomain: 'http://localhost:6600', // 静态文件服务器域名 buildType: 'project', // 标识版本管理类型 ver: '2014012000050' // 项目版本号 }; </script>

打包配置:参考实例,创建一个build.conf的配置文件

{ './release/{pv}/base-{fv}.js': {
		files: ['./js/init.js','./js/util.js']
	}, './release/{pv}/page/p1-{fv}.js': {
        files: ['./js/page/p1.js']
    }, './release/{pv}/page/p2-{fv}.js': {
        files: ['./js/page/p2.js']
    }, './release/{pv}/page/p3-{fv}.js': {
        files: ['./js/page/p3.js']
    }
}

本地打包

打开命令行工具,切换到项目目录下,执行命令:(第一个参数为页面配置文件路径,第二个为打包配置文件路径)

$mtbuild test.html build.conf

看到下图提示证明打包成功:(启动增量服务可忽略incResult的结果)

启动增量服务

可以使用demo目录里的一个用nodejs 写的storeincServer

node storeincServer

效果演示

打开chrome(必须支持localstorage),输入地址:http://localhost:6600/test.html,可以看到请求的是全量的js

本地存储里的内容是49版本的:

修改demo里的几个js内容,然后重新打包:

$mtbuild test.html build.conf

打开chrome(必须支持localstorage),输入地址:http://localhost:6600/test.html,这时候可以看到请求的内容是增量的:

本地存储里的内容是50版本的:

查看网络请求,发现请求的内容是你本次修改的一些内容:

说明增量更新已经起了作用,就是这么简单。具体原理可以看后面列车的增量更新算法设计。

还可以这么搞!

mtbuild离线生成增量更新文件

demo里的示例增量文件计算是靠storeincserver来做的,如果你没法控制静态资源服务器, 其实你可以用mtbuild来生成静态增量更新文件,但是前台的loader程序会根据用户上次版本和本次版本相差为1的情况下才走增量更新,并且你需要配置proxy为false

storeInc:{ 'store': true, // 使用本地存储 'inc': true, // 使用增量更新 'proxy':false,//是否使用代理 'debug': false // 调试模式 },

各种语言的增量更新计算服务

除了nodejs版本的storeincserver,我们还提供了java,php版本的增量更新计算服务,使用方法见文档列表

seajs,requirejs两大增量更新插件

如果你之前用了seajs或者用requirejs,现在不想改成mt,我们也提供了这两个模块管理器的增量更新插件,代码在js里的seajs和requirejs目录里面,使用方法参看后面的文档列表

只使用core.js,不用增量更新

如果你觉得增量更新意义不大,但是觉得我们的mt模块管理器还不错想用,那么你可以直接使用core.js,不引入storeincload.js即可!

在自己的项目里面使用增量更新

如果你觉得我们这里的增量更新不错,但是不想使用mt,也不想使用seajs,requirejs这些东西,只是想在自己的项目里面加入增量更新功能,那么请直接使用js/makemerge文件夹里的makein.js,merge.js。 其中makeinc.js是用来计算两个文件的增量的,merge.js则是用来根据增量文件和原文件合并成新版文件的

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (4)

加载中
为嘛现在的JS框架都要这样编译,,,, MT
2014/04/23 10:30
回复
举报
这是个啥东西 MT
2014/04/23 13:10
回复
举报
我叫MT,铜墙铁壁的身躯. MT
2014/04/23 15:25
回复
举报
这是啥 我看不懂 为啥还要命令行 MT
2014/04/23 16:15
回复
举报
更多评论
发表了资讯
2014/06/11 00:00

腾讯移动前端框架 mt 2.0 发布

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,...

21
131
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2019/02/17 22:20

MT【303】估计

(2016浙江填空压轴题) 已知实数$a,b,c$则 ( ) A.若$|a^2+b+c|+|a+b^2+c|\le1,$则$a^2+b^2+c^2<100$ B.若$|a^2+b+c|+|a+b^2-c|\le1,$则$a^2+b^2+c^2<100$ C.若$|a+b+c|+|a+b-c|\le1,$则$a^2+b^2+c^2<100$ D.若$|a^2+b+c|+|a+b^2-c|\le1,$则$a^2+b^2+c^2<100$ 分析:利用排除法 A中令$c=-10,a=b,a^2+a-10=0$ B中令$c=0,b=-10,a^2=10$ C中令$c=0,a=10,b=-10$ 故选D.D中$1\ge|a^2+b+c|+|a+b^2-c|\ge|a^2+a+b^2+b|=|(a+\dfrac{1}{2})^...

0
0
发表了博客
2018/04/18 08:35

MT【154】拉格朗日配方

(清华2017.4.29标准学术能力测试24) 设$x,y\in\mathbb{R}$,函数$f(x,y)=x^2+6y^2-2xy-14x-6y+72$的值域为$M$,则______ A.$1\in M$ B.$2\in M$ C.$3\in M$ D.$4\in M$ 答案:C和D. 提示:原式=$(x-y-7)^2+5(y-2)^2+3$ 练习1: 已知 $9a^2+8ab+7b^2\leq 6$,求 $7a+5b+12ab$ 的最大值. 提示: \begin{align*} 6-(7a+5b+12ab) &= \left(3a-\dfrac{7+4b}{6}\right)^2+\dfrac{236}{36}(b-\dfrac{1}{2})^2-3 \\ & \ge-3\\ \textbf{或者:...

0
0
发表了博客
2018/04/10 16:11

MT【130】Heilbronn问题

(清华THUSSAT,多选题) 平面上 4 个不同点 $P_1,P_2,P_3,P_4$,在每两个点之间连接线段得到 6 条线段. 记 $$L=\max_{1\leq i<j\leq 4}|P_iP_j|,\ l=\min_{1\leq i<j\leq 4}|P_iP_j|,$$ 对任意三点不共线的所有四点组 $P_1,P_2,P_3,P_4$,把 $\dfrac{L}{l}$ 的取值集合记为 $P$,则 A.$0.5 \in P$ B.$1 \in P$ C.$\sqrt{2} \in P$ D.$2 \in P$ 答案:C.D,构造如下: 此题是著名的"Heilbronn问题"在4个点时的情形,一般的由以下结论...

0
0
发表了博客
2019/08/13 21:24

MT【344】构造函数

(2014卓越11) 已知$f(x)$为$R$上的可导函数,且对$\forall x_0\in R$ 有$0<f^{'}(x+x_0)-f^{'}(x_0)<4x(x>0)$. (1)对$\forall x_0\in R$,证明:$f^{'}(x_0)<\dfrac{f(x+x_0)-f(x_0)}{x} (x>0)$ (2)若$|f(x)|\le1,x\in R$,证明:$|f^{'}(x)|\le 4$. 分析:(1)构造$g(x)=f(x+x_0)-f(x_0)-xf^{'}(x_0) (x>0)$. 易证$g(x)>g(0)=0$. (2)构造$h(x)=f(x+x_0)-f(x_0)-xf^{'}(x_0)-2x^2 (x>0)$易证$h(x)<h(0)=0(x>0)$ 故$f^{'}(x_0)>\dfrac{...

0
0
发表了博客
2018/06/10 21:12

MT【199】映射的个数

(2018中科大自招) 设$S=\{1,2,3,4,5\}$则满足$f(f(x))=x$的映射:$S \longrightarrow S$的个数____ 解答:由于$a\ne b$时必须满足$f(a)=b,f(b)=a$ 故按$(a,b)$的点对个数分类:0对有1个;1对$C_5^2$个;2对$\dfrac{C_5^2C_3^2}{2}$ 个;故一共有$1+10+15=26$个. 推广: 设$S=\{1,2,\cdots,n\}$则满足$f(f(x))=x$的映射:$S \longrightarrow S$的个数____ 提示:我们可以构造递推式:设$a_n$为满足此映射的个数;则 \begin{equation*} \lef...

0
0
发表了博客
2019/06/18 17:27

Multi-touch (MT) Protocol 小结

1, 两种多点触摸协议: A类: 处理无关联的接触: 用于直接发送原始数据; <br> B类: 处理跟踪识别类的接触: 通过事件slot发送相关联的独立接触更新。 2, 触摸协议的使用: A类协议: A类协议在每发送完一个接触数据包后会调用 input_mt_sync() 声明 一次数据的结束; input_mt_sync() 会发出一个 SYN_MT_REPORT B类协议: 与A类协议不同的是, B类在使用input_mt_slot()的时候会带有一个slot的参数,在每个数据包开始时 产...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
4 评论
292 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部