vue,angular,avalon.js angular这三种MVVM框架之间有什么优缺点

收藏,9.9k 浏览
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
我的问题是,还有哪些框架是MVVM模式的?
请详细介绍一下框架的特点
其实我真正想知道的是,MVVM包括什么?有什么必须具备的特征?是否必须即时?后端是否有这样的东西?
希望就MVVM展开讨论
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
1月11日 回答
使用Object.defineProperties、 VBScript、 Object.observe,纯事件驱动,兼容IE6,DOM的兼容性处理可与jQuery媲美,体积少
早期的四大MVVM框架,都有大公司引衔:
google出品,思想来自flex,IoC, 脏检测,自定义标签,受限于绑定数量,一般不能超过2000个,入门容易上手难,大量避不开的概念
原来是苹果公司的内部项目,使用Object.defineProperties, 体型庞大,MVVM只是其很少一部分
微软出品,使用函数偷龙转凤,最短编辑长度算法实现DOM的同步,兼容IE6,实现高超,但源码极其难读
微软出品,使用Object.defineProperties,一个庞大的UI库
这一两年冒出来的:
facebook出品,带来virtual dom的革命性概念,受限于视图的规模
API比较精致
使用定时间同步
使用Object.defineProperties实现同步,实现精致,但功能薄弱
最近一个月才冒出来的新东西,网易推出的JS框架,自称AngularJS与React的合体
在知乎又刚刚听说一个,用TypeScript写的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
2月27日 回答
Hi All, 既然司徒也提到了,就在这个帖子里跟下。 我是的作者, 事实上regularjs已经在产品中使用了超过半年时间, 并不算是完全的新玩意。 并且积累了数百个testcase. 目前来讲是相对稳定的。 并且也支持IE6, 当然我不觉得这是个可以放的上台面的特性。 并且由于是新事物, 目前从特性和实现上都没有什么肮脏的东西存在。 关于为什么要造这个轮子, 有兴趣可以看下
regularjs提供的所有文档都有中文版本(并且目前是以中文为主), 不要看到项目主页的英文就望而却步了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
关于mvvm是什么的问题:
我只知道有个东东叫 wpf
ps:还是忽略我的答案吧
不过针对还有什么[前端]框架:
knockout "最"早的,mvvm貌似微软的架构很早就用了
emberjs 号称"比angular能写更大的程序"
其他的搜索吧 很多...
另外推荐 avalon 作者的文章:
quora 中有关angular与emberjs的精彩辩论
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
avalon 兼容ie6 你值得拥有
至于后端,就是mvc框架,rails,django,thinkphp,都是优秀的(也是我喜欢的)mvc框架
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
1月21日 回答
难怪把avalon放第一,你自己的框架,哈哈。不错,去看看你的黑魔法
同步到新浪微博
分享到微博?
与我们一起探索更多的未知
专业的开发者技术社区,为用户提供多样化的线上知识交流,丰富的线下活动及给力的工作机会
加入只需一步
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
举报理由:
推广(招聘、广告、SEO 等)方面的内容
带有人身攻击、辱骂、仇恨等违反条款的内容
与已有问题重复(请编辑该提问指向已有相同问题)
不友善内容
答非所问,不符合答题要求
其他原因(请补充说明)
补充说明:
扫扫下载 App
SegmentFault
一起探索更多未知vue主打轻量级,仅作为MV*中的视图部分使用,优点轻量级,易学易用,缺点是大项目的时候还要配合其他框架或者库来使用,比较麻烦;AngularJS包含MV*中的所有部分,有自己的一套规则,写出来的代码结构会比较清晰,同时谷歌大厂出品,社区比较活跃,各种第三方插件比较多,缺点则是大家都在黑的性能问题,以及越来越像JSP的语法(看看AtScript的语法,越来越像Java了);Avalon没用过,听说对旧版IE支持程度较高,具体的细节可以直接艾特询问框架作者正美
以下内容是参考官方文档说明总结而来:&br&&b&Vue.js&/b&&br&Vue.js
&a data-hash=&cfdec6226ece879d2571fbcf& href=&///people/cfdec6226ece879d2571fbcf& class=&member_mention& data-editable=&true& data-title=&@尤雨溪& data-tip=&p$b$cfdec6226ece879d2571fbcf&&@尤雨溪&/a&
老师写的一个用于创建 web 交互界面的库,是一个精简的 MVVM。从技术角度讲,Vue.js 专注于 MVVM 模型的 &a href=&http://jinjiang.github.io/vuejs.org/guide/#ViewModel& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ViewModel&i class=&icon-external&&&/i&&/a& 层。它通过双向数据绑定把 &a href=&http://jinjiang.github.io/vuejs.org/guide/#View& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&View&i class=&icon-external&&&/i&&/a& 层和 &a href=&http://jinjiang.github.io/vuejs.org/guide/#Model& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Model&i class=&icon-external&&&/i&&/a& 层连接了起来。实际的 DOM 封装和输出格式都被抽象为了&a href=&http://jinjiang.github.io/vuejs.org/guide/#Directives& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Directives&i class=&icon-external&&&/i&&/a& 和 &a href=&http://jinjiang.github.io/vuejs.org/guide/#Filters& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Filters&i class=&icon-external&&&/i&&/a&。Vue.js和其他库相比是一个小而美的库,作者的主要目的是通过一个尽量简单的 API 产生可反映的数据绑定和可组合的视图组件,感觉作者的思路非常清晰。&br&优点:&br&&ol&&li&简单:官方文档很清晰,比 Angular 简单易学。&/li&&li&快速:异步批处理方式更新 DOM。&/li&&li&组合:用解耦的、可复用的组件组合你的应用程序。&/li&&li&紧凑:~18kb min+gzip,且无依赖。&/li&&li&强大:表达式 & 无需声明依赖的可推导属性 (computed properties)。&/li&&li&对模块友好:可以通过 NPM、Bower 或 Duo 安装,不强迫你所有的代码都遵循 Angular 的各种规定,使用场景更加灵活。&br&&/li&&/ol&缺点:&br&&ol&&li&新生儿:Vue.js是一个新的项目,日发布的&a href=&/yyx990803/vue/releases/tag/0.10.0-rc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&0.10.0 Release Candidate&i class=&icon-external&&&/i&&/a&版本,目前github上面最新的是&a href=&/yyx990803/vue/releases/tag/0.11.4& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&0.11.4&i class=&icon-external&&&/i&&/a&版本,没有angular那么成熟。&/li&&li&影响度不是很大:google了一下,有关于Vue.js多样性或者说丰富性少于其他一些有名的库。&/li&&li&不支持IE8:哈哈不过AngularJS 1.3也抛弃了对IE8的支持,但是 &a data-hash=&739d4aeb5456& href=&///people/739d4aeb5456& class=&member_mention& data-editable=&true& data-title=&@司徒正美& data-tip=&p$b$739d4aeb5456&&@司徒正美&/a& 老师的avalon是支持IE6+的,应该下了很多努力去优化。这一点对于那些需要支持IE8的项目就不好了,不过这也是web前端开发的一个趋势,像IE低版本就应该退出历史舞台了,通过改变我们的前端思维,而不是顺应那些使用老版本而不去升级的人。 &a data-hash=&cd86bc9090bed90757a34c& href=&///people/cd86bc9090bed90757a34c& class=&member_mention& data-editable=&true& data-title=&@玉伯& data-tip=&p$b$cd86bc9090bed90757a34c&&@玉伯&/a&老师就说过一句话,我觉得说的非常好“这年头,支持 IE6、7 早就不再是特性,而是耻辱。努力推动支付宝全面不支持 IE6、7,期待更多兄弟加盟”。&/li&&/ol&&br&&b& AngularJS&/b&&br&AngularJS最近很火,追随者也很多。&a href=&https://angularjs.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&& Superheroic JavaScript MVW Framework&i class=&icon-external&&&/i&&/a&&br&官方说得很朴素:“完全使用JavaScript编写的客户端技术。同其他历史悠久的Web技术(HTML、CSS和JavaScript)配合使用,使Web应用开发比以往更简单、更快捷“。当你学习它的时候,我相信你会被它的很多新特效所吸引。&br&优点:&br&&ol&&li&动态视图:以前从来没有想过js可以如此扩展HTML的属性,但是AngularJs做到了,它替我们静态的HTML加了很多扩展性功能,有一种让HTML由死变活的感觉。&/li&&li&完善:是一个比较完善的前端MVW框架,包含模板,数据双向绑定,路由,模块化,服务,依赖注入等所有功能,模板功能强大丰富,并且是声明式的,自带了丰富的 Angular 指令。&/li&&li&Google维护:AngularJS有Google来维护,无疑有了一个强大的后台,对于推广和维护明显比Vue.js和avalon有优势,社区也非常活泼,能够很好促进它的发展。&/li&&li&AngularJS & Ionic:&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ionic: Advanced HTML5 Hybrid Mobile App Framework&i class=&icon-external&&&/i&&/a&,这俩就是一个好基友,Ionic通过用AngularJS为了创建一个框架,最适合开发的丰富和强大的应用程序。上次于知乎答了一个相关问题&a href=&/question//answer/& class=&internal&&做webapp开发,性能和效率最好的框架和打包app平台分别是哪个? - 汤威的回答&/a&,详细可以见这里。&/li&&/ol&缺点:&br&&ol&&li&大而全:学习起来有难度,对于我来讲学习曲线很曲折,比较难理解一些。&/li&&li&推翻重写:前段时候逛社区发现AngularJS2.0会把之前的推翻重写,两个框架的改变很大,基本是两个框架了,等于是说等到2.0出来后又需要从头开始,不过又说回来, &a data-hash=&cc0145aee04dd53cc6590edd& href=&///people/cc0145aee04dd53cc6590edd& class=&member_mention& data-editable=&true& data-title=&@徐飞& data-tip=&p$b$cc0145aee04dd53cc6590edd&&@徐飞&/a&老师的&a href=&/xufei/blog/issues/8& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[翻译]有关Angular 2.0的一切 · Issue #8 · xufei/blog · GitHub&i class=&icon-external&&&/i&&/a&这篇文章很好说明了AngularJS2.0的变化。&/li&&li&不支持IE8以下,貌似2.0变得只支持移动端了,等到出来后再看吧。&/li&&/ol&&br&&strong&Avalon.js&/strong&&br&Avalon.js是 &a data-hash=&739d4aeb5456& href=&///people/739d4aeb5456& class=&member_mention& data-editable=&true& data-title=&@司徒正美& data-tip=&p$b$739d4aeb5456&&@司徒正美&/a& 老师所写的个简单易用迷你的MVVM框架,它最早发布于,为解决同一业务逻辑存在各种视图呈现而开发出来的。常常可以看到老师推广他的Avalon.js,出了很多教程,无疑对国内学习Avalon.js的人提供了巨大方便。&br&&br&优点&br&&ol&&li&使用简单,在HTML中添加绑定,在JS中用avalon.define定义ViewModel,再调用avalon.scan方法,它就能动了!&/li&&li&兼容到 &strong&IE6&/strong& (其他MVVM框架,KnockoutJS(IE6), AngularJS(IE9), EmberJS(IE8), WinJS(IE9) ),另有avalon.mobile,它可以更高效地运行于IE10等新版本浏览器中&/li&&li&没有任何依赖,不到5000行,压缩后不到50KiB&/li&&li&支持管道符风格的过滤函数,方便格式化输出&/li&&li&局部刷新的颗粒度已细化到一个文本节点,特性节点&/li&&li&要操作的节点,在第一次扫描就与视图刷新函数相绑定,并缓存起来,因此没有选择器出场的余地。&/li&&li&让DOM操作的代码近乎绝迹&/li&&li&使用类似CSS的重叠覆盖机制,让各个ViewModel分区交替地渲染页面&/li&&li&节点移除时,智能卸载对应的视图刷新函数,节约内存&/li&&li&操作数据即操作DOM,对ViewModel的操作都会同步到View与Model去&/li&&li&自带AMD模块加载器,省得与其他加载器进行整合。&/li&&/ol&缺点&br&缺点可以看这里&a href=&/question//answer/& class=&internal&&相比Angular,Avalon有什么缺点呢? - 司徒正美的回答&/a&&br&终于答完了,还有一些我没有找到的还有错误的希望大家指出。
以下内容是参考官方文档说明总结而来:Vue.jsVue.js
老师写的一个用于创建 web 交互界面的库,是一个精简的 MVVM。从技术角度讲,Vue.js 专注于 MVVM 模型的
层。它通过双向数据绑定把
层连接了起来。实际的 DOM 封装和…
vue偏轻量,适合移动端,ng适应pc端,avalon适合兼容老浏览器的项目。
vue偏轻量,适合移动端,ng适应pc端,avalon适合兼容老浏览器的项目。收藏,2.2k 浏览
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
最近在看mvvm框架,感觉双向数据绑定这块很是开阔思路,但是这些框架代码模块化都很零碎,看起来很跳跃。。有没有大神研究过能说明白一下,尽量少阐述概念,能说其中一个就行~
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
4月17日 回答
推荐《build your own angularjs》,这儿有讲解脏检测部分的
以angular为例,忽略所有的细节,只讲大概的原理
html&div class="{{foo}}" &&/div&
angular首先会分析这段代码,在当前的scope下,执行如下代码:
jsscope.watch(
//watcher function, 返回模板分析出的获取值表达式
function(scope){
return scope.foo
//listener function,值表达式对应的渲染UI的函数,此处为伪代码
function(newValue, oldValue, scope){
div.class = newValue
随后执行scope.$digest(),这个$digest函数检测scope上的所有watcher function返回值是否有变更,若有,则执行对应的listener function,将新的值渲染到UI上去
检测值变更的方式很多,angular用的脏检测性能存在问题,趋势是使用Object.defineProperty设置setter/getter或Object.observe这样更优雅的方式
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
4月6日 回答
简单来说下检测数据改变:
angular,就是利用脏检查机制,保留两份,一份旧的一份新的,然后做检查;这样就能知道数据是否改变了。
Avalon和vue:都是使用的Object.defineProperty来实现的,然后定义的时候设置set get访问器,每次数据读取设置都需要通过访问器,然后检查是否改变;其中avalon对于不支持Object.defineProperty的采用了VBScript模拟实现。
然后就是和页面上的view中的数据联动了。angular会首先parse页面,然后编译compile,然后link。其中会有指令啊 表达式啊就是在这个过程中实现了联动。而avalon也差不多,只是改叫扫描了,vue也类似。
分享到微博?
与我们一起探索更多的未知
专业的开发者技术社区,为用户提供多样化的线上知识交流,丰富的线下活动及给力的工作机会
加入只需一步
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
举报理由:
推广(招聘、广告、SEO 等)方面的内容
带有人身攻击、辱骂、仇恨等违反条款的内容
与已有问题重复(请编辑该提问指向已有相同问题)
不友善内容
答非所问,不符合答题要求
其他原因(请补充说明)
补充说明:
扫扫下载 App
SegmentFault
一起探索更多未知当前访客身份:游客 [
当前位置:
Avalonjs 1.4.6 发布,迷你易用的 MVVM 框架
Avalonjs 1.4.6 发布,此版本更新内容如下:修复对flexbox的CSS属性支持fix IE6-8 VBSCRIPT 对象的D,P属性遍历不出来的BUGfix visible BUG去掉ms-repeat过火的优化fix ms-html属性绑定错误生成text binding的BUGfix解决$model层次依赖丢失公开openTag和closeTagfix ms-class BUG重构parseExprProxyfix parser在repace方法中读取RegExp.rightContext时在世界之窗4.3浏览器 报错的BUG更多内容请看。avalon是一个功能强大,体积小巧的MVVM框架。它遵循“操作数据即操作DOM”的理念,让你在代码里基本见不到一点DOM操作代码。DOM操作全部在绑定后,交给框架处理。相当后端有了ORM一样,不用你手写SQL,提高生产力!
Avalon 的详细介绍:
Avalon 的下载地址:
想通过手机客户端(支持 Android、iPhone 和 Windows Phone)访问开源中国:
旧一篇: 3个月前
新一篇: 3个月前
相关讨论话题
你也许会喜欢
争取超过angular
2楼:一线码农
与内容无关的评论将被删除,严重者禁用帐号
本周热点资讯
本站最新资讯

我要回帖

更多关于 avalon angular 的文章

 

随机推荐