关于为什么我推荐大家看vue代码的随想

大家好,我是若川。今天给大家推荐一篇大圣老师在知乎的回答,很快能看完。我也曾经回答过这个问题。若川知乎高赞:有哪些必看的 JS 库?不要为了读源码而读源码,但要学会看源码。自己常用的熟悉的库的源码值得读读。

点击下方卡片关注我、加个星标


很赞同【越好的框架越不需要使用者特地去读】这个理念,毕竟我们研读源码就是为了解决具体问题,按需去看比较好,不过这个前提是你已经是一个系统化训练的工程师,如果是针对新手,尤其是前端这个特殊的领域,大部分同学都不是计算机出身 ,现在我建议去看vue3的源码 并不是其他的不好,而是Vue3很适合用来帮助初中级前端走完升级的路线,通过vue3源码中的细节,构建和丰富自己的前端知识体系

  1. vue3大部分代码是小右写的,平均代码质量比较高,React也很赞,但是整体工程化过于复杂,不太适合新手,建议搞定vue之后去看React更好一些

  2. 源码阅读本身也是一个需要练习的技能,一次训练,持久收益

  3. 先忽略ts,去看@vue/reactivity,这是个独立的包,1000左右,难度适中,测试覆盖率100%(到100%的测试case还是我提的 嘿嘿),非常适合作为第一个阅读的源码

    1. 还能巩固ES6+的几个新数据解构和语法

    2. 之前我推荐1000左右的代码还是seajs

  4. 研究文件解构,学习一下工程化体系

    1. lerna管理

    2. script下面的文件,研究commit规范,git hook,dev build等配置

  5. 研究runtime-core和dom,了解vue整个框架设计的理念

    1. 事件修饰符once的实现,并不需要add再removeListener,而是addEventListener的时候加一个第三个参数,{once:true}的配置就可以

    2. insertBefore第二个参数给null的话,和appendChild效果一样

    3. 等等等等, 会让自己恍然大哦一下的小tips

    4. 细节不多说,比如dom diff里面的getSequence生成最长递增子序列,会让你尝试去研究算法是个啥,然后研究vue3的贪心+二分实现的时候,还会了解动态规划的实现,算法能力++,至少意识到需要学算法,这也是前端老铁的软肋质疑

    5. 有些vue的实现让你了解js和dom里一些容易忽略的细节

    6. shapeFlag和patchFlag还会让你意识到位运算也需要学学

    7. typescript不用多说,看见不懂的语法,按需学一学也不错

    8. 看完就可以搞一本算法第四版之类的,好好学一下算法,有时候知道自己需要学也挺重要

  6. compiler了解vue编译的优化

    1. 让你知道原来还有个编译原理的东东需要学习

    2. 先去看the-super-tiny-compiler这200行代码, 了解一下parser,ast,codeGenerator等是啥意思

    3. 看完compiler dom和core ,既能应付面试,还大概入门了编译原理

  7. 其他的很多实现也挺有意思,而且大部分代码都配有测试

    1. slot

    2. v-model

    3. keep-alive

  8. 其他包比如sfc,test选看,按需看就行

  9. 其他的vuex,vite,router啥的也是类似

综上所述,看完vue生态代码其实是对前端这个特殊行业的新手工程师,可以起到帮助巩固计算机基础的重要性。 

有时候不是我们不勤奋,而是没有科班的训练,我们不知道这些东西学的意义是啥,阅读框架源码的意义也在于此 

当然完整系统的看完一个后,阅读源码这个技能你也掌握了,针对其他框架就可以按需阅读,也就找到了自己高效学习的路线 

ps:我vue3源码也是粗略看过,如果有说的不对的地方,以vue最新的源码为准

欢迎阅读原文去知乎讨论


最近组建了一个江西人的前端交流群,如果你也是江西人可以加我微信 ruochuan12 拉你进群。


今日话题

略。欢迎分享、收藏、点赞、在看我的公众号文章~

一个愿景是帮助5年内前端人走向前列的公众号

可加我个人微信 ruochuan12,长期交流学习

推荐阅读

我在阿里招前端,我该怎么帮你(可进模拟面试群)

2年前端经验,做的项目没技术含量,怎么办?

点击方卡片关注我、加个星标

················· 若川简介 ·················

你好,我是若川,毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列》多篇,在知乎、掘金收获超百万阅读。

从2014年起,每年都会写一篇年度总结,已经写了7篇,点击查看年度总结。

同时,活跃在知乎@若川,掘金@若川。致力于分享前端开发经验,愿景:帮助5年内前端人走向前列。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法 - 最好、最坏、平均复杂度

注:本文仅为笔记。 原文 极客时间 - 数据结构与算法之美 - 04 | 复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度 最好、最坏时间复杂度 略,比较容易分析。 平均时间复杂度 需考虑概率来计算。 概率论中的加权平…

java编译多个包_javac一次性编译多个包下的.java文件

标准的javac可以跟一个加一个文件名,该文件里保存了源文件列表,使用下面的命令:javac sourcefilecd xxxdir *.java/s/b > srclist.txtor dir x:/yyy/zzz/*.java/s/b > srclist.txtjavac -cp .;xxx/yyy/zzz.jar;x…

555的传说

郑昀 20101118 昨天听1039电台才知道,北美电影里常出现的555开头号码是行规惯例,因为当年贝尔系统为测试链路中所有交换机的基本功能,全部由5组成的号码(555–5555)作为特别的测试号码被保留,时至今日只剩下…

没想到你是这样的npm install

大家好,我是若川。今天给大家推荐一篇关于 npm install 的好文。很快能看完。点击下方卡片关注我、加个星标学习源码整体架构系列、年度总结、JS基础系列前言项目中执行npm install发生了什么,众所周知,执行npm install时会在当前项目目录的n…

Django——Model

一、 ORM 在 MVC 或者说 MTV 设计模式中,模型(M)代表对数据库的操作。那么如何操作数据库呢? 我们可以在 Python 代码中嵌入 SQL 语句。 但是问题又来了,Python 怎么连接数据库呢?可以使用类似 pymysql 这一…

大理石在哪儿_如何创建用户体验写作课程而又不失大理石

大理石在哪儿I’m a UX Writer. It’s a designated human on the software development team who writes words for interfaces. All the words. From the tiniest tooltips to navigation, to buttons, to errors, and so on, ad infinitum. UX writing is less writing and …

理解 JavaScript 闭包

简介 Closure 所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 闭包是 ECMAScript (JavaScript)最强大的特性之一,但…

in the java search_elasticsearch which: no java in (/sbin:/bin:/usr/sbin:/usr/bin)

机器:centos7.2javahome:export JAVA_HOME/root/jdk1.8.0_60export PATH$JAVA_HOME/bin:$PATHexport CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar[rooti-j73a8nn6 ~]# java -versionjava version “1.8.0_60”Java(TM) SE Runtime Envir…

Vuex 源码还有一些缺陷?

我看了vuex3和vuex4的源码也输出了文章,看到这篇时,vuex还有缺陷?看了看确实是好文,不愧是大佬写的。文章不算长,推荐给大家看看。点击下方卡片关注我、加个星标学习源码整体架构系列、年度总结、JS基础系列众所周知&a…

三级菜单页面布局_三级菜单的最快导航布局

三级菜单页面布局重点 (Top highlight)When users navigate an interface, there’s a need for speed. The faster it is for them to find what they’re looking for, the more time they’ll save on their task.用户导航界面时,需要提高速度。 他们找到所需内容…

java contains 通配符_java删除文件支持通配符

packagecom.covics.zfh;importjava.io.File;importjava.io.FilenameFilter;/*** 实现带*号的删除文件*authordoudou**/public classTestDeleteFile {public static voidmain(String args[]) {boolean delFile //windows//deleteFileWithSign("E:\\fileDeleteTest\\test\\t…

「线性基」学习小结

向量空间 向量空间亦称线性空间。 形式化的,我们定义一个向量空间\((P,V,,\cdot)\) 其中 \(P\)是一个域,\(V\)是一个非空的集合,其中的集合称作向量,同时定义两种运算分别为向量加法和标量乘法 一个\(P\)上的向量空间\((P,V,,\cdo…

ux体验网站 英国_定义网站图像时的UX注意事项

ux体验网站 英国As the saying goes —俗话说 - “A picture is worth a thousand words.”“一张图片胜过千言万语。” When creating content on the web, it’s often recommended to be using high-quality imageries and making sure that the images serve its purpose …

iconfont 支持全新的彩色字体图标

大家好,我是若川。iconfont我相信大家都用过,而现在支持全新的彩色字体图标了。这是第二次转载,上一次的好文是2020 前端技术发展回顾。点击下方卡片关注我、加个星标学习源码整体架构系列、年度总结、JS基础系列一直以来,Web 中想…

回文算法java实现_java算法题:最长回文串

LeetCode: 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如"Aa"不能当做一个回文字符串。注 意:假设字符串的长度不会超过 1010。思路:利用hashset&#xff0…

Spring校验@RequestParams和@PathVariables参数

我们在写Rest API接口时候会用到很多的RequestParam和PathVariable进行参数的传递,但是在校验的时候,不像使用RequestBody那样的直接写在实体类中,我们这篇文章讲解一下如何去校验这些参数。 依赖配置 要使用Java Validation API,…

出色的社区网站_《最后的我们》中出色的制作系统

出色的社区网站游戏设计分析 (GAME DESIGN ANALYSIS) The Last of Us became an instant classic the day it was released, back in 2013. At the sunset of the sixth console generation, it felt like Naughty Dog managed to raise the bar in all critical areas of game…

入坑 Electron 开发跨平台桌面应用

‍作为一个跨平台的桌面应用开发框架,Electron 的迷人之处在于,它是建立在 Chromium 和 Node.js 之上的 —— 二位分工明确,一个负责界面,一个负责背后的逻辑,典型的「你负责貌美如花,我负责赚钱养家」。上…

Google 拼音会导致卡 Ctrl 键?

如果你使用 Windows 7 系统,并同时安装了 Google 输入法,那么 Firefox 启动时、WoW 时一定也常遇到卡住 Ctrl 键的问题。 今天仔细搜索了下,传说将输入法中“Ctrl键快速定位”关闭即可,有待验证,先记录着…转载于:http…

java 接口编程_JAVA面向接口编程

一、什么是面向接口编程要正确地使用Java语言进行面向对象的编程,从而提高程序的复用性,增加程序的可维护性、可扩展性,就必须是面向接口的编程。面向接口的编程就意味着:开发系统时,主体构架使用接口,接口…