使用Vue等框架的首要原因是为了开发效率,还是减少DOM操作的性能损失?


很多半吊子的程序员开口就喜欢谈论性能 。动不动就是“这个框架性能不行 。不如原生XX快”等等 。如何评价这种说法呢?硬要说的话 。速度确实是一个非常重要的因素 。但是很多项目其实并不那么追求速度 。大部分情况下 。开发效率这个因素都要大于项目的运行速度 。要明白 。人的效率永远应该是第一需求 。
前端开发也是这样 。其实原来大家都用jQuery这些东西 。简单粗暴 。直接操作界面 。想实现什么功能直接撸就完事了 。但是在项目逐渐复杂起来之后 。这样的开发方式就会出现一个问题:代码组织度极低 。项目可维护性差 。特别是当项目中很多页面有层级关系时候 。很容易把自己绕晕 。
因此Vue、React、Angular等框架应运而生了 。他们利用MVVM等设计模式 。在更高层级抽象页面开发逻辑 。使用他们开发不再需要直接操作DOM了 。而且相比于传统的开发方式 。这些前端框架更加注重“数据流” 。现在不应该把网页看做是一个网页 。而是将它看做是一个网页形式呈现的应用 。这样将数据和行为分开以后 。前端开发也更加清晰了 。这也是前端发展的一个重要标志 。
虽然这些框架使用虚拟DOM等技术 。相比于直接操作DOM要慢一点 。但是因为采用了合理的抽象 。因此开发效率是远远超过传统前端的 。试想一下 。这两种方法开发出来的项目运行效率差0.5% 。但是传统开发要多一倍的bug 。要是你的话 。你会选哪种呢?
其他观点:
首先更正下 。VUE不是一个框架而是一个js库 。他就像jquery一样是用来方便操作dom的 。没人说jquery是框架吧?个人感觉 。使用vue,react主要还是为了前端单页程序开发的工程化 。大家都知道手机web程序使用单页的优势 。如果使用jquery或纯js开发单页程序 。工程化时肯定也会涉及到类似vue或react这种将模板 。js 。css模块化的问题 。现在 。有了vue,react 。你就不用自己进行模块化了 。因此提升开发效率是一定的 。至于能否提升性能 。这个不好说 。
其他观点:
【使用Vue等框架的首要原因是为了开发效率,还是减少DOM操作的性能损失?】目前vue的基本思想都是以数据作驱动 。先解析成虚拟的dom结构(就是一串json) 。然后再用diff算法进行最优解析 。最后才变成真正的html 。这里面数据的监听 。解析 。过滤都由vue的框架完成 。开发者只需要写最简单的样式模版进行vue的语法绑定 。然后按照业务逻辑对数据本身进行操作 。模版引起就自动相对最优的渲染 。无需进行繁杂的dom字符串拼接操作 。综上所述vue减少了dom操作的同时也极大的促进了开发效率 。除此之外 。vue提倡组件化的思想 。相同逻辑的模块在项目中进行特定的封装 。进一步提升开发效率 。当然还有挺多的东西没讲到 。倒是也算大概回答这个问题了

    推荐阅读