迷你MVVM框架 avalonjs 沉思录 第1节 土耳其开局
#cnblogs_post_body p{
    text-indent:2em; margin-top: 1em;
   }
正如一切传说的开端那样,有一远古巨神开天辟地,然后就是其他半神喧宾夺主。我们对最巨贡献与创建力的远古巨神懵懂不知,却对巫师们的话语津津乐道。这同样也是我们前端的现实。
MVVM是来自.NET,另一个遥远的界域。前端,相对于后端,怎么看都是蛮夷之地。JS这个肩负着前端一切交互工作的语言,竟然被视为恶魔,屡屡被屏蔽禁用。些微可用的脚本,变量与函数没有组织地野蛮生长着,直到JAVA的传教士为它带来类与库。
很长一段时间,人们把类看作是福音。明知这是两种不同语言, 正如Christ你怎么念也念不成“基督”,因此真正与类配套使用的接口怎么也推销不出去,更甭论什么设计模式,IOC了。
没有办法,人口太少了,想点技能树,必须要到达某一上限。这经历了Prototype与jQuery这两个阶段,尤其是后者,前端终于有足够人力来研究加载器,MVC,MVP,路由器这些非常炫的东西,MVVM只是这潮流的一部分。
我们合计一下时间,JS前十年(1995-2005)在干什么了,基本上什么也没有,而同期JAVA在诞生后,在大公司的支持下高唱猛进,忙着做自己的标准库。其他出名的语言也差不多这样,标准库基本立即进入里程。而JS刚出生就被山寨(JScript),此外被受到VBScript, ActionScript的威胁。
第二个时期比较很短,2005-2008, 那时世界发生大事了,伟大的DDH大神创建了rails,而作为rails的子项目Prototype.js立马把JS界那些小喽罗吓呆了。占领了80%市场的Prototypejs无论是在语言底层或DOM上都有大量建树,降低了入门门槛。这像盛唐之前的隋朝一样,打下很好的架子。同期,JAVA的Spring打遍天下无敌手。
第三时期,是jQurey引衔的。这个不用多展开,野心膨胀的JSer开始玩其他语言的人玩剩的东西了。模块化,加载器,MVC,各种字眼满天飞。MVC在一两年内跑马灯时换了好几代,先是javascriptMVC,然后是backbone,与.NET进得近的人还知道有个叫knockout的东西,ruby的大神跨界过来搞ember,2013年人们也听到一个叫angular的高富帅框架,其爹是谷歌,于是2014年就基本是它的新闻了。就像jQuery初期,我们知道有mootools这样有力的竞争对手,现在都不知哪里去。
这是一个新旧交替的时期,代表DOM操作的极致的jQuery与想隐藏DOM操作的MVVM框架发生冲突了。不禁让我想起了《土耳其开局》的影评——
那是一场发生在葵地里的战争,华丽得让人目眩:漫无边际的一片金黄色的向日葵,身着土黄色的俄军士兵,头戴红帽身着蓝色军服的土军士兵,双方在向日葵里时隐时现,相互追杀,枪炮的硝烟遮蔽了湛蓝的天空。
那也是一场古典的战争,发生在两个没落强国之间的战争,都有着华丽的外表。因为他们都身处欧洲的边缘,已有了华丽的军服,先进的枪炮;两个欧洲曾经的霸主,现在已是强弩之末,战争只能靠人来堆积,所以是用现代的武器所打的冷兵器之战。
双方在巴尔干及黑海之间,你来我往,打得还颇热闹。一共打了二百多年,一直打到第一次世界大战,两国之间的战争大的就有十一次之多,影片中所描写的战争大约应该是第十次俄土之战了。至此以后,强大的奥斯曼帝国走向衰亡,取得胜利的沙皇俄国在一战之中也迅即倒塌。
……
时下的jQuery可以看作是土耳其的化身,它是可以自豪,如同土耳其以它那口径则高达30英寸(约合762mm)的乌尔班巨炮征服君士坦丁堡一样,振聋发聩。
angular是沙俄,财大气粗,暴兵极快, 比虫族更加虫族。
但DOM操作终归要退居幕后,无论你做得多好多精,而jQuery也像进化到尽头,最后在github上没什么大动作了。
而angular虽然如日中天,但它最大的要害始终没有解决——上手难。在浮燥的前端界,JSer的忠诚度是极其低。可能昨天鼓吹backbone的那帮人,今天就是angular的免费水军。
时局难料,纷战不已,这样一个时代有着无尽的可能性。未来的王者可能在这边角上虎视眈眈。
它继承了远古巨神的衣钵,虽然不像其他半神那样恬噪,但也会发出自己的声音。那是远离尘世的乐土,avalon。它在悄悄积聚着自己的力量。
迷你MVVM框架 avalonjs 沉思录 第1节 土耳其开局的更多相关文章
- 迷你MVVM框架 avalonjs 沉思录 第3节 动态模板
		
模板的发明是编程史上的一大里程碑,让我们摆脱了烦锁且易出错的字符串拼接,维护性大大提高. 都在JSP,ASP时代,人们已经学会使用include等语句,将多个页面片断拼接成一个页面. 此外,为了将数据 ...
 - 迷你MVVM框架 avalonjs 沉思录 第2节 DOM操作的三大问题
		
jQuery之所以击败Prototype.js,是因为它自一开始就了解这三大问题,并提出完善的解决方案. 第一个问题,DOM什么时候可用.JS不像C那样有一个main函数,里面的逻辑不分主次.但JS是 ...
 - 迷你MVVM框架 avalonjs 0.95发布
		
迷你MVVM框架 avalonjs 0.95发布 本版本最主要的改进是ms-with 深层绑定的实现,至少,avalon1.0所有重要的feature已经开发完毕,之后就是小补小漏,性能优化了. ms ...
 - 迷你MVVM框架 avalonjs 0.85发布
		
迷你MVVM框架 avalonjs 0.85发布 本版本对循环绑定做了巨大改进,感谢@soom, @limodou, @ztz, @Gaubee 提供的大量测试文件. fix scanNodes, 在 ...
 - 迷你MVVM框架 avalonjs 0.82发布
		
迷你MVVM框架 avalonjs 0.82发布 本版本最大的改进是启用全新的parser. parser是用于干什么的?在视图中,我们通过绑定属性实现双向绑定,比如ms-text="fir ...
 - 迷你MVVM框架 avalonjs 1.3.9发布
		
本次升级,avalon改进了许多内部方法,大大提升性能,并且带来异步刷新视图的新功能. ms-html内部不再使用异步 head元素中的avalon元素加入ms-skip指令 重构计算属性,现在超级轻 ...
 - 迷你MVVM框架 avalonjs 1.3.8发布
		
avalon1.3.8主要是在ms-repeat. ms-each. ms-with等循环绑定上做重大性能优化,其次是对一些绑定了事件的指令添加了roolback,让其CG回收更顺畅. 重构ms-re ...
 - 迷你MVVM框架 avalonjs 1.3.7发布
		
又到每个月的15号了,现在avalon已经固定在每个月的15号发布新版本.这次发布又带来许多新特性,让大家写码更加轻松,借助于"操作数据即操作DOM"的核心理念与双向绑定机制,现在 ...
 - 迷你MVVM框架 avalonjs 1.3.6发布
		
本版本是一次重要的升级,考虑要介绍许多东西,也有许多东西对大家有用,也发到首页上来了. 本来是没有1.36的,先把基于静态收集依赖的1.4设计出来后,发现改动太多,为了平缓升级起见,才减少了一部分新特 ...
 
随机推荐
- AutoFac IoC DI 依赖注入
			
AutoFac IoC DI 依赖注入 记录点点滴滴知识,为了更好的服务后来者! 一.为什么使用AutoFac? 之前介绍了Unity和Ninject两个IOC容器,但是发现园子里用AutoFac的貌 ...
 - JS类型转换之valueOf和toString详解
			
最近群里有人发了下面这题: 实现一个函数,运算结果可以满足如下预期结果: add(1)(2)// 3 add(1,2,3)(10)// 16 add(1)(2)(3)(4)(5)// 15 对于一个好 ...
 - bzoj2163
			
题解: 拆点网络流 然后用总和-最大流 代码: #include<iostream> #include<cstring> #include<cstdio> #inc ...
 - HTML5安全:CORS(跨域资源共享)简介【转】
			
前言:像CORS对于现代前端这么重要的技术在国内基本上居然很少有人使用和提及,在百度或者Google上搜索CORS,搜到的中文文章基本都是 另外一种卫星定位技术CORS的介绍,让我等前端同学情何以堪( ...
 - Class.getResource()方法的使用
			
我们之前使用路径总是有点不知道怎么用,发现别人使用Class.getResource()方法,好像挺不错的样子.于是看看博客,简单学习下. 参考链接:http://blog.csdn.net/lcj8 ...
 - CS231n课程笔记翻译6:神经网络笔记 part1
			
译者注:本文智能单元首发,译自斯坦福CS231n课程笔记Neural Nets notes 1,课程教师Andrej Karpathy授权翻译.本篇教程由杜客翻译完成,巩子嘉和堃堃进行校对修改.译文含 ...
 - 解决eclipse maven install 造成JVM 内存溢出(java.lang.OutOfMemoryError: Java heap space)
			
maven install 报错信息: The system is out of resources.Consult the following stack trace for details.jav ...
 - HDU1501 dfs
			
像这样有维度的一定要记忆化啊........... #include<cstdio> #include<cstdlib> #include<iostream> #i ...
 - BZOJ4025: 二分图【线段树分治】【带撤销的并查集】
			
Description 神犇有一个n个节点的图.因为神犇是神犇,所以在T时间内一些边会出现后消失.神犇要求出每一时间段内这个图是否是二分图.这么简单的问题神犇当然会做了,于是他想考考你. Input ...
 - flask第二十一篇——练习题
			
自定义url转化器 实现一个自定义的URL转换器,这个转换器需要满足的是获取从多少到多少的url,例如,你输入的地址是http://127.0.0.1:8000/1-5/,那么页面返回[1,2,3,4 ...