看到有朋友在问NoDom和Vue的区别,我在这里做一个较完整的回复,只能是较完整,因为我对Vue及其源码了解并不深刻。
1、框架组成而言,NoDom强调模块,NoDom整个App就是一个大模块;Vue强调组件,它是把组件装到App中,而组件(component)和插件(plugin)往往会被很多开发者混淆;
2、框架的核心性能在于编译和渲染,Vue的编译没有了解,但是渲染的方式大概是在虚拟dom中渲染后再去和dom树中的节点进行对比,有修改则替换,这种做法的好处是简单而稳定。NoDom的渲染是分两步,首先判断该view对应的数据对象是否发生改变,改变了才进行渲染;其次是判断指令和表达式对应的数据项是否发生改变,改变了的项才会在dom树中更新。
3、数据完整性,Vue的数据使用很灵活,而根据多年开发经验,开发者往往会忽略web端的数据完整性,带来灵活的同时,也埋下了隐形的bug,NoDom严格执行x-model分层模型,任何一个view都只能使用当前x-model指定的数据对象下的数据项,也就是严格保证了数据的完整性。
4、NoDom使用更简单,举例来说,Vue的img src使用是:src,而NoDom使用表达式来获取图像路径,NoDom的只增加了 x-指令、 e-事件和{{表达式}},并不需要用户掌握更多的写法和技巧,路由(router)也是指令用法,而Vue使用相对复杂一些。
5、插件集支持,NoDom计划今年底之前发布完整的iphone插件集,便于开发者使用,目前已发布chart插件和msgbox插件。
6、当然区别还有很多,如果要仔细回答,我必须去把Vue的源码看一遍了 : )。
7、很多人看到NoDom框架都会问和Vue的区别,其实在开发前,我看Angular比较多,Vue是后期看了一些,总的说来,Angular、Vue、Avalon、NoDom都是增强原生Dom的表现力,主要采用指令和表达式。Angular给了大家一个新的方向,我们都从它那儿得到了很大的启发(向Angular致敬),后期设计过程中,主要精力还是在性能优化上,然后在框架中加入自己的一些经验,以便于开发者使用。看我的座右铭:尊重并勇于挑战。