干了快三年的前端,一直都是自学,做些无聊的 to B 项目。
喜欢刷算法题,水平不是特别高,但也刷了快千道题了。
以前经常听别人说算法才是关键,算法好的人上手工程也快,设计模式我也学过,结果工作这么久连个源码都看不懂。应届生学弟都看完 React 源码了,我看了好几次 Vue 也看不懂,看了各种讲源码的文章也迷迷糊糊,感觉自己好废物。到底怎么样才能提高阅读源码的能力。
|  |      1heiheidewo      2020-04-27 10:52:48 +08:00 算法题是怎么刷的?有参考别人的解题报告吗? | 
|  |      2murmur      2020-04-27 10:53:54 +08:00 b 站有个 vue 代码讲解的视频(版权问题,你看的随时可能被删,如果好建议购买正版,作者已经开始讲 vue3 了),我是跟着讲解看的,这东西自己找入口太累,跟着别人的视频思路清晰直切重点 | 
|      3dxc190749      2020-04-27 10:57:23 +08:00 via iPhone 划水划太多了吧,学会独立思考呀 | 
|  |      4Curtion      2020-04-27 11:00:40 +08:00  3 和算法没什么大关系吧应该,这种库比较完善,既然比较完善就有很多细节操作,这些细枝末节虽然必不可少,但是在看源码时却是累赘,所以要忽略这些东西,建议先看轻量级实现,例如: https://github.com/DMQ/mvvm,然后再去看 Vue 源码,而且要有目标,否则就会在源码中东跳西跳中迷失自己,要看初始化过程就只看这个,要看依赖收集就只看这个,一旦跑题就点到为止。我最近也在看,加油! | 
|  |      5mmnsghgn      2020-04-27 11:03:46 +08:00 via iPhone 佩服看完 React 源码的应届生学弟。 | 
|      6chenjunyue520      2020-04-27 11:04:03 +08:00 刷算法题和 看源码有什么直接关系么。 你带着问题看源码,会比较有收获,如果是无目的的看,应该都是会很难看下去的吧。比如,卧槽,这个咋实现的。。然后直奔代码。 | 
|      7iDontEatCookie OP @heiheidewo #1 一般想了一小时想不出,或者自己的解法速度比较慢会看别人的代码。 | 
|      8iDontEatCookie OP @murmur #2 谢谢 我搜了一下有好多 感觉大部分质量都不太好的样子 能给个 Av 号吗 | 
|  |      9ericls      2020-04-27 11:09:26 +08:00 via iPhone  2 面试过很多这种 其实就是脱离了实践 学算法学成奥数的。 忘记算法这回事先 不要因为会算法就把一切问题往算法上套。 我觉得算法就像工程里的力学 它很重要 但是很片面 造一个房子你还要考虑审美 跟环境的结合 跟周围建筑的结合 用户的习惯 甚至还要考虑风水。 | 
|      10fool079      2020-04-27 11:10:22 +08:00 看完 react 源码的应届学弟是什么神仙。。 | 
|      11iDontEatCookie OP | 
|      12iDontEatCookie OP @Curtion #4 谢谢你 我研究一下。 | 
|      13iDontEatCookie OP @chenjunyue520 #6 主要总有人说你算法那么厉害 看源码很容易 我不知道怎么解释 因为我真的努力去看了 确实不会。大神学弟也是这么和我说的,要有目的的去看。但我还是在源码中迷失了自己= = | 
|  |      14jmc891205      2020-04-27 11:17:44 +08:00 为了看懂 Vue 源码而去学算法? 那你可能方向搞错了。。。 | 
|      16wangxiaoaer      2020-04-27 11:27:26 +08:00 via Android 正常,估计我的项目代码你也看不懂。 | 
|      17nianyu      2020-04-27 11:28:14 +08:00 因为你被骗了,现在的风气就是鼓吹算法。骗你刷算法刷多了你就什么都会了。 | 
|      18VDimos      2020-04-27 11:31:11 +08:00 via Android 看完 react 源码的应届生是什么神仙 | 
|  |      19maichael      2020-04-27 11:37:23 +08:00  2 看源码本身不是有多难,难的是在找切入点上。 | 
|      20crackhopper      2020-04-27 11:43:13 +08:00 工欲善其事必先利其器。你把调试的工具搞清楚明白,掌握一些基础原理:编译、设计模式。然后顺着 debug 工具的流程看,接着站在全局梳理,最后每个子模块梳理。就搞定了。 | 
|  |      21murmur      2020-04-27 11:43:46 +08:00  1 av100634051 | 
|      22crackhopper      2020-04-27 11:44:42 +08:00 本质上看不明白就是基础功不够。当然顺着 debug 工具的堆栈硬看也行,大概也能掌握个 50%左右的源码吧。 | 
|  |      23nicebird      2020-04-27 11:45:24 +08:00 多看多想,完事 | 
|  |      24yeze322      2020-04-27 11:49:25 +08:00  2 工程问题和算法问题是两回事,算法重细节,源码重设计 | 
|  |      25revalue      2020-04-27 11:54:19 +08:00 大学生大把时间,找一个培训班视频看,各种源码解读。怎么也得看懂了吧 | 
|  |      27zhw2590582      2020-04-27 11:59:32 +08:00 vue 源码我看过好几遍也没看下去,看懂了的部分过几天又忘了 | 
|  |      28strugglexiang      2020-04-27 12:09:12 +08:00 via Android @murmur 在哪里 | 
|  |      29wobuhuicode      2020-04-27 12:13:58 +08:00 算法是面试的关键。看懂 vue 库应该是业务的积累。用到用过的去看,带着想法去看才知道这东西是干嘛的。 | 
|  |      30murmur      2020-04-27 12:15:22 +08:00 @strugglexiang  @geniusmyn @iDontEatCookie https://www.bilibili.com/video/av100634051/ 地址栏里的 gitpage 打进去好像可以找到正版的购买地址,我记得是 400 快 | 
|  |      31murmur      2020-04-27 12:17:12 +08:00 | 
|  |      32tmac33      2020-04-27 12:21:19 +08:00 我感觉你应该是被庞大的项目绕晕的。个人判断你应该缺少的是实际业务经验,跟算法无关。综上,多研究研究设计模式吧。 | 
|      33Huelse      2020-04-27 12:28:48 +08:00 算法是具体设计,软件是规模工程 | 
|  |      34wangyzj      2020-04-27 12:40:48 +08:00 刷算法题和看懂 vue 代码没啥关系 | 
|      35Chenamy2017      2020-04-27 12:41:43 +08:00 如果不是学生,那么为了用而学,会比你漫无目的的刷算法题要好。 | 
|  |      36hutng      2020-04-27 12:54:05 +08:00 via Android 哈哈哈 我还没学会 vue 怎么用 更不要说看源码了😂 | 
|      37renmu      2020-04-27 13:26:31 +08:00 via Android 建议可以去看看《深入浅出 vue.js 》这本书讲得简单易懂了 | 
|      38ikaros1997      2020-04-27 13:46:23 +08:00  1 你知道数据劫持怎么实现的吗,不要说什么 defineProperty/proxy,要具体的,keep-alive 又是怎么实现的,生命周期又是怎么实现的,等等这些。你想知道了,带着这些问题去看,做笔记,看懂源码做了什么再谈设计,不然源码那么多,为了看源码而看源码没有什么意义的。。 | 
|  |      39gouflv      2020-04-27 13:51:32 +08:00 via iPhone 算法不是万能的 | 
|      40iDontEatCookie OP @crackhopper #20 谢谢指教~ @renmu #37 好的 买! @ikaros1997 #38 刚看了明白点数据劫持和响应式,就 Watcher 和 computed 那里。感觉函数跳来跳去的理不清记不住。谢谢大佬指教。 | 
|  |      41betulac      2020-04-27 13:59:58 +08:00 面试算法占比多少就有多少用处啊 想起兄弟去阿里面试,算法题直接说忘了还是给过了 | 
|      42dremy      2020-04-27 14:00:23 +08:00 via iPhone 会算法但不会语言基础,会走很多弯路的 相比算法技能,我觉得语言基础应当更先掌握 推荐看《 JavaScript 高级程序设计》,看过之后就会恍然大悟了 | 
|  |      43DelayNoMay      2020-04-27 14:00:27 +08:00 vue 每个关键词的含义,你不知道就是不知道,难道你还能通过算法推断出 vue 关键词的含义?? | 
|  |      44beidounanxizi      2020-04-27 14:05:12 +08:00 vue 都学不会 ?  你的算法题 是 目光所至=刷过 🐶 | 
|  |      45frantic      2020-04-27 14:06:59 +08:00 看主干啊,抓你想要看的东西,适当忽略一些代码块 | 
|      46q8164305      2020-04-27 14:14:11 +08:00 via Android 算法有用,但不是全部,代码设计,工程化也很重要 | 
|  |      47hoyixi      2020-04-27 14:15:54 +08:00 高中刷过 N 套试卷,考不上大学的多了去了 | 
|  |      48wutiantong      2020-04-27 14:58:48 +08:00 如果你想看懂一个框架的源代码,一个通用的最优方案是:自己尝试做一个类似的框架,不指望能做出来,但实践过后再去看就能懂。 | 
|  |      49SpiderXiantang      2020-04-27 15:34:38 +08:00 看完源码。。。。 你逗我吧 | 
|      50jtwor      2020-04-27 15:54:34 +08:00 1000 道。。。有点猛 | 
|  |      51Wanex      2020-04-27 16:13:09 +08:00 你说应届学弟看完 React 源码,我怎么感觉是吹的,说大致懂点我觉得还是很合理的。当然,不是说完全不可能,毕竟世界这么大,牛人还是很多的。 | 
|      52Navee      2020-04-27 16:22:02 +08:00 框架的实现和设计模式关系更大一些,和算法关系不大 | 
|  |      53Stevearzh      2020-04-27 16:36:41 +08:00 为啥要看源码 | 
|  |      54jrtzxh020      2020-04-27 16:55:43 +08:00 via iPhone <<vue 深入浅出>>这本书就讲源码的,可以一看,挺不错的 | 
|  |      55kaedea      2020-04-27 21:35:28 +08:00 via Android 1000 道... 能不能分享你觉得最妙的 2 道? | 
|  |      56g0thic      2020-04-28 09:34:38 +08:00 js 基础差了点吧 | 
|  |      57GiantHard      2020-04-28 09:50:34 +08:00 我觉得你可以去看看 Vue Issue 区里面一些超过一年以上都没有修复的问题,然后再带着这些问题去看源码,最后在试着去解决这些问题,顺便你还可以提交个 PR 修复一下。 | 
|  |      58vcode      2020-04-28 10:23:23 +08:00 蜜汁操作 | 
|      59iDontEatCookie OP | 
|      60aguesuka      2020-04-28 12:41:30 +08:00 via Android 术业有专攻,就算是算法题,leetcode 的算法刷得再多,去做《计算方法》的算法题一样懵逼 | 
|  |      61zzzzzzggggggg      2020-04-28 12:47:05 +08:00 算法题跟 vue 源码,这俩完全不是同一个东西啊; 而且这个跟你 JavaScript 基础知识差也没关系,首先你需要用 vue 写过项目,踩过一些坑。此时你应该对 vue 的响应式原理有一些体会,对虚拟 dom 有一些听说,也对它的生命周期方法有个粗浅的了解。 然后你开始看源码了,看源码前首先要知道你的目的是什么,比如你是为了搞清楚响应式原理还是为了搞清楚 diff,这样子才能有的放矢,抓住重点;而且你可能还需一些前置知识,比如看虚拟 dom,你需要知道它解决了什么问题,重绘回流你得懂。看响应式原理,观察者模式得懂,es6 的语法得懂。看生成模板那块,得需要懂点编译的知识 所以总结一下:算法题跟读项目源码没关系;不是你弱;需要用的比较熟练;需要前置知识;需要抓住重点 |