Vue.js 很好,但会比 Angular 或 React 更好吗
1个回答
2017-05-30
展开全部
引用一段vuejs官方的解释。vue对比其它框架Angular选择Vue而不选择Angular,有下面几个原因,当然不是对每个人都适合:在API与设计两方面上Vue.js都比Angular简单得多,因此可以快速地掌握它的全部特性并投入开发。Vue.js是一个更加灵活开放的解决方案。它允许以希望的方式组织应用程序,而不是任何时候都必须遵循Angular制定的规则。它仅仅是一个视图层,所以可以将它嵌入一个现有页面而不一定要做成一个庞大的单页应用。在配合其他库方面它给了更大的的空间,但相应,也需要做的架构决策。例如,Vue.js核心默认不包含路由和Ajax功能,并且通常假定在应用中使用了一个模块构建系统。这可能是最重要的区别。Angular使用双向绑定,Vue也支持双向绑定,不过默认为单向绑定,数据从父组件单向传给子组件。在大型应用中使用单向绑定让数据流易于理解。在Vue.js中指令和组件分得更清晰。指令只封装DOM操作,而组件代表一个自给自足的独立单元——有自己的视图和数据逻辑。在Angular中两者有不少相混的地方。Vue.js有更好的性能,并且非常非常容易优化,因为它不使用脏检查。Angular,当watcher越来越多时会变得越来越慢,因为作用域内的每一次变化,所有watcher都要重新计算。并且,如果一些watcher触发另一个更新,脏检查循环(digestcycle)可能要运行多次。Angular用户常常要使用深奥的技术,以解决脏检查循环的问题。有时没有简单的法来优化有大量watcher的作用域。Vue.js则根本没有这个问题,因为它使用基于依赖追踪的观察系统并且异步列队更新,所有的数据变化都是独立地触发,除非它们之间有明确的依赖关系。唯一需要做的优化是在v-for上使用track-by。有意思的是,Angular2和Vue用相似的设计解决了一些Angular1中存在的问题。ReactReact.js和Vue.js确实有一些相似——它们都提供数据驱动、可组合搭建的视图组件。当然它们也有许多不同。首先,内部实现本质上不同。React的渲染建立在VirtualDOM上——一种在内存中描述DOM树状态的数据结构。当状态发生变化时,React重新渲染VirtualDOM,比较计算之后给真实DOM打补丁。VirtualDOM提供了一个函数式的方法描述视图,这真的很棒。因为它不使用数据观察机制,每次更新都会重新渲染整个应用,因此从定义上保证了视图与数据的同步。它也开辟了JavaScript同构应用的可能性。Vue.js不使用VirtualDOM而是使用真实DOM作为模板,数据绑定到真实节点。Vue.js的应用环境必须提供DOM。但是,相对于常见的误解——VirtualDOM让React比其它的都快,Vue.js实际上性能比React好,而且几乎不用手工优化。而React,为了最优化的渲染需要处处实现shouldComponentUpdate和使用不可变数据结构。在API方面,React(或JSX)的一个问题是,渲染函数常常包含大量的逻辑,最终看着更像是程序片断(实际上就是)而不是界面的视觉呈现。对于部分开发者来说,他们可能觉得这是个优点,但对那些像咱一样兼顾设计和开发的人来说,模板能让自己更好地在视觉上思考设计和CSS。JSX和JavaScript逻辑的混合干扰了自己将代码映射到设计的思维过程。相反,Vue.js通过在模板中加入一个轻量级的DSL(指令系统),换来一个依旧直观的模板,且能将逻辑封装进指令和过滤器中。React的另一个问题是:由于DOM更新完全交给VirtualDOM管理,当想要自己控制DOM时就有点棘手了(虽然理论上可以做到,但是这样做就本质上违背了React的设计思想)。如果应用需要特别的自定义DOM操作,特别是复杂时间控制的动画,这个限制就很讨厌。在这方面,Vue.js更灵活,有许多用Vue.js制作的FWA/Awwwards获奖站点。个人推荐就是,vue的入门简单,也有很多公司在用,不愁没人要,react入门难,函数式编程吓人啊。。但是真很好用。。angular不推荐学了。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询