美文网首页
从jQuery到Vue

从jQuery到Vue

作者: HelloJames | 来源:发表于2019-05-18 16:42 被阅读0次

为什么要从jQuery转到Vue?

原因1:

微服务化后, 很多站点都开始转前后端分离. 此时单页面应用的需要越来越多.
有些复杂的单页面应用, 交互复杂性很高, 代码量成倍增长

当然, 我们还是可以用jQuery来开发单页面应用, 其一般性过程是:

  • 渲染视图
  • 获取数据
  • 绑定事件函数
  • 更新视图
  • 设计路由
  • 状态机管理(高级)

jQuery可以通过使用Vuex/Mobx/Redux做状态管理, 根据用户的交互动作触发不同的action, 更新状态.

既然如此, 那为何还要转到Vue技术栈呢?

要想完成上面那些, 不亚于重新开发一套框架, 制定一套规范, 其工作量和难度可想而知. 从项目交付目标和代码维护(编码规范的学习和遵循也是很大的成本)的角度来看, 不推荐这么做.

原因2:

项目组要求统一技术栈

项目组要求统一技术栈肯定是好处的, 比如:

  • 降低团队学习成本;
  • 完善技术生态,技术方案提取和复用,提高开发效率。

Vue技术栈中很多都是经过实战考验的, 官方推荐工具链:

  • 路由: vue-router
  • 状态管理: Vuex
  • 构建工具脚手架: vue-cli
  • 开发者工具: vue-devtools
  • IDE支持: vscode + Vetur
  • 静态检查: Eslint + eslint-plugin-vue
  • 单元测试: Jest + vue-jest + vue-test-utils
  • 文档/静态站生成: VuePress

使用Vue可以借助一些工具来规范代码写法, 使用jQuery代码的写法可能有多种变化, 难以规范代码写法.

原因3:

追随前沿潮流

技多不压身, 多学一门技术也不是坏事!

相比较于其他框架, 如React, Angular, Vue的学习曲线还是比较平滑的.

为什么选择Vue?

  • 相比React, Angular等, Vue的确更容易入手. 如果有HTML/CSS/JavaScript基础, 学习几天或一周就可以开始做项目了.
  • 另一个原因, 应该是Vue有良好的中文文档支持吧, 应该国人使用Vue的会很多.

jQuery与Vue有哪些不同?

1. jQuery是事件驱动, Vue是数据驱动

2. 使用jQuery会经常操作DOM, 而Vue的开发中应该避免操作DOM.

Vue最终呈现的DOM, 都是由数据驱动, 动态生成virtual DOM, 并进行diff以尽量最小化的资源消耗更新DOM.

3. Vue强调组件的概念, jQuery则无

  • Vue强调组件的概念, 把相关逻辑处理的html/css/js部分封装起来, 复用很方便, 开发效率成倍提高.
  • jQuery虽然没有组件的概念, 但是也可以借助第三方插件再约定一些规范, 同样也可以完成类似于Vue组件的功能, 但并非原生支持.

4.jQuery是非响应式的, 而Vue是响应式的,这也是其的强大之处

  • 虽然jQuery是非响应式的, 但也有一些基于jQuery而开发的响应式框架, 如: backbonejs
  • Vue虽然是响应式的, 但在低版本的浏览器中兼容性没有jQuery好, 如: IE8及以下

5. jQuery适合于交互简单的页面,Vue适合于交互复杂的页面

  • jQuery强调事件驱动, 行为和结果一对一关联. 如果单页应用交互稍复杂, 事件与元素的绑定关系将会复杂如蜘蛛网状.
  • Vue强调数据驱动, 只要数据发生变化, 就会呈现相应的视图, 非常适合单页应用.

jQuery转Vue常犯错误

1. 操作DOM

jQuery程序员开发时, 经常写的代码可能是操作DOM, 或是绑定事件等.
但在Vue中进行开发时, 应禁止操作DOM, 特定是更新DOM.

大家应该转变思维, 通过数据驱动DOM的变化.

2. 给DOM元素设置id属性, 方便选择

在使用jQuery开发时, 这种情况也是要避免的, id在一个页面中应该只存在一份. 但在Vue中开发时, 更多强调的是组件复用, 如果一个页面同时存在两个相同的组件, 也将意味着有两个相同的id属性值的元素, 那代码的准确性就难以预知了.

在Vue中进行开发时, 如果想要组件内特定的元素, 应该给元素设置ref属性值, 然后在组件内通过this.$refs.refValue来取得Element元素对象.

3. 迷信Vue的局部样式

Vue组件中可以写局部样式, 但它也不是万能的.
实现的原理也很简单, 无非是复用CSS元素选择器权重来进行控制.

4. 滥用Vuex

何时应该使用Vuex呢? 其实也没有固定的标准, 但有一条是可以明确的, 当你的项目很复杂, 到了不得不用Vuex来解决时, 就应该考虑用Vuex了.

大部分场景下, 使用组件的data属性就可以了.

5. 滥用EventBus

EventBusg事件总线消息订阅发布通信机制, 和jQuery的事件绑定很相似. 原先写jQuery的同学可能会用起来很顺手. 但是, 不推荐! 大家应该还是尽量用数据驱动的思维来编码. 除非在一些特殊的场景, 不得不用.

6. Vue工程中使用jQuery

在Vue工程中能不能用jQuery? 关于此的讨论也是众说绘云, 但有一点请大家注意: 如果一定要使用jQuery, 禁止操作DOM.

个人建议, 在Vue工程中, 应避免使用jQuery, 除非万不得已. 因为在Vue中使用了jQuery之后, 就可能会有很多原先使用jQuery的同学, 在Vue的外衣下, 继续用jQuery开心的编码, 埋雷! 不利于大家数据驱动的编码思维的养成.

7. 没有及时清理第三方插件生成的实例或事件绑定清除

1. 第三方插件生成的实例没有及时销毁

场景1: 在Vue组件中会使用到echart, 但并没有在Vue 的生命周期钩子函数beforeDestory / Destoryed中及时销毁生成的echart实例.

2. 绑定的window没有及时清除

场景1: 组件中有时可能需要对windowresize等事件做监听处理, 但在组件销毁时并没有清理, 这样会导致监听的事件在组件销毁后还会被触发, 并可能运行出错.

场景2: 利用rx.js实现事件订阅/发布, 但在组件销毁时没有销毁listener. 由此, 监听的事件处理函数还是继续执行, 并可能运行出错, 且问题难以排查.

场景3: 使用setTimeout&setInterval定时请求数据等, 但在组件销毁时没有做处理, 也会导致定时器会继续执行, 并可能运行出错, 且问题难以排查.

8. watch/computed

二者都会监听数据的变化, 但是有所不同:

  • computed, 惰性触发, 即数据有变化时才会触发变化. computed只能读取一个多个变化的数据组合, 不可改变数据
  • watch, 实时触发, 不论数据有无变化, 都会触发watch内的处理. 性能损耗会比较大, 就尽量避免使用watch

9. 更多(今天先更新到这, 休息休息....)

新手学习Vue

  1. 良好的HTML/CSS/JavaScript基础知识是必要的前提条件
  2. Vue官网(中文) 按指南学习一遍
  3. 建议按部就班从最简单ES5写法开始学习, 不建议直接上来就用vue/cli, 特别是没有node或webpack基础的同学
  4. 选择一个小场景或业务, 使用Vue实现, 然后再逐步增加难度,再循环看Vue官网。
  5. 到此, 你应该可以完成一些简单的业务逻辑了。

更进一步学习: 参考文章:[Vue 2.0建议学习顺序] (https://www.jianshu.com/p/61c57d40d3ec)

相关文章

  • vue开发中每个人都会遇到的问题

    公司年初开始从jquery转型到vue开发,思想上从jquery的操作DOM到vue的操作数据,刚开始还不太习惯,...

  • 从jQuery到Vue

    为什么要从jQuery转到Vue? 原因1: 微服务化后, 很多站点都开始转前后端分离. 此时单页面应用的需要越来...

  • 前端交互模式演变

    从纯JS操作DOM,到JQuery,Angular,再到现在流行的Vue,React,前端交互模式也从0到1,从M...

  • 从 jQuery 到 VUE 技术栈

    当前前端最火热的框架当属 VUE,在学习 VUE 之前先来看下 VUE 的内部是如何工作的。 我们从最基本的页面操...

  • 2018-09-11

    npm install vue 下载vue; npm install jquery 下载jquery。 前端流行的...

  • Vue和React优劣对比?我到底应该选择哪谁?

    前言 前端开发框架从最开始的jquery时代,到后来backbone,angular1,再到现在vue和react...

  • 2018-12-29

    然而 jquery 是后端人员最喜欢的前端库,如果让我从 jquery 和 vue 选择其中一个,我选 jquery。

  • js、jQuery、Vue对比

    Javascript jQuery Vue vue可以实现追加

  • 虚拟DOM

    关于虚拟DOM 如今流行的mvvm框架的开发模式,已经决定jquery时代将不存在,从react到vue,虚拟do...

  • vue开发最佳实践

    虽然vue可以当做jquery用,可是哪还有必要更换成vue?用 jquery不是很好吗? 下面是实际 vue开发...

网友评论

      本文标题:从jQuery到Vue

      本文链接:https://www.haomeiwen.com/subject/ivltzqtx.html