Vue 的渐进式设计使得它非常容易上手,在最简单的情况下,我们只需要引入 Vue 的 JS 文件,然后 new Vue() 即可使用声明式渲染。

Vue 的文档编写也比较优秀,方便使用者一步一步深入了解 Vue 各个特性的使用。既然如此,为什么我们还需要阅读 Vue 的源码呢,直接看文档学习它的使用不就可以解决问题了吗?

这个问题可以从两方面来解答。

他山之石 可以攻玉

前端技术的发展非常快,各种类库、框架、解决方案一直层出不穷。即便像 Vue 如今如日中天,其火起来的时间也不过短短三五年。而时间往回推几年,流行的却是 jQuery、backbone.js 之类的方案。因此,Vue.js 也有可能过时,仅仅掌握 Vue 的使用是远远无法跟上前端的发展脚步的。

Vue 的源码中有不少经典的解决问题的方法,掌握这些才算是真的学到了一些前端精髓。即便以后 Vue 不再流行,这些学习到的方法也是不会过时的。例如时下流行的 JSX、虚拟 DOM、数据变更的监听检测、观察者模式的使用等,都是非常有学习价值的问题解决方案。

此外,Vue 作为一个通用框架,固然能帮助我们解决很大一部分的问题,但是当应用复杂度上升以后,仅仅依靠 Vue 没有办法完全解决项目中碰到的问题。因此在碰到复杂的项目场景时,仍然需要大量的前端基础知识技能,而 Vue 的源码中有很多问题的解决方案,如果熟练掌握这些方案,将会使我们事半功倍。

知已知彼 百战不殆

在大部分情况下,我们仅仅需要根据 Vue 的官方文档来使用,就足以解决项目中的问题。但是在项目场景复杂时,仍然可能碰到一些文档没有覆盖的问题。此时我们可能需要先了解 Vue 底层的实现方案(如 nextTick、render 等),然后分析出最合适的解决办法。

另一种情况是当我们将一些解决方案应用到 Vue 不能覆盖的部分时,如果不能深入了解 Vue 的底层实现机制,就很难避免一些底层机制的冲突。此时只有我们深入了解 Vue 的源码,才能对这些解决方案做出客观的评价,以决定是否应该应用到项目中。

其他原因

除此之外,仅仅从价值的角度来说,也有越来越多的公司在招聘的时候会要求掌握一些框架的实现原理,除了上述说的学习和应用的原因外,是否能掌握一些在用的框架的原理,也可以视作学习态度的一个体现。

综上,作为一个合格的 web 前端工程师,对 Vue 的源码做一定深度的学习是十分必要的。

没必要阅读 Vue 源码吧?相关推荐

  1. 【一套代码小程序NativeWeb阶段总结篇】可以这样阅读Vue源码

    前言 前面我们对微信小程序进行了研究:[微信小程序项目实践总结]30分钟从陌生到熟悉 在实际代码过程中我们发现,我们可能又要做H5站又要做小程序同时还要做个APP,这里会造成很大的资源浪费,如果设定一 ...

  2. Vue 源码阅读学习(三)

    第三节:函数柯里化与渲染模型 嘿,朋友们,本节是 Vue 源码阅读的第三讲.Vue 源码阅读系列得到了赞赏,我很高兴,同时希望大家可以给予反馈!我虚心接纳您的意见! 如果没有看之前的第一讲和第二讲的内 ...

  3. 【Vue原理】Vue源码阅读总结大会

    专注 Vue 源码分享,为了方便大家理解,分为了白话版和 源码版,白话版可以轻松理解工作原理和设计思想,源码版可以更清楚内部操作和 Vue的美,喜欢我就关注我的公众号,好吧兄弟,不会让你失望的 阅读源 ...

  4. 【Vue原理】Vue源码阅读总结大会 - 序

    [Vue原理]Vue源码阅读总结大会 - 序 阅读源码准备了什么 1.掌握 Vue 所有API 2.JavaScript 扎实基础 3.看完 JavaScript 设计模式 4.学会调试 Vue 源码 ...

  5. [Vue源码分析] v-model实现原理

    最近小组有个关于vue源码分析的分享会,提前准备一下- 前言: 我们都知道使用v-model可以实现数据的双向绑定,及实现数据的变化驱动dom的更新,dom的更新影响数据的变化.那么v-model是怎 ...

  6. vue源码学习--vue源码学习入门

    本文为开始学习vue源码的思路整理.在拿到vue项目源码的之后看到那些项目中的文件夹,会很困惑,不知道每个文件夹内的世界,怎么变换,怎样的魔力,最后产生了vue框架.学习源码也无从学起.我解决了这些困 ...

  7. 大白话Vue源码系列(01):万事开头难

    阅读目录 Vue 的源码目录结构 预备知识 先捡软的捏 Angular 是 Google 亲儿子,React 是 Facebook 小正太,那咱为啥偏偏选择了 Vue 下手,一句话,Vue 是咱见过的 ...

  8. 学习vue源码(14)深入学习diff

    大白话简述 这一节,先对diff进行简单的描述,不会出现任何的源码,只是为了帮助大家建立一种思路,了解下 Diff 的大概内容. 1.Diff 的作用2.Diff 的做法3.Diff 的比较逻辑4.简 ...

  9. 学习vue源码(14)就慢慢由表入里学习diff

    大白话简述 这一节,先对diff进行简单的描述,不会出现任何的源码,只是为了帮助大家建立一种思路,了解下 Diff 的大概内容. 1.Diff 的作用2.Diff 的做法3.Diff 的比较逻辑4.简 ...

最新文章

  1. SaaS加速器II 能力中心:互利互补 共享商业红利
  2. 【企业管理】正确评价价值-概述
  3. Image Captioning概述
  4. mysql long raw_读取Oracle数据库中LONG RAW字段会抛出异常
  5. 慕课python就业班加微信_给初学python的朋友的一些忠告和建议
  6. poj3233(矩阵快速幂的和)
  7. 面试题之浅克隆和深克隆
  8. Android系统韦根调试从驱动到应用(一)
  9. 柳州哪里有短视频创业直播基地?柳州市互联网协会为您精选4家
  10. 轻量级任务调度中间件
  11. Excel画函数图像
  12. 数据库--根据日期查询
  13. 概率论与数理统计 4 Continuous Random Variables and Probability Distributions(连续随机变量与概率分布)(上篇)
  14. 6款经典BI项目报表表单风格配色方案
  15. Android logo图标的尺寸
  16. 无线网关服务器搭建教程,【树莓派】简易LoRa网关搭建+服务器设置一条龙教程(the things network)...
  17. Vue-cli3项目seo优化--静态化打包(动态改变页面Titl、keyWords、description)
  18. (完整项目源码)GPS定位源码整套管理系统,轨迹播放,车辆管理,电子围栏,报警记录,数据库/人员定位/宠物定位/物流跟踪/资产定位
  19. 软件工程教程:第2章软件问题定义及可行性分析 课后习题
  20. 背包问题进阶优雅总结【二维费用+分组+有依赖】

热门文章

  1. 虚拟机上传文件到hdfs
  2. 弹弹堂之 弹坑技术
  3. 网络安全漏洞分析小结
  4. 新媒体运营胡耀文教程:如何提高产品转化率?
  5. Appium 定位元素
  6. 我用nodejs和electron实现了一个简单的聊天软件-----chat 开源
  7. 利用 PHP POST 临时文件机制实现任意文件上传
  8. 【23】牛客网BC25 计算体重指数
  9. Nordic DFU OTA参考资料
  10. 云HIS系统 云his系统源码 基于电子病历的医院信息平台标准建设