在接下来的这篇系列教学中,我将带你重新认识前端。
前端发展史:从青铜到黄金时代
我本人是在 2006 年开始接触前端的。当初回想起来,那会儿前端还处于史前的“青铜时代”,甚至网页的次要交互都还是依附切换超链接来实现的。
前端的史前记忆:“青铜时代”
那时候,谷歌刚刚基于 Ajax 公布的 Gmail 也没多久,尽管这项平凡的技术标记着 Web 1.0(动态网页)到 Web 2.0(动静网页)的迈进,但在国内仍然少有人懂,如果过后谁能够对这项技术娓娓而谈,那几乎就是大神的级别了。
过后我还是个学生,喜爱前端纯正是趣味使然。那时我混黑白棋社区,想着给黑白棋界面写插件,但本人又不懂界面相干的常识,于是开始通过各种形式学习前端。
真想学的时候才发现网络上的前端材料很是稀缺,所以我基本上都是先从图书馆借书,而后再在电脑上跑案例验证这样的形式来学习的,当初想起来,还真是一段艰巨的岁月。
当然,这段经验也为我日后的前端生涯轻轻埋下了一颗种子,我逐步开始把本人的职业规划路线放在了前端上。
这在过后是个不堪设想的想法,因为那时的前端岗位不管从支出上还是在职责上,都远落后于其余岗位。然而,我基于对技术发展趋势的判断,认为前端在将来会越来越重要。
进入发展期的前端:“白银时代”
2008 年,我毕业了,也很幸运地失去了一个既能施展我的 C++ 短处,又能兼顾前端倒退布局的职位:微软北京的软件开发工程师,恰好负责的是 Windows CE 上的 IE 浏览器开发,在这里,我接触到了过后最先进的软件工程体系,并且积攒了很多 UI 架构教训。
两年后,我退出了隆重做电子书,负责电子书的文本排版工作,这个工作是一个既写底层又写 JavaScript 的岗位,同时排版引擎也是浏览器的重要组成部分,也让我对浏览器的工作原理有了更深刻的了解。
在隆重前期,我退出了 WebOS 我的项目,负责前端框架,我开始基于挪动的角度思考前端交互和框架,这份工作让我离前端又近了一步。
然而很遗憾,因为种种原因,我在微软和隆重的几个我的项目都不算胜利,除了电子书实际上市但销量不高,Windows CE 7.0 和隆重的 WebOS 都在公司外部夭折。
本人亲手构建的产品,却因为非技术起因没有服务到最终用户,对我来说,是件十分遗憾的事件。不过,这段时间,也让我更加确信前端技术的价值。
回过来看,那几年,前端技术开始了它的大踏步倒退,那一段时间,能够说是前端的“白银时代”。最直观的体现之一就是前端逐渐从后端拆散了进去,它的代码也变得复杂了起来,还须要保留数据、解决数据、生成视图等等。
悄悄之间,我发现前端曾经从零散的“工序”逐渐倒退成为有体系和倒退指标的职能,同时,在越来越大的前端团队中,工程化的思维也逐步萌芽。我深有感触,前端曾经不再是他人眼中的“小菜一碟”了。
从前端到“全端”:“黄金时代”
在这样的行业背景里,从隆重到职后,我退出了阿里巴巴做手机淘宝开发,这也是我首次从事真正的前端工作。
在手机淘宝,前端团队的各种基础设施也逐步建设了起来,从最开始的多屏适配计划、根底库、工具链到页面搭建平台和性能体系,最初到客户端交融计划 Weex,我随着团队一起经验了业务倒退、团队本身成长和行业改革。
与此同时,在我退出阿里巴巴后的这段时间里,随着挪动时代的到来,前端也开启了本人的“黄金时代”,它的职责变得更加重要,有了独立的公布权限,技术也变得更加简单。
一些传统软件开发和互联网服务端的方法论逐渐移植到前端开发中,并造成了前端本人的工程体系,诸如继续集成、前后端拆散、线上监控……
架构方面,前端架构的工作也从简略的解决兼容和格调问题,逐渐过渡到提倡组件化和 UI 架构模式,最初造成了新一代的前端框架 React、Vue 和 Angular,他们也在竞争和互相学习中成长。
前端开发之痛:散点自学 + 根底不牢
正当处于“黄金时代”的前端技术在全力以赴极速前行之时,我却发现,前端开发者们的步调仿佛慢慢有些跟不上了。
因为在我职业倒退的后半段,面试和造就前端工程师曾经成为我的长期工作职责。在这期间,我意识到,目前的前端教育简直是齐全缺失的。
在面试应届生过程中,我会习惯性地问体现比拟好的同学“你是如何学习前端的”,而我失去的答案多是“自学”“在社团学习”,却从未听到过“在学校学习过”这样的答案。
而对于工作之后的前端开发者来说,没有零碎学习的问题依然存在,经常有一些具备多年从业教训的工程师,依然会在看到一些用法时惊呼:“还能够这样!”
在我看来,这些用法都是一些根底的不能再根底的知识点,然而他们却浑然不知。
如果深刻进去理解,你会发现,外表上看他们可能是一时遗记了,或者之前没留神,但实际上是他们对于前端的常识体系和底层原理没有真正系统地了解。
在阿里工作的时候,我戏称很多同学学前端的形式是“土法学前端”,他们对于常识的了解根本都停留在点上,素来没有大范畴把这些点串成线,造成本人的常识体系,因而才会呈现下面说的脱漏和盲点。
这个问题在一些始终在小公司工作的前端工程师身上十分突出。
常常能看到一些案例,一些有技术谋求、有激情的工程师,因为技术敏感度和主观能动性都不错,所以工作了五六年之后,逐渐开始在本人的公司做一些技术治理相干的事件了。
然而,因为他们所在公司的业务并不简单,也没有技术积攒,所以他们本身的技术水平其实并不高,能够说还处于十分高级的阶段(可能面试连阿里 P6 都过不了)。
做了治理,技术没跟上,并且还错过了最佳的学习工夫,这个境遇可想而知,他们在工作中大概率只能是被动地承受需要解决问题,而后也同时焦虑着本人的将来,焦虑着本人的竞争力。
对于前端工程师成长,我认为须要两个视角。一是立足规范,系统性总结和整顿前端常识,建设本人的认知和方法论;二是放眼团队,从业务和工程角度思考前端团队的价值和倒退须要。只有这样做,才可能继续倒退,在高速倒退的技术和工程浪潮中稳稳立足。
这也正是“重学前端”这个教程的初衷,我心愿提供一些视角,带你以齐备、体系化的形式了解和思考前端的基础知识和工程实际。
除此之外,前端工程师也是开发工程师的一员,除了前端本身的畛域常识和工程特点外,你还须要理解程序员通用的编程能力和架构能力。
所以,想要成为优良的前端工程师,我感觉你须要通过系统地学习和总结获取常识,通过练习获取编程能力,通过工作教训来获取架构和工程能力。
当然,一篇教学无奈穷尽前端庞杂的常识,讲知识点也不是咱们的指标。知识点讲的再好再全,也不肯定能记得住。
咱们教程的指标是帮忙你建设本人的常识体系,依据你本人的了解把前端的畛域常识链接起来,造成构造,这样做,岂但能帮忙你记忆常识,还能在其中发现自己常识的缺失,甚至能够凭借常识体系来判断常识的重要性,来决定是否要深刻学习。
在这个教程里,我将常识分成了四个模块来解说:
- JavaScript;
- CSS 和 HTML;
- 浏览器实际;
- 前端综合利用。
前三个模块是前端的基础知识,是集体的前端能力晋升,而模块四则是前端团队倒退相干的内容,有助于你和团队的整体进步。
在 JavaScript 局部中,我次要会从文法和运行时的角度去探讨 JavaScript 语言。它们是相互关联的,而语义就是文法到运行时之间的桥梁;它们别离又是齐备的,任何语言个性都离不开两者,所以从语法和运行时的角度,咱们都能够理解残缺的 JavaScript。
CSS 和 HTML 局部,会偏重从语言和设计思维的角度来解说,咱们同样能够对两者的全貌建设一些认知。
浏览器局部,蕴含了浏览器工作的原理和一些重要的 API,包含 BOM、DOM、CSSOM 和其余一些内容。理解了这些常识,你能力把 JavaScript 和 HTML、CSS 连接起来,用 JavaScript 来实现性能。
前端综合利用局部,次要是我的一些工作教训,我会抉择我在手淘和淘宝工作中的一些案例来辅助解说。
后面,我说到前端是一个十分年老的职业,但我依然认为前端具备很多空间和机会,一些基础设施依然简陋,前端的能力能够带来更多的业务场景,这些有待于咱们去挖掘。
前端社区十分沉闷,新技术也在一直呈现。在这样的环境下,机会和竞争并存,学习也犹如逆水行舟,逆水行舟,建设本人的常识体系和方法论,你才可能放弃当先劣势。
我心愿从我的教训登程,给你一些启发和帮忙,并借由这个教程帮你建设本人的前端常识体系。同时,我也置信,在你们两头肯定会产生更多可能率领前端畛域获得冲破的、优良的前端工程师。
最初,也心愿你能和我分享你的前端故事和经验,你是怎么走上前端路线的?你心愿未来成为怎么的前端工程师?欢送在留言区与我分享。
更多精彩请看:开发者网站