日本后现代主义做家村上春树写过一本富有哲理的书——《当我谈跑步时我谈些什么》。前端
书中,他谈到,跑步跟写做同样:都须要坚毅隐忍,追逐超越;都须要心无杂念,锲而不舍。全书落笔之处,没有浮华旖旎,而是娓娓道来迷惘、失败和挣扎。webpack
这本书名义上是在谈跑步,倒是在我的创做低潮时期对突破的不断思考。仔细想来,这样的思考对于一位工程师也相当重要。git
前端领域,入门相对简单,但是想要“更上一层楼”却难上加难,也就是咱们常说的“职业天花板较低”,君不见——市场上高级/资深前端工程师百里挑一。其实,这固然未必彻底是坏事,一旦突破瓶颈,在技能上脱颖而出,即是更广阔的空间。 那么,如何从夯实基础到突破瓶颈?程序员
接下来就让咱们一块儿来讨论下:当我谈前端进阶时我谈些什么。web
说到进阶,我想先谈谈咱们每一个人心里的焦虑和迷茫,正视这种情绪是学习的第一步。对于每个追求进步的人来讲,瓶颈期总会在各个阶段“如约而至”。早在公元前某年,庄子就说过:面试
吾生也有涯,而知也无涯。以有涯随无涯,殆已!已而为知者,殆而已矣!
而现现在,信息爆炸时代,信息量呈几何级数增加,知识彷佛唾手可得。那么:“该学什么?”,“到底该怎么学?”,“学完以后又该作什么?”,大部分人都会在知识面前焦虑、迷茫。算法
一样地,对于有必定工做经验的工程师来讲:编程
可以正视并解决这几个问题,将是更进一步的关键。但是这些困扰对前端工程师来讲貌似来得更加猛烈:前端技术发展备受瞩目,前端工程师变得愈加重要的背后是相关技术的不断扩张和更新换代。所以,咱们比以往任什么时候候都更须要主动学习。但据我观察,目前网络上的学习资料每每存在如下两个问题:后端
坦白来讲,我也是这些“学习资料”的搜集者,若是没有系统针对性地学习和反复的刻意练习,那么结果就是觉得收藏的是知识,其实收藏的是“知道”。觉得掌握了知识,其实只是囤积了一堆“知道”。设计模式
记得我刚接触前端编程时,jQuery 风靡一时,其清新优雅的 DOM 操做、稳如磐石的兼容性处理、灵活高效的封装和链式调用,让人如沐春风。
彼时,我幼稚地觉得“这就是颠覆”,事实倒是“这只是开始”——随着三大框架的崛起,技术更迭就像“暴风雨前的宁静”,jQuery 忽然就被其余“先进的生产力”抛在背后了。因而咱们看见各大平台技术进行“改朝换代”,引领开发潮流。
这还只是一个类库在前端浪潮中的兴衰。再想一想 ES 语言规范的演进速度,HTML5 的扩张幅度,跨端从 Ionic 到 React Native 再到 Flutter,CSS 从基本布局模型到弹性盒模型再到原生 Grid 方案,构建工具从 Grunt 到 Gulp 再到 webpack/Rollup......
前端三大方向 JavaScript、CSS、 HTML 的背后是无尽的碎片化场景。前端是最贴近用户的“战线”,它基因里就须要处理“大象万千”。同时,无论是跨平台仍是语言特性,它都会让开发者感到迷茫:
目前咱们正在经历所谓的“资本寒冬”,无论是大厂、二线公司仍是创业团队,“优化人员结构(裁人)”的新闻层出不穷。可是据我观察,“高级前端工程师”的招聘需求却“逆流而上”,具有高水平和经验的开发者不管在任什么时候候都备受追捧。所以,磨练技能、积累项目经验将是全部前端工程师的核心诉求。
做为从业者,我也在思考如何让前端知识更有价值,如何突破瓶颈,进而实现进阶。
**好了,到如今就到了软文时间。受于平台所托,有了这篇文章。在此以前的部分,是我对于现代前端的一些感想,以后部分是我作的一门课程《前端开发核心知识进阶》
的介绍。若是不想浪费时间的读者能够直接关掉页面,感兴趣的朋友不妨继续阅读。**
当 GitChat 联系我想要打造一门系统而全面的前端进阶课程时,我欣然接受。不光是由于想把本身在海外和 BAT 服务多年积累的经验分享给你们,也是想把长时间以来收藏的“干货”梳理一遍,系统性整理输出,和你们一块儿总结提升。最终,就是呈如今你们面前的这门《前端开发核心知识进阶》。
但愿这门课程不只详述“知识”,更能体现编程“智慧”,能让全部订阅的朋友们一块儿思考,一块儿进步。
说到课程特点,我想结合上面提到的一些关键点来介绍。
对于前端发展的瞬息万变,我但愿这门课程,在重视“亘古不变”的语言基础上,力求为你们介绍更先进的开发技术。好比服务端渲染,好比 HTTP 3.0,好比使用 Lerna、yarn workspaces 构建 monorepo 项目,好比框架演进和虚拟 DOM,等等。
对于前端开发工程师的发展,这门课程中,我将穿插大量经典面试例题,其中既包括我做为 BAT 面试官的“私房题”,又涵盖我做为面试者碰见的“经典题,以及和业界前辈讨论过的“开放题”。在平时开发和学习中,我也收藏积累了大量精品文章,会一并分享给你们。
对于前端工程师的将来前景,我认为从开发菜鸟到资深工程师,除了主观能动性之外,一个关键瓶颈在于“不是每一个人都能有机会接触到好项目”。这里的“好项目”是指相似“项目重构”、“类库迁移”、“复杂应用设计”、“疑难 bug 定位”等对开发者基础和设计能力有高要求的项目。所以我但愿,这门课程,咱们除了剖析理论,更加注重经验指导和最佳实践。
同时,在这门课程中,我会插入大量代码设计模式、函数式、源码分析、组件设计和封装、开源库解读、项目代码组织等内容,也会手把手带领你们查阅 issue、changelog,从社区中汲取精华。构建更为真实的开发场景,直击实践中的高频痛点。
好比:
第二部分 JavaScript 语言进阶
第三部分 不可忽视的 HTML 和 CSS
其中前三部分介绍 JavaScript、 HTML、CSS ,对于一些热点、重点话题,好比“this 指向”、“闭包、做用域、执行上下文”,以及一些高频考察点进行了深刻分析;对面向对象、原型与原型链、异步这些内容进行强化,从实现的角度,结合具体实例分析 Promise;结合 ES Next,从 ES 的发展来看语言的演进。
接下来进入了前端框架部分,咱们以 React 为主,分析框架对前端到底意味着什么,以及咱们应该如何学习 React。事实上,对 React 的学习,不能只停留在“会用”的层面,其设计原理和思想演进,对于培养编程思惟很是有益,也有利于学习者能从更高的角度看待问题。
资深程序员永远逃不开的工做之一就是“基础构建”、“项目架构”。前端工程化部分咱们从代码组织谈起,从规范实施谈起,结合 webpack、Lerna 等工具,为你们还原一个真实的“基建”场景,共同探索学习。
性能优化是理论和实践相结合的重要话题。
咱们须要大量理论知识:明白缓存策略,了解浏览器渲染特色,清楚 JavaScript 异步单线程对性能意味着什么,还要了解网络传输知识,等等。咱们也须要大量实践经验:用得了 Chrome Devtool 分析火焰图,跑得出准确的 benchmark,知道防抖和节流的区别,懂得资源合并、拆分的利弊,了解业界最新性能优化方案,等等。
这一部分,咱们除了介绍重要大量知识点外,也会结合代码/项目实例来展开。
前端开发离不开编程基础,培养良好的编程思惟,了解基本的算法知识,是每个工程师所必须具有的。在这一部分,咱们用 JavaScript 来描述多种设计模式,设计模式并非纸上谈兵,实实在在地存在于咱们的业务代码当中;手把手带你们用 JavaScript 处理各类数据,说到底前端仍是处理数据,展现 UI;固然更少不了对一些常见算法的强化。
做为一名前端开发者,不了解互联网传输的奥秘,不清楚网络细节是难以进阶的。网络知识关联着性能优化、先后端协做等核心环节,所以这一部分咱们将重点强化网络基础。
学习进步离不开社区的力量,“授人予鱼不如授人予渔”。在课程的最后,我会讲述个人学习方法:如何投身到社区当中,与广大开发者一块儿讨论;如何阅读前人的经典思想,站在巨人的肩上看得更远;如何解读开源库,从中汲取营养;如何在面试和述职当中,正确地表达汇报.....
最后,也但愿和每一位读者保持长线联系,一块儿讨论问题,共同进步。