- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
前端MVVM的应用.ppt
前端MVVM的应用
By 司徒正美
国外比较流行的MVVM
knockout
ember
WinJS
kendoui
angular
montagejs
/
/
/
/
/
/
官网链接
目前好像就我一个人在搞?
国内的MVVM
avalon
WHY?
世界总是在进化
Prototype.js 对语言本身进行修复
jQuery 对DOM进行跨浏览器兼容性处理
Backbone 为前端引入“架构”的概念,对絮乱的JS代码进行组织
MVVM —— 。。。。。
立足的时代不同
面临的问题不同
Prototype
JS性能奇差,原生函数数量缺乏, 语言的特征尚待发掘
Ftotype.bind的发明, 类的模拟, AJAX应用
jQuery
Firefox借尸还运魂,致力于为JS添加更多新方法,新特征。
浏览器商划分为IE与W3C两大阵营,DOM兼容变得可行而迫切。
brower sniff 淡出 feture detect流行,人们开始发掘DOM的宝藏。
jQuery时代的问题
过度于依赖选择器频繁遍历DOM树;
然后利用DSL式智能API频繁操作元素;
DOM树就像一片变得越来越肥沃的土地;
jQuery插件就像一辆辆耕作的拖拉机;
于是出现撞车问题;
后jQuery时代的问题
移动端的崛起
手机浏览器的性能与IE6持平,各种奇异的BUG,
jQuery对插件管理的失控——$.sub的出现与移除
Backbone ——后端MVC的简单移植
引入类管理
引入路由系统
引入历史管理
依重事件代理弥消前端模板对DOM树结构的破坏
既要处理业务逻辑
又要随时同步视图
还要处理AJAX带来的历史管理问题
看似什么都做,但什么也没做
代码越写越多
三个小和尚被一大堆SB整死的故事重演
大失败!
此时期的其他实践
前端模板的流行
加载器
由于Deferred发展出来的Promise规范
字符串拼接
requireJS 与 seajs
依赖管理, 并行加载, 别名机制,shim机制,包机制。。。
数以百计的前端模板
不使用with: mmTemplate, artTemplate, handlebars, mustache, juicer, doT
低逻辑: mustache
使用with: tmpl, yayaTemplate, aceTemplate, underscoreTemplate ,kissyTemplate
不使用定界符:aceTemplate
异步管理
回调地狱
异步中的出错捕获
Mochikit Deferred
Dojo Deferred
JSDeferred (巅峰之作, 包含未来Promise的所有隐藏元素)
jQuery Deferred(不完全的Promise)
When.js
Q.js
RSVP
mmDeferred
Deferred的要求,异常总是被捕获,失败了转入出错列队,处理后继续转回正常列队第一次触发总是异步的
/defer/defer.html
Promise/A的要求:触发回调的对象Deferred 与接受回调的对象Promise要分离,存在then方法来接受正常回调,出错回调与通知回调,then位于Promise上,并总返回新的Promise
因此最佳的实践由Deferred对象构成三条单链
而jQuery是三条函数数组,重用一个Promise,只是改变状态,并在抛错时死无全尸
前端模板,加载器, Deferred/Promise
维护性
但最关键的问题没有解决
JS代码与HTML的强耦合
JS代码必须在页面出来才能动手
眼花缭乱的选择器
write less do more ? 堆得快,死得快 ? 豆腐渣工程
MVVM的产生
微软2005年左右发明 WFP
1. 低耦合:视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
2. 可重用性:你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
3. 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xaml代码。
4. 可测试:界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
对VM的操作成为JS编程的核心
var M= {
firstName: “”,
lastName: “”,
fulllName: “”
}
knockout
function ViewModel(){
您可能关注的文档
- 共享式网络部署方式.ppt
- 共青团信息第四期-太原理工大学.doc
- 关于2016正考须知.doc.doc
- 关于STEP函数得问题.doc
- 关于塑造良好形象,并不是说在他人面前保持着完美的无懈可击的形象.doc
- 关于家居害虫的灭治.doc
- 关于康托对角线法推导问题的进一步解释及说明.doc
- 关于日语系小学期活动之商务礼仪讲座的综述-沈阳师范大学外国语学院.doc
- 关于算法的教学建议.doc
- 关于自2010年10月起,期末考试使用答题卡的说明各学习中心、各位.doc
- 礼乐中学2026年临聘教师招聘备考题库及答案详解一套.docx
- 湖北三峡职业技术学院2026年“招才兴业”人才引进公开招聘13人备考题库及答案详解参考.docx
- 福建(泉州)先进制造技术研究院2026年校园招聘备考题库完整参考答案详解.docx
- 湛江市邮政管理局2026年招聘劳务派遣制工作人员备考题库及参考答案详解1套.docx
- 福州市医疗保障局2026年晋安医保局劳务派遣工作人员的招聘备考题库完整参考答案详解.docx
- 毕节市公安局2025年面向社会公开招聘第二批警务辅助人员备考题库完整参考答案详解.docx
- 桦川县人民法院2026年公开招聘聘用制辅警备考题库完整参考答案详解.docx
- 莆田市公安局涵江分局2025年度公开招聘警务辅助人员备考题库有答案详解.docx
- 校园招聘国家知识产权局专利局专利审查协作广东中心2026年度专利审查员公开招聘备考题库及1套完整答案.docx
- 楚雄州教育体育局直属学校2025年公开选调工作人员备考题库及参考答案详解一套.docx
最近下载
- 《陆上风力发电机组钢混塔架施工与质量验收规范》编制说明.pdf VIP
- 苏J/T16-2004(二)建筑外保温构造图集(二)挤塑聚苯乙烯泡沫塑料板外保温系统.docx VIP
- 公路水运施工企业安全生产管理人员培训课件.ppt
- 华东交通大学2010—2011学年考试卷《复变函数》期末试卷.doc VIP
- 南京开通KT820数控车床说明书.pdf VIP
- 县卫生健康局副局长2025年度民主生活会个人对照检查材料(五个带头).docx VIP
- 班会少年强则国强.ppt VIP
- 《版权所有侵权必究》课件.ppt VIP
- 《SWOT分析法介绍》课件.ppt VIP
- 2023-2024学年河南省郑州市郑东新区四年级(上)期末数学试卷(全解析版).docx VIP
原创力文档


文档评论(0)