Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何突破技术瓶颈(适合P6以下)

如何突破技术瓶颈(适合P6以下)

作者头像
若川
发布于 2023-01-31 10:19:38
发布于 2023-01-31 10:19:38
40400
代码可运行
举报
文章被收录于专栏:若川视野若川视野
运行总次数:0
代码可运行

大家好,我是若川。我持续组织了近一年的源码共读活动,感兴趣的可以 点此扫码加我微信 lxchuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外:目前建有江西|湖南|湖北籍前端群,可加我微信进群。

本文作者:@孟祥_成都 原文链接:https://juejin.cn/post/7168671474234949662

1前言

最近在更新react组件库源码的文章,其实vue和其他框架都一样,就是我发现自己在一年前直接看这些源码(不调试),还是有点吃力的,然后就放弃了。

可最近不知道为啥,看这些源码对我来说没啥太大难度,直接干就完事了,不需要啥调试。自己好好回想了一下,为什么会有这样的变化?也算帮助一些想突破自己技术瓶颈的同学。

有新人在下面留言说看到很焦虑,刚进前端领域的同学,你们首要任务是能完成业务开发,此时业务开发带给你的提升是最明显的,文章更多的是帮助业务api用熟之后的想有突破的同学,不用焦虑,哈哈。而且话说回来了,我在平时工作中看到不想突破的人基本占百分90%,无论大小厂,所以不突破也没啥,大部分人只是仅仅当一个普通工作而已。

2结论

首先我得出结论是:

  • 最开始不要自己去读源码,看别人的文章和视频即可,目的是先接触比自己能力层次高的代码,为超越现有的能力铺路(后面详细谈怎么做)
  • 平时注意积累一些手写题的思路,网上面经很多,主要不是写出来,是理解原理,理解大于一切,不理解的东西终究会忘记,我们要积累的是能力,能力是第一!(后面详细谈),设计模式里的发布订阅者模式必须要理解!这是写很多库常见的技巧。
  • 最后开始独立去看一些小的代码库,比如腾讯,阿里,字节的组件库,这些库大部分组件难度低。

3去哪里看视频和文章学源码

视频

最简易的就是跟着视频学,因为视频会把代码敲一遍,给你思考的时间,讲解也是最细的,很适合刚开始想造轮子的同学了解一些有难度的源码。

举个例子:

我当时看了koa的源码,了解了koa中间件的原理,我自己造了一个自动化发布脚本就利用了这个原理,redux中间件也是类似的原理,在函数式编程领域叫做compose函数,koa是异步compose,redux是同步compose,

简单描述下什么是compose函数我把大象装进冰箱是不是要 1、打开冰箱门 2、装进去大象 3、关冰箱门那么很多同学就会写一个函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function 装大象(){
 // 打开冰箱
 // 装大象
 // 关闭冰箱门
}

compose函数会把这个过程拆开,并且抽象化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 把装大象抽象为装东西函数
function 装东西();
function 打开冰箱();
function 关闭冰箱();

compose(打开冰箱函数, 装东西函数,关闭冰箱函数)

此时compose把上面三个函数抽象为一个打开冰箱往里面装东西的函数,我们只需要把参数大象穿进去就抽象了整个过程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
compose(打开冰箱函数, 装东西函数,关闭冰箱函数)(大象)

具体内容我还写过一篇文章,有兴趣的同学可以去看看:终极compose函数封装方案![1]这个大家应该有自己的去处,我自己的话很简单,视频一般去b站,就是bilibili,有些同学以为这是一个二次元网站是吧,其实里面免费的学习资料一抓一大把呢,啥都有。

比如说我在b站看了很多linux入门教学视频,还有一个培训公开课,讲的都是源码,什么手写react hook,手写webpack,手写xxx,那个时候说实话,听了视频也不是很理解,但是我还是挺喜欢前端的,没咋理解就继续听。

记住,我们需要短时间内提升能力,所以视频算是其中最快的了,其他方法不可能有这个来的快,并且没理解就算了,能理解多少是多少。

学习是一个螺旋上升的过程,不是一下子就全懂或者全不懂的,都是每次比上一次更懂一点。除非你是天才,急不来的。

视频搜索第二大去处就是论坛,一些论坛有各种各样的培训视频,这种论坛太多了,你谷歌或者百度一抓一大把。

对了,谷歌是爸爸,你懂我意思,不要吝啬小钱。在搜索学习资料面前,百度就是个弟弟。

4文章

文章一定记住,在精不在多。

切记,每个人都处在不同的学习阶段,不要盲目追求所谓的大神文章,不一定适合你,比如说有些人刚接触前端,你去看有些有深度的文章对你没啥好处,浪费时间,因为你理解不了,理解不了的知识相当于没学,过两天就忘了。

文章选择范围,比如掘金,知乎还有前端公众号,基本上就差不多了,选一两个你觉得你这个阶段能吸收的,好好精读,坚持个一年你会发现不一样的。

5额外的知识储备

前端3年前主流的前端书我都读过,什么红宝书,权威指南都读了好几遍了。

但有一本从菜鸟到高级-资深前端很推荐的一本是:JavaScript设计模式与开发实践(图灵出品)(腾讯的一位大哥写的,不是百度的那位,这两本书我都看过)

里面的知识点很干很干,里面有非常多的技巧,比如说你的同事写了一个函数,你不想破坏函数,有什么办法拓展它(其实我觉得我想的这些题就比前端八股文好玩多了,是开放性的)

  • 技巧很多,比如面向切面编程,加个before或者after函数包装一下
  • 比如责任链模式
  • 比如刚才的compose函数
  • 比如装饰器模式

6确立自己的发展方向

大家其实最后都要面对一个很现实的问题,就是35以后怎么办,我个人觉得你没有对标阿里P7的能力,落地到中小公司都难。

所以我们看源码,看啥都是为了提升能力,延长职业寿命。

那么如何在短时间内有效的提升,你就需要注意不能各种方向胡乱探索,前端有小游戏方向,数据可视化方向,B端后台系统方向,音视频方向等等

我是做b端,那b端整个链路我就需要打通,组件库是我这个方向,所以我探索这里,还有node端也是,写小工具是必须的,但是你们说什么deno,其他的技术,我根本不在乎,没时间浪费在这些地方,当然除了有些业务上需要,比如之前公司有个ai标注需求,用canvas写了一个类似画板的工具,也算开拓了知识点,但这也不是我重点发展的方向,不深入。

我做组件库是为了后面的低代码,低代码平台的整体设计思路我已经想好了,整体偏向国外开源的appsmith的那种方式,然后打通组件间通信的功能,我认为是能胜任稍微复杂的b端业务场景的,而且可以走很多垂直领域,比如网站建站,微信文章编辑器这种。所以我才开始研究组件库的,因为低代码大多数复杂功能都在组件上。

7工作上勇于走出舒适圈

为什么这个跟看源码相关呢,如果你做过比较复杂的项目,你会发现很多现成的第三方库满足不了。比如说我自己遇到过的大型sass项目,ant design就满足不了,所以你才发现,源码看得少加上业务急,代码就烂,时间上就留不出自己偷偷学习的时间,如果你想长期从事软件开发,没有成长是一件很危险的事(钱多当我没说,哈哈),因为无论如何,有本事,总没错的。

当你的业务难度上去的时候,会逼着你去提升能力,所以你如果想前端走的更远,建议不要在自己的舒适区太久,业务上选择一家比较难的公司,后面再跳槽就是沉淀这段时间的知识点了,当你能够有自信说,我现在带团队,从0到1再遇到那么难的业务时,能从容应对,恭喜你,你可以去面下阿里p7,不是为了这个工作啊,可以检验下是不是达到这个职位的标准了,我就喜欢偶尔面一下,也不是换工作,就是看看自己进步没。

参考资料

[1]

https://juejin.cn/post/6989815456416661534: https://juejin.cn/post/6989815456416661534

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 若川视野 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入理解同步和异步、阻塞和非阻塞、并行和串行这几个概念
如果之前有同学看过我的 《我眼中的Java大牛之孤尽老师》 这篇文章,就会发现里面已经提及一二,遗憾的是大多数同学都是遇到问题的时候才想着去问去看。
明明如月学长
2021/11/25
6740
深入理解同步和异步、阻塞和非阻塞、并行和串行这几个概念
面向过程
现在前端技术不是几年前的前端那样,熟练掌握JavaScript、Jquery、Ajax、DOM操作、其他框架等等这些就够了。而随着业务的复杂等多种因素,如今前端有了面向对象的方式编程,如:TypeScript。但是对于没有学习过【面向对象】的前端朋友或者不理解面向对象的一些朋友来说,感觉理解面向对象就是一道坎,似懂非懂。
全栈程序员站长
2022/09/20
2690
真正的门槛 - 全干工程师
【作者介绍】 KyXu,四年经验全职独立开发者,17 款独立开发上架作品。 长期致力于,帮助工程师获得工资以外的第二份收入 —— 碾压身边产品经理十倍百倍的收入。
KyXu
2019/04/11
1.2K0
真正的门槛 - 全干工程师
又是面向对象的一天
如果说要聊下面向对象(Object Oriented),那不得不提的就是和它相对的另一个概念:面向过程(Procedure Oriented)。而面向对象产生的背景则是设计思想和理念的进步,以及系统的日益复杂,人们慢慢发现面向过程这种方式已经不再适合解决现有问题了,于是慢慢催生了面向对象这一概念。
做棵大树
2022/09/27
1790
又是面向对象的一天
前端工程师生产环境 debugger 技巧
开发环境 debug 是每个程序员上岗的必备技能。生产环境呢?虽然生产环境 debug 是一件非常不优雅的行为,但是由于种种原因,我们又不得不这么干。
政采云前端团队
2021/12/27
1.4K0
前端工程师生产环境 debugger 技巧
并发Bug之源有三,请睁大眼睛看清它们
一切设计来源于生活,上一章 学并发编程,透彻理解这三个核心是关键 中有讲过,作为"资本家",你要尽可能的榨取 CPU,内存与 IO 的剩余价值,但三者完成任务的速度相差很大,CPU > 内存 > IO分,CPU 是天,那内存就是地,内存是天,那 IO 就是地,那怎样平衡三者,提升整体速度呢?
用户4172423
2019/09/10
4540
并发Bug之源有三,请睁大眼睛看清它们
和大象装冰箱一样:开发gRPC总共分三步 【掘金签约文章】
上一篇文章我们介绍了ProtoBuf的使用,不了解ProtoBuf的同学建议先读这篇文章:签约掘金:一文带你玩转ProtoBuf 【文末抽奖】,会用protobuf是学习gRPC的基础。
王中阳Go
2022/10/26
4380
和大象装冰箱一样:开发gRPC总共分三步 【掘金签约文章】
我要怎么去学一门编程语言呢?
在上一篇文章中有提及 “如果学的话,我学什么语言?” 这样的一个问题,并且列举了相关的对应关系,这里可以参考上一篇文章:传送门
做棵大树
2022/12/30
3680
我要怎么去学一门编程语言呢?
对吴恩达 workflow 概念产品化的思考!
本文针对当前 workflow 类型产品所存在的问题,思考了产品设计的方法论,主要内容包括:将任务进行形式化表达,提出 workflow 的系统设计可以形式化地表达为 DFA 的构造,以及流程节点设计是给定约束条件下的 DFA 状态数量最小化问题。
Datawhale
2024/06/19
2050
对吴恩达 workflow 概念产品化的思考!
面向对象编程
面向对象编程更适合构架大规模复杂应用,采用面向对象编程思路编写的代码更加容易扩展和维护。面向过程编程代码写起来更加容易,直接了当,但是代码的复用性和封装性比较差。函数式编程代码复用性、抽象级别更高、代码健壮稳定,但是二次修改比较困难。
一行舟
2022/08/25
7070
Redux助力美团点评前端进阶之路
摘要 都说Redux好,但Redux到底好在哪,它真的解决了业务中遇到的问题吗? 因为在业务中引入Redux而带来的额外成本是否让你苦恼过? 会不会是我们打开Redux的方式不对? 本次分享将主要介绍
IT大咖说
2018/04/03
1.5K0
Redux助力美团点评前端进阶之路
硬核!万字长文!Java零基础入门到精通知识点汇总
其实学习 Java 学到什么程度算是精通,这个其实没有盖棺定论的,也不是说你拿个年薪几十万的 offer 就可以自诩精通了。
牛仔码农
2021/07/15
4200
当webpack有了vite的速度
是的,这就是webpack慢的原因,由于webpack对于所有运行资源进行了提前编译处理,对依赖模块进行了语法分析转义,最终的结果就是模块被打包到内存中。
zz_jesse
2021/09/22
1K0
「微信小程序」生成水印原理与插件编写
今天分享一个小程序生成水印的小技巧——canvas绘制背景图,接下来我会详细介绍绘制的细节。希望开发过微信小程序的同学可以把文章收藏起来,这样如果以后遇到类似的需求,可以翻出来作为参考。
用户6835371
2021/07/12
2.1K0
技术 | Python从零开始系列连载(十四)
导读为了解答大家初学Python时遇到各种常见问题,小灯塔特地整理了一系列从零开始的入门到熟练的系列连载,每周五准时推出,欢迎大家学积极学习转载~
灯塔大数据
2018/07/25
5820
技术 | Python从零开始系列连载(十四)
2019Java面试宝典 -- JavaSE基础篇
1)继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段。
浩Coding
2019/07/12
2.1K0
2019Java面试宝典 -- JavaSE基础篇
趣谈GC技术,解密垃圾回收的玄学理论(一)
导语:大多数程序员在日常开发中常常会碰到GC的问题:OOM异常、GC停顿等,这些异常直接导致糟糕的用户体验,如果不能得到及时处理,还会严重影响应用程序的性能。本系列从GC的基础入手,逐步帮助读者熟悉GC各种技术及问题根源。
腾讯云中间件团队
2021/03/24
5071
趣谈GC技术,解密垃圾回收的玄学理论(一)
机器人狂欢、AI预测厄尔尼诺、后浪可畏:2020WAIC黑客松亮点纷呈
2020年7月8日-11日,由张江集团、优必选科技、软银集团旗下软银机器人、Watson Build 创新中心、机器之心联合组织的世界人工智能大会黑客松,首次以远程和小规模线下结合的方式举办,作为大会期间唯一一场黑客松大赛,以别开生面的竞赛形式和赛题吸引了来自全球顶级开发者同台竞技。经过三天不舍昼夜激烈的角逐,三大赛道优胜团队终于出炉并在WAIC开发者日主单元上进行了颁奖,比赛共计16支团队收获佳绩,最小年龄获奖者为高一学生。
机器之心
2020/07/21
6160
初级前端如何突破瓶颈
自 15 年 9 月第一次接触前端开发到现在已经过去了五年多,最开始是从一个很小的外包团队团队出身,没有带,没人管,几乎一个人干了 2 年多的活。
Cookieboty
2021/01/06
4870
服务假死问题解决过程实记(三)——缓存问题优化
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ajianyingxiaoqinghan/article/details/89736394
剑影啸清寒
2019/05/26
7530
推荐阅读
相关推荐
深入理解同步和异步、阻塞和非阻塞、并行和串行这几个概念
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验