V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iDontEatCookie
V2EX  ›  程序员

刷过一千道算法题,但是看不懂 Vue 源码。

  •  
  •   iDontEatCookie · 2020-04-27 10:49:37 +08:00 · 10542 次点击
    这是一个创建于 1678 天前的主题,其中的信息可能已经有所发展或是发生改变。

    干了快三年的前端,一直都是自学,做些无聊的 to B 项目。

    喜欢刷算法题,水平不是特别高,但也刷了快千道题了。

    以前经常听别人说算法才是关键,算法好的人上手工程也快,设计模式我也学过,结果工作这么久连个源码都看不懂。应届生学弟都看完 React 源码了,我看了好几次 Vue 也看不懂,看了各种讲源码的文章也迷迷糊糊,感觉自己好废物。到底怎么样才能提高阅读源码的能力。

    61 条回复    2020-04-28 12:47:05 +08:00
    heiheidewo
        1
    heiheidewo  
       2020-04-27 10:52:48 +08:00
    算法题是怎么刷的?有参考别人的解题报告吗?
    murmur
        2
    murmur  
       2020-04-27 10:53:54 +08:00
    b 站有个 vue 代码讲解的视频(版权问题,你看的随时可能被删,如果好建议购买正版,作者已经开始讲 vue3 了),我是跟着讲解看的,这东西自己找入口太累,跟着别人的视频思路清晰直切重点
    dxc190749
        3
    dxc190749  
       2020-04-27 10:57:23 +08:00 via iPhone
    划水划太多了吧,学会独立思考呀
    Curtion
        4
    Curtion  
       2020-04-27 11:00:40 +08:00   ❤️ 3
    和算法没什么大关系吧应该,这种库比较完善,既然比较完善就有很多细节操作,这些细枝末节虽然必不可少,但是在看源码时却是累赘,所以要忽略这些东西,建议先看轻量级实现,例如: https://github.com/DMQ/mvvm,然后再去看 Vue 源码,而且要有目标,否则就会在源码中东跳西跳中迷失自己,要看初始化过程就只看这个,要看依赖收集就只看这个,一旦跑题就点到为止。我最近也在看,加油!
    zhengjian
        5
    zhengjian  
       2020-04-27 11:03:46 +08:00 via iPhone
    佩服看完 React 源码的应届生学弟。
    chenjunyue520
        6
    chenjunyue520  
       2020-04-27 11:04:03 +08:00
    刷算法题和 看源码有什么直接关系么。 你带着问题看源码,会比较有收获,如果是无目的的看,应该都是会很难看下去的吧。比如,卧槽,这个咋实现的。。然后直奔代码。
    iDontEatCookie
        7
    iDontEatCookie  
    OP
       2020-04-27 11:07:55 +08:00
    @heiheidewo #1 一般想了一小时想不出,或者自己的解法速度比较慢会看别人的代码。
    iDontEatCookie
        8
    iDontEatCookie  
    OP
       2020-04-27 11:09:01 +08:00
    @murmur #2 谢谢 我搜了一下有好多 感觉大部分质量都不太好的样子 能给个 Av 号吗
    ericls
        9
    ericls  
       2020-04-27 11:09:26 +08:00 via iPhone   ❤️ 2
    面试过很多这种

    其实就是脱离了实践 学算法学成奥数的。

    忘记算法这回事先 不要因为会算法就把一切问题往算法上套。

    我觉得算法就像工程里的力学 它很重要 但是很片面 造一个房子你还要考虑审美 跟环境的结合 跟周围建筑的结合 用户的习惯 甚至还要考虑风水。
    fool079
        10
    fool079  
       2020-04-27 11:10:22 +08:00
    看完 react 源码的应届学弟是什么神仙。。
    iDontEatCookie
        11
    iDontEatCookie  
    OP
       2020-04-27 11:10:40 +08:00
    @dxc190749 #3 确实划了很久 独立思考只什么呢?

    @zhengjian #5 我也佩服 他进了一线大厂
    iDontEatCookie
        12
    iDontEatCookie  
    OP
       2020-04-27 11:13:03 +08:00
    @Curtion #4 谢谢你 我研究一下。
    iDontEatCookie
        13
    iDontEatCookie  
    OP
       2020-04-27 11:16:47 +08:00
    @chenjunyue520 #6 主要总有人说你算法那么厉害 看源码很容易 我不知道怎么解释 因为我真的努力去看了 确实不会。大神学弟也是这么和我说的,要有目的的去看。但我还是在源码中迷失了自己= =
    jmc891205
        14
    jmc891205  
       2020-04-27 11:17:44 +08:00
    为了看懂 Vue 源码而去学算法?
    那你可能方向搞错了。。。
    geniusmyn
        15
    geniusmyn  
       2020-04-27 11:19:57 +08:00
    @murmur 链接?
    wangxiaoaer
        16
    wangxiaoaer  
       2020-04-27 11:27:26 +08:00 via Android
    正常,估计我的项目代码你也看不懂。
    nianyu
        17
    nianyu  
       2020-04-27 11:28:14 +08:00
    因为你被骗了,现在的风气就是鼓吹算法。骗你刷算法刷多了你就什么都会了。
    VDimos
        18
    VDimos  
       2020-04-27 11:31:11 +08:00 via Android
    看完 react 源码的应届生是什么神仙
    maichael
        19
    maichael  
       2020-04-27 11:37:23 +08:00   ❤️ 2
    看源码本身不是有多难,难的是在找切入点上。
    crackhopper
        20
    crackhopper  
       2020-04-27 11:43:13 +08:00
    工欲善其事必先利其器。你把调试的工具搞清楚明白,掌握一些基础原理:编译、设计模式。然后顺着 debug 工具的流程看,接着站在全局梳理,最后每个子模块梳理。就搞定了。
    murmur
        21
    murmur  
       2020-04-27 11:43:46 +08:00   ❤️ 1
    av100634051
    crackhopper
        22
    crackhopper  
       2020-04-27 11:44:42 +08:00
    本质上看不明白就是基础功不够。当然顺着 debug 工具的堆栈硬看也行,大概也能掌握个 50%左右的源码吧。
    nicebird
        23
    nicebird  
       2020-04-27 11:45:24 +08:00
    多看多想,完事
    yeze322
        24
    yeze322  
       2020-04-27 11:49:25 +08:00   ❤️ 2
    工程问题和算法问题是两回事,算法重细节,源码重设计
    revalue
        25
    revalue  
       2020-04-27 11:54:19 +08:00
    大学生大把时间,找一个培训班视频看,各种源码解读。怎么也得看懂了吧
    ericls
        26
    ericls  
       2020-04-27 11:57:20 +08:00 via iPhone
    @VDimos 可能是遇到 react 的 bug 想解决 一不小心看完了
    zhw2590582
        27
    zhw2590582  
       2020-04-27 11:59:32 +08:00
    vue 源码我看过好几遍也没看下去,看懂了的部分过几天又忘了
    strugglexiang
        28
    strugglexiang  
       2020-04-27 12:09:12 +08:00 via Android
    @murmur 在哪里
    wobuhuicode
        29
    wobuhuicode  
       2020-04-27 12:13:58 +08:00
    算法是面试的关键。看懂 vue 库应该是业务的积累。用到用过的去看,带着想法去看才知道这东西是干嘛的。
    murmur
        30
    murmur  
       2020-04-27 12:15:22 +08:00
    @strugglexiang
    @geniusmyn
    @iDontEatCookie

    https://www.bilibili.com/video/av100634051/
    地址栏里的 gitpage 打进去好像可以找到正版的购买地址,我记得是 400 快
    murmur
        31
    murmur  
       2020-04-27 12:17:12 +08:00
    tmac33
        32
    tmac33  
       2020-04-27 12:21:19 +08:00
    我感觉你应该是被庞大的项目绕晕的。个人判断你应该缺少的是实际业务经验,跟算法无关。综上,多研究研究设计模式吧。
    Huelse
        33
    Huelse  
       2020-04-27 12:28:48 +08:00
    算法是具体设计,软件是规模工程
    wangyzj
        34
    wangyzj  
       2020-04-27 12:40:48 +08:00
    刷算法题和看懂 vue 代码没啥关系
    Chenamy2017
        35
    Chenamy2017  
       2020-04-27 12:41:43 +08:00
    如果不是学生,那么为了用而学,会比你漫无目的的刷算法题要好。
    hutng
        36
    hutng  
       2020-04-27 12:54:05 +08:00 via Android
    哈哈哈
    我还没学会 vue 怎么用
    更不要说看源码了😂
    renmu
        37
    renmu  
       2020-04-27 13:26:31 +08:00 via Android
    建议可以去看看《深入浅出 vue.js 》这本书讲得简单易懂了
    ikaros1997
        38
    ikaros1997  
       2020-04-27 13:46:23 +08:00   ❤️ 1
    你知道数据劫持怎么实现的吗,不要说什么 defineProperty/proxy,要具体的,keep-alive 又是怎么实现的,生命周期又是怎么实现的,等等这些。你想知道了,带着这些问题去看,做笔记,看懂源码做了什么再谈设计,不然源码那么多,为了看源码而看源码没有什么意义的。。
    gouflv
        39
    gouflv  
       2020-04-27 13:51:32 +08:00 via iPhone
    算法不是万能的
    iDontEatCookie
        40
    iDontEatCookie  
    OP
       2020-04-27 13:59:14 +08:00
    @crackhopper #20 谢谢指教~


    @renmu #37 好的 买!


    @ikaros1997 #38 刚看了明白点数据劫持和响应式,就 Watcher 和 computed 那里。感觉函数跳来跳去的理不清记不住。谢谢大佬指教。
    betulac
        41
    betulac  
       2020-04-27 13:59:58 +08:00
    面试算法占比多少就有多少用处啊

    想起兄弟去阿里面试,算法题直接说忘了还是给过了
    dremy
        42
    dremy  
       2020-04-27 14:00:23 +08:00 via iPhone
    会算法但不会语言基础,会走很多弯路的

    相比算法技能,我觉得语言基础应当更先掌握

    推荐看《 JavaScript 高级程序设计》,看过之后就会恍然大悟了
    DelayNoMay
        43
    DelayNoMay  
       2020-04-27 14:00:27 +08:00
    vue 每个关键词的含义,你不知道就是不知道,难道你还能通过算法推断出 vue 关键词的含义??
    beidounanxizi
        44
    beidounanxizi  
       2020-04-27 14:05:12 +08:00
    vue 都学不会 ? 你的算法题 是 目光所至=刷过 🐶
    frantic
        45
    frantic  
       2020-04-27 14:06:59 +08:00
    看主干啊,抓你想要看的东西,适当忽略一些代码块
    q8164305
        46
    q8164305  
       2020-04-27 14:14:11 +08:00 via Android
    算法有用,但不是全部,代码设计,工程化也很重要
    hoyixi
        47
    hoyixi  
       2020-04-27 14:15:54 +08:00
    高中刷过 N 套试卷,考不上大学的多了去了
    wutiantong
        48
    wutiantong  
       2020-04-27 14:58:48 +08:00
    如果你想看懂一个框架的源代码,一个通用的最优方案是:自己尝试做一个类似的框架,不指望能做出来,但实践过后再去看就能懂。
    SpiderXiantang
        49
    SpiderXiantang  
       2020-04-27 15:34:38 +08:00
    看完源码。。。。 你逗我吧
    jtwor
        50
    jtwor  
       2020-04-27 15:54:34 +08:00
    1000 道。。。有点猛
    Mexion
        51
    Mexion  
       2020-04-27 16:13:09 +08:00
    你说应届学弟看完 React 源码,我怎么感觉是吹的,说大致懂点我觉得还是很合理的。当然,不是说完全不可能,毕竟世界这么大,牛人还是很多的。
    Navee
        52
    Navee  
       2020-04-27 16:22:02 +08:00
    框架的实现和设计模式关系更大一些,和算法关系不大
    Stevearzh
        53
    Stevearzh  
       2020-04-27 16:36:41 +08:00
    为啥要看源码
    jrtzxh020
        54
    jrtzxh020  
       2020-04-27 16:55:43 +08:00 via iPhone
    <<vue 深入浅出>>这本书就讲源码的,可以一看,挺不错的
    kaedea
        55
    kaedea  
       2020-04-27 21:35:28 +08:00 via Android
    1000 道... 能不能分享你觉得最妙的 2 道?
    g0thic
        56
    g0thic  
       2020-04-28 09:34:38 +08:00
    js 基础差了点吧
    GiantHard
        57
    GiantHard  
       2020-04-28 09:50:34 +08:00
    我觉得你可以去看看 Vue Issue 区里面一些超过一年以上都没有修复的问题,然后再带着这些问题去看源码,最后在试着去解决这些问题,顺便你还可以提交个 PR 修复一下。
    vcode
        58
    vcode  
       2020-04-28 10:23:23 +08:00
    蜜汁操作
    iDontEatCookie
        59
    iDontEatCookie  
    OP
       2020-04-28 11:32:10 +08:00
    @kaedea #55 POJ 3648 有一说一 我觉得题面很妙
    @GiantHard #57 谢谢 思路可以 但我感觉自己水平不够。
    @jrtzxh020 #54 谢谢 上面也有人推荐了这本书 我买一本
    @dremy #42 真没必要这么嘲讽我 刚学 js 就看过了 你不知道的 JavaScript 看了三遍 犀牛书也读过了 我是菜 但也不至于没有基础就硬上吧
    aguesuka
        60
    aguesuka  
       2020-04-28 12:41:30 +08:00 via Android
    术业有专攻,就算是算法题,leetcode 的算法刷得再多,去做《计算方法》的算法题一样懵逼
    zzzzzzggggggg
        61
    zzzzzzggggggg  
       2020-04-28 12:47:05 +08:00
    算法题跟 vue 源码,这俩完全不是同一个东西啊;
    而且这个跟你 JavaScript 基础知识差也没关系,首先你需要用 vue 写过项目,踩过一些坑。此时你应该对 vue 的响应式原理有一些体会,对虚拟 dom 有一些听说,也对它的生命周期方法有个粗浅的了解。
    然后你开始看源码了,看源码前首先要知道你的目的是什么,比如你是为了搞清楚响应式原理还是为了搞清楚 diff,这样子才能有的放矢,抓住重点;而且你可能还需一些前置知识,比如看虚拟 dom,你需要知道它解决了什么问题,重绘回流你得懂。看响应式原理,观察者模式得懂,es6 的语法得懂。看生成模板那块,得需要懂点编译的知识
    所以总结一下:算法题跟读项目源码没关系;不是你弱;需要用的比较熟练;需要前置知识;需要抓住重点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2820 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:55 · PVG 14:55 · LAX 22:55 · JFK 01:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.