前端工程化和设计模式的学习经历

前端工程化和设计模式的学习经历,第1张

对于我来说,2022年的关键词应该是“阴天更应打开窗帘”

时间一点也没停歇,马上2022就结束了,我翻看了2021年终总结,和2022新年计划,感慨万千,我们还是没有从疫情中走出来,防疫政策从严到松,谁也不好说是好是坏,凡事都有利弊,总是要积极面对吧。工作上还算稳定,不像很多人丢了工作,还有一些毕业生不好找工作。最让我开心的还是宝宝的平安出生,虽然是刨腹产,虽然家人都感染了新冠,但是好在都扛过去了,都转阴了,不得不说,平安健康真好,多亏了家人的付出,家人给的爱总能给我们无限的能量。下面详细展开讲讲吧。

工作

在摩天轮度过了第一年,相信大家和我感觉一样,经济的寒冬还是没有过去,这和新冠疫情是分不开的。不过还是很乐观,自我们放松防疫政策后,第一波疫情正在凶猛袭来,等大家都感染过一遍后,对新冠病毒的免疫也会大大加强,这个看国外的状况就可以得出结论。其实新冠的伤害确实没有那么可怕,我观察到的大部分人也都是乐观的态度。相信我们能携手共度难关,各个演唱会、线下剧场也能如雨后春笋,蓬勃开演,在迎接新春的同时,迎接新的后疫情时代。

除此之外,自己做了Uniapp的技术分享,分享了Uniapp的技术路线及构建相关的内容,对vite打包构建uniapp应用做了研究和分享,最终我的感觉是,相同的技术方案用一个框架还是很不错的选择,对于小程序,包括微信小程序、支付宝小程序、抖音小程序等基本都是基于微信小程序架构做的包装,用像uniapp这样的技术框架做会省很多事,需要做的兼容也不多,一套代码生成多个端非常高效。但是对于app和H5则需要兼容的东西就比较多了,建议不要做到一起,相反会增加很多冗余的代码,使代码可读性大大降低。

最后,基于设计模式,我也对我负责的一个全栈项目做了重构,主要是用了策略模式,代码更加清晰松耦合,相信对于后续加需求也更加得心应手。

学习

今年我着重把学习重点放在了两大块,一个是设计模式,一个是前端工程化

1、设计模式

首先我看了一本书,《JavaScript设计模式与开发实践》,因为我是前端出身,所以看了这本基于JavaScript语言的设计模式,看起来更丝滑,但其实设计模式都是相通的。书中有几个实用的我说一下。

首先是策略模式,最为实用,策略模式是解决代码堆砌冗长的最好办法,将同类型的对象抽象出来,定义一系列的算法,封装起来,并且使他们可以相互替换,就这样可以讲代码拆分解耦,也更健壮。有兴趣的可以看看这个文档,里面有一个小例子:策略模式 · 语雀。

其次是代理模式,这个应用的地方也很多,很多时候我们需要使用第三方或者是别人已经写好的方法或组件,但这个方法或组件又比较复杂,不好直接“插手”,这时我们可以考虑写个代理方法或组件,实现中间代理的功能。这样既不更改原方法组件,也可以达到新的需求。代理模式的另外一个用途是在做缓存时,频繁地调用需要大量计算的方法会造成性能的消耗,但如果我们在代理层做一层缓存,这样就能达到用内存换CPU的目的,很多时候会提升整体性能。这里也有个小例子:代理模式 · 语雀

另外还有很多,像发布订阅模式等也比较常见,在解决一些需要分发和订阅的需求时比较常用。这里就不一一赘述了,感兴趣的可以看下这本书。同时“墙裂”推荐大家在写代码的时候把这本书放在旁边,时刻提醒自己写出优雅而健壮的代码,尤其是那些刚开始入行的新人。

2、前端工程化

说到前端工程化,不得不提AST,抽象语法树(Abstract Syntax Tree,AST)是源代码语法结构的一种抽象表示,它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。在代码语法的检查、代码风格的检查、代码的格式化、代码错误提示、代码自动补全等等场景均有广泛的应用。

编译器整体执行过程主要可以分为三个步骤:

Parsing(解析过程):这个过程要经词法分析、语法分析、构建AST(抽象语法树)一系列操作;

Transformation(转化过程):这个过程就是将上一步解析后的内容,按照编译器指定的规则进行处理,形成一个新的表现形式;

Code Generation(代码生成):将上一步处理好的内容转化为新的代码;

有兴趣的可以去看下我总结的这个文档库:前端工程化 · 语雀 《前端工程化》

生活

家人

今年我的宝宝,小拿铁出生了,他真的太可爱了,我也终于当爸爸了。从他出生的那一刻,我便知道了,我又多了一份责任,陪他健康成长,给他一个快乐的童年,也给他最大的支持,同时我也得更加努力了。

 了解更多的前段知识请看下面我精心为您整理的前端必看的书籍,希望您喜欢!

 十本学习前端必看书籍

 第一本,入门

 《Head first HTML&CSS》

 最好的入门书。看两遍就对HTML & CSS 有个大概印象了。

 此时把w3cschool作为备查手册收藏起来

 第二本《CSS权威指南(第三版)》

 最权威的CSS书籍,除了阅读W3C的文档外的不二选择(就是翻译有点操蛋,遇到感到难理解的地方可能还是要求助于网络资源)。有时间(无论是现在还是将来)可以反复看,并当做字典随时查。

 第三本《精通CSS》

 广受前辈推荐的一本书。上一本书是字典的话,这本书相当于《中学生作文大全》,汇集了一些CSS的最佳实践。

 第四本《图解CSS3:核心技术与案例实践》

 这本书比较新,讲解的是最新的CSS3(前三本书停留在CSS21时代),CSS3也是必学的,不是什么可学可不学的最新技术。

 HTML CSS值得看的书就这些(之后会有一本《CSS秘密花园》,尚在翻译中,也很值得期待),剩下的就是自己写还有看技术博客了。接下来是JavaScript,HTML和CSS都是没有逻辑的标记型语言,JS才是真正的编程语言,评价前端工程师的水平就看这个了。

 第五本《JavaScript DOM编程艺术》

 最好的JS入门书籍,一目了然地告诉你如何用JS操作DOM(这是浏览器端编程的基本功),还灌输了最符合标准的编程理念。可惜有点老,最新一版是2010年的,以至于部分内容有点过期,例如本书内经常提到“某某方法浏览器不一定支持,需要小心使用”,而这些历史遗留问题当今已经不存在了,阅读过程中无视就好。

 第六本《JavaScript高级程序设计》

 每个前端必看的书,此书是前端工程师科技树的关键一环。看完此书后再看看之后各类进阶书籍会比较好。

 俗称红宝书,也算入门书籍,虽然是大部头(七百多页),但至少通读一遍。

 全部掌握了,你可以在网络社区里谈笑风生了,经过实践的锻炼后,面试个前端工程师的岗位应该都没问题了。

 第七本《JavaScript语言精粹》

 也是前端必看。薄薄一百来页,对JS的去粗取精。

 第八本《你不知道的JavaScript》

 这是一套丛书, 目前为止仅翻译了第一卷。每本都挺薄,深入介绍了JS中的重要概念。

 第九本《JavaScript设计模式》

 “设计模式”是软件工程的重要课题,相当于高考时候的答题套路。前人总结出来的应对各种问题的模板。也算是必看书籍。关于JavaScript设计模式的书籍目前也有好几本,也有国人写的,挑一两本看看就好。

 第十本《高性能网站建设指南》(及其续篇《高性能网站进阶》)

 告诉你真正的商业公司的前端是怎么优化一个网站的。当然优化的问题不是看看书就能解决的,最好时刻了解你的同行们的经验。

 第一阶段:HTML和CSS的学习

 HTML就不多说了,基础中的基础,这个都不会的小伙伴请参见HTML手册,认真学习W3C课程,稍有基础之后可以跟着视频学习《HTML+CSS基础课程》。

前端开发必看的14本书

 1、《CSS权威指南》第三版

 这本书实在太适合小白用户了,是一本为初学者清扫障碍的书籍。同行一致认为这本书是学习CSS基础的首选。CSS界权威Meyer大师的作品,翻译水平也灰常赞!

 2、《CSS那些事儿》

 不用于一般技术类书籍的枯燥乏味,这本书很有意思。作者是蓝色理想经典论坛标准版荣誉版主林小志,具有多年网站设计和网站重构经验,在CSS、XHTML等前台技术方面有着深厚功底。

 全书以传达CSS布局思维为中心,通过页面中的文字、、表格、表单等常见元素的处理及各种页面布局方式的使用,使读者能深入了解到如何在页面中更好地运用CSS布局。阅读本书之后将会发现,原来CSS样式居然是这么好玩的东西。

 3、《精通CSS:高级Web标准解决方案》第二版

 前段学习必备书籍,作者Andy Budd是国际顶尖的网页设计师,著名的Web标准倡导者,网页咨询公司Clearleft的创始人之一。

 本书将最有用的CSS技术汇总在一起,总结了CSS设计中的最佳实践,讨论了解决各种实际问题的技术,重点讲解了一系列的css开发技巧,是前端开发人员必备的手册。

 4、《CSS禅意花园》

 这是一本令人惊叹的书!必须用一个字形容的话,那就是:美!内容编排合理,文字生动有趣引人入胜,通过一个个实例引导读者阅读,强烈推荐!

 作者是世界著名的网站设计师,书中的范例来自网站设计领域最著名的网站——CSS Zen Garden(CSS禅意花园)。童鞋们自己去领略吧。

 第二阶段——JavaScript的学习

 Javascript的书籍当然还是要看老外的,你懂得~

 5、《JavaScriptDOM编程艺术》

 此书绝对是入门好书,简洁优美的文笔简直是工具书中的典范啊有木有!

 这本书讲述了JavaScript和DOM的基础知识,但重点放在DOM编程技术背后的思路和原则,然后将这些概念贯穿在书中的所有代码示例中,使你看到用来创建库页面的脚本、用来创建动画效果的脚本和用来丰富页面元素呈现效果的脚本,最后结合所讲述的内容创建了一个实际的网站。

 6、《JavaScript权威指南》第6版

 这本书非常适合初级、中级程序员,是学习核心JavaScript语言和由Web浏览器定义的JavaScript API的指南和综合参考手册。

 第6版涵盖HTML 5和ECMAScript 5。很多章节完全重写,紧跟当今最佳Web开发实践。本书新增章节描述了jQuery和服务器端JavaScript。

 7、《JavaScript高级程序设计》第三版

 《javascript权威指南》比较像一本字典,而这本《javascript高级程序设计》可以算是一本由浅入深的好读物。这两本书看完后,对javascript一定会有较为深入的了解。

 作者Nicholas C Zakas是世界顶级Web技术专家,现为雅虎公司界面呈现架构师,负责My Yahoo!和雅虎首页等大访问量站点的设计。这本书,看一遍不能算看过,至少读两三遍,每一遍都会让你有新的收获。

 8、《高性能JavaScript》

 本书从性能角度全面分析js,含金量非常大,很多知识都是作者通过实践总结出来的,都是经验的积累,强烈推荐!

 同是Nicholas C Zakas所写,如果看《JS高级程序设计》觉得理解不太透彻,学习较为吃力,那么我强烈建议你看看这本书,真的是极好的一本实践类书籍,言简意赅,灰常实用!

 9、《JavaScript王者归来》

 这本《JavaScript王者归来》不仅是一本传播知识的书,更是一本求道的书。O(∩_∩)O 有追求的程序员一定不要错过!愿神力与你同在!

 它揭开了JavaScript的面纱,绕过误解和虚幻的表象,引领你探索程序王国的奥妙。这是一本探寻程序设计思想本源的“魔法典籍”,也是一本Web开发工程师们需要的案头参考书。

 10、《JavaScript模式》

 它绝对不是一本入门级别的书,适用于希望将自身的Javascript技巧提高到一个新层次的专业的开发人员和程序员。

 《JavaScript模式》包含了实现每个讨论的模式的实践建议,并附有数个可以立即上手的范例;同时还可以学到一些反模式。短小精悍,进阶必读!

 11、《JavaScript设计模式》

 进阶教程,得有一定功底才能看懂。反之,如果你轻而易举就能拿下此书,说明你已非等闲之辈~

 本书共有两部分。第一部分给出了实现具体设计模式所需要的面向对象特性的基础知识,第二部分则专注于各种具体的设计模式及其在JavaScript语言中的应用,主要介绍了工厂模式、桥接模式、组合模式、门面模式等几种常见的模式。

 第三阶段——jQUery的学习

 12、《锋利的jQuery》第二版

 入门首选,简单易懂,非常实在。《锋利的jQuery(第2版)》循序渐进地对jQuery的各种函数和方法调用进行了介绍,对jQuery分析的逻辑非常值得学习。

 第四阶段—学无止境!

 如果以上书籍你全都搞定了,那么,恭喜你,你真的很厉害!到这种程度,相信你也不太需要别人推荐书籍了,不过我还是厚着脸皮推荐两本吧。

 13、《高性能网站建设指南》

 前端开发可以优化网站剩余70%~80%性能,这本书不算厚,几个小时就能看完,推荐前端开发工程师看看。在《高性能网站建设指南》中,作者给出了14条具体的优化原则,每一条原则都配以范例佐证,并提供了在线支持。

 14、《Web开发敏捷之道》第二版

 Web开发敏捷之道》曾荣获Jolt大奖“最佳技术图书”奖。在第1版的内容架构基础上,第2版增加了对Rails 12中新特性和最佳实践的介绍。此书覆盖了rails12的方方面面,其本身也很"敏捷",翻译也非常好。

在通常的树结构中,它是一个二维结构,即:它除了有高度,还有深度,它在前端页面中的表现如下:

虚拟树 技术即是以 虚拟列表 技术为基础进行的扩展,但其需要解决以下问题:

从上面的说明可以看到,虚拟树其实就是一个比较特殊的,可以支持判断是否为某一结点的下级数据的列表结构,且应该是一个按照树结构排好序的列表结构。要按这个结构创建一个列表大体上有以下两种方式:

1 key方式

key方式主要是在key的取值方面做手脚,通过解析key就可以知道当前节点处于哪里,节点下所有子节点有哪些。

key如下:

从上面可以看到,这种方式通过key的结构来判断下级结点与上级父节点。

2 预排序树(MPTT)方式

预排序树使用 左右节点值 的方式来处理:排序、父子节点判断,使用 深度 来处理节点的层级。

预排序树结构如下:

从上面可以看出:

目前入门前端的人群分类

1、计算机相关专业出身系统走过计算机的理论基础,比如计算机组成原理、操作系统原理、计算机网络、算法数据结构、设计模式,至少用过两门以上编程语言(强类型+弱类型)。

优点:理论、架构方面扎实,有整体计算机思维,内功不错,外功学起来比较快。

缺点:部分人,前端相关细节技术不扎实,不过花时间能很快搞定。

2、非计算机出身自学(也包括计算机专业没好好学的)理论基础薄弱,后来因个人兴趣或者职业需求,自学前端开发技能。

优点:自学能力比较强,能够根据自己的兴趣规划学习内容。

缺点:部分人对前端没有整体的学习框架 ,属于东一片,西一片,不成体系,部分人计算机没有整体思维,建议系统梳理下前端知识体系结构,该补的还是要补起来。

门前端时的一些困境

1、因一些基础算法、数据结构理论不扎实导致一些编程思维难于理解。比如 原型链,如果清楚 数据结构中链表结构,那么这个东西不难理解,再比如 哈希值,懂得数据结构中哈希表,哈希值也就迎刃而解。

2、计算机体系结构、操作系统理论、网络理论不扎实导致到后期一些东西难于理解。比如有同学从前端学习入手,后来学习node开发 ,在 I/O ,进程、线程、IPC 、线程锁方面有些概念就比较难于理解,而导致不能很好得使用node 的api 。

3、前端整体体系架构没有做过深入思考。

导致用会用,但不知道为什么用,用另外一个有什么区别。

4、学习环境中无高手。

没有高手能够指导自己进入下一个层次。

5、有意识但是没有行动我的网盘收集了一堆资料或者一堆视频,然后就没有然后了 。

如何系统学习前端

网站开发开发大致分为前端和后端,前端主要负责实现视觉和交互效果,以及与服务器通信,完成业务逻辑。其核心价值在于对用户体验的追求。如果你现在是零基础学员,大致可以按如下思路学习系统学习:

基础部分

1、HTML + CSS 这部分学习,可以模仿一些网站做些页面。在实践中积累了一些经验后,可以系统的读一两本书,推荐《Head First HTML 与 CSS 中文版》,这本书讲的太细了,我没能拿出耐心细读。你可以根据情况斟酌。

2、Java 要学的内容实在很多,如果没有其他编程语言的基础的话,学起来可能要费些力,建议马上看《Java语言精粹》,JS是一门很混乱的语言,这本书能够帮助你区分哪些是语言的精华,哪些是糟粕,对于语言精华,应该深入学习。糟粕部分能看懂别人写的代码就行,自己就不用尝试了。

进阶部分

有了以上基础,就可以进行一般的静态网页设计,不过对于复杂的页面还需要进一步学习。

1、CSS。必看《精通CSS》,看完这本书你应该对:盒子模型,流动,Block,inline,层叠,样式优先级,等概念非常了解了。作为练习可以看下《CSS艺门之匠》这本书,它对标题,背景,圆角,导航条,table,表单等主题都有详细的介绍。

2、Java。上面提到内容还不足以让你胜任JS编程。在有了基础之后,进一步学习内容包括:

a) 框架。

推荐jQuery,简单易用,学习方法也很简单,照着产品文档做几个页面就行了,不用面面俱到,以后遇到问题查文档就行了。框架可以帮你屏蔽浏览器的差异性,让你能更专注与Web开发学习的精髓部分。补充:可以使用 Codecademy 学习 Java,jQuery,用户体验真的很好(感谢 TonyOuyang )。

b) Java 语言范式 。这个名字可能并不恰当,只是我找不到可以描述“面向对象”,“函数式”这个两个概念的概念。Java不完全是一个面向对象的语言,它的很多设计理念都有函数编程语言的影子,甚至说如果你不用面向对象,完全可以把它理解成一门函数式编程语言。

Java的很多语言特性,都是因为他具有函数式语言的特点才存在的。这部分推荐先学习面向对象的基本理论,对封装,继承,多态等概念要理解,维基百科,会是你的帮手,另外推荐《Object Oriented Java》,应该有中文版。对与函数式编程我了解的也不系统,不好多说,可以自己百度一下。

c) Java 语言内部机制。必须弄清如下概念:JS 中变量的作用域,变量传递方式,函数的定义环境与执行环境,闭包,函数的四种调用方式(一般函数,对象的方法,apply,call),以及四种调用方式下,‘this’指向的是谁。这部分内容你会在《Java语言精粹》中详细了解。另外,你必须理解 json。

d) dom编程,这个Web前端工程师的核心技能之一。必读《Dom编程艺术》,另外《高性能 Java》这本书中关于dom编程的部分讲的也很好。

e) Ajax编程,这是另一核心技术。Ajax建议在网上查些资料,了解这个概念的来龙去脉,,维基百科上的内容就足够了。真正编程是很容易的,如今几乎所有框架都对Ajax有良好的封装,编程并不复杂。

f) 了解浏览器差异性。这部分包括CSS和js两部分,浏览器差异内容很多,建议在实践中多多积累。另外对于浏览器的渲染模式,DOCTYPE等内容应该系统学习。

3、HTML5和CSS3 。HTML5规范已经于2014年10月28日发布了,移动端HTML5和CSS3已经得到了非常广泛的使用,必知必会呀。

升级部分

有了以上知识,对于大多数小型网站,你应该已经可以写出能够工作的代码了。但要想成为更专业的前端,你还需继续努力。更高的要求大概还有四方面:1)易维护,2)可测试,3)高性能,4)低流量(移动端)。

易维护。对于页面你该理解‘样式’,‘数据’,‘行为’三者分离,对应的当然就是CSS,HTML,js。对于js代码,你最好了解设计模式,重构,MVC等内容。

可测性。

高性能。必读《高性能Java》

低流量。移动端关注比较多。

额外补充部分

前端项目同样面临软件生命周期的各个环节,首先是代码管理,你必须学会使用Svn和Git。其次是代码的构建,如今前端代码构建已经不是简单的压缩一下了,需要进行依赖管理、模块合并、各种编译,比需要学会使用Grunt、Gulp等前端构建工具。

以上内容只是简单说了前端学习的顺序。对于前端开发,基本内容就这些了,可以根据自己的兴趣爱好选择性学习以下内容。

1、交互设计。大公司依然有专业人士搞这些,不过不懂交互的前端一定不是好前端。推荐《简约至上》。

2、后端。

应该说前端工程师必须至少了解一门后端语言,不过如果爱好也可深入学习,入手难度比较低的应该是PHP了。这部分由可分为基于页面,基于框架两种。大型项目都是基于框架开发的,建议至少了解一个MVC框架,比如PHP的Ci、Yii、Yaf 等,好还框架的设计思想都大同小异。如今NodeJs在大公司已经得到普遍的使用,推荐大家使用在Node上使用Express框架做一些后端服务的开发。

3、Android和IOS开发。

时至今日,前端的工作领域已经非常广泛,native的界面开发本质上也是前端开发,个大公司都面临着Native环境和web环境页面同时维护的问题,如果能够在技术上得到统一,将会有巨大的价值。

如何才能快速入门前端

1、学习东西,自学是一种途径,然而在自学的过程中,很多人处于不知道自己不知道的状态。

2、另一种是跟着高手,开阔视野,达到知道自己不知道的境界,从而有方向,在短时期内进入到一个新的境界,节约时间成本。

前端数组转为树结构在我们平时开发中经常遇到,主要用到了递归回调。下面的做法可提供一种转换思路。

我们拿到的数据格式是

我们想要用来渲染页面的格式是

第一步,找出最上面的节点。很明显的parentId为空的数据是最上面的节点。

第二步,找出第二节点加到父节点child数组里面

newList 就是我们的结果。

步骤二三也可以这样处理,可以防止curListlength的值不为空的时候无限循环回调

前端是在浏览浏览器的时候,它是网络前台的部分,运行在pc端。

移动端等浏览器上展示给用户浏览的页面,利用完美的动态设计,能够给用户带来极高的用户体验。

前端前端技术一般分为前端设计和前端开发,前端设计一般可以理解为网站上面的视觉设计,前端开发则是网站的前台代码实现。

前端开发又最基本的三个核心,这也是必须掌握的三个重要的核心,分别是HTML、CSS、JavaScript这三个,在日常的生活中我们接触到的也很多,掌握了这三个,在前端开发应付也会很轻松。

应该熟练掌握的基础技能:

HTML4,HTML5语法、标签、语义

CSS21,CSS3规范,与HTML结合实现各种布局、效果

Ecma-262定义的javascript的语言核心,原生客户端javascript,DOM操作,HTML5新增功能

一个成熟的客户端javascript库,推荐jquery

一门服务器端语言:如果有服务器端开发经验,使用已经会的语言即可,如果没有服务器端开发经验,熟悉Java可以选择Servlet,不熟悉的可以选PHP,能实现简单登陆注册功能就足够支持前端开发了,后续可能需要继续学习,最基本要求是实现简单的功能模拟,

HTTP

在掌握以上基础技能之后,工作中遇到需要的技术也能快速学习。

基本开发工具

恰当的工具能有效提高学习效率,将重点放在知识本身,在出现问题时能快速定位并

解决问题,以下是个人觉得必备的前端开发工具:

文本编辑器:推荐Sublime Text,支持各种插件、主题、设置,使用方便

浏览器:推荐Google Chrome,更新快,对前端各种标准提供了非常好的支持

调试工具:推荐Chrome自带的Chrome develop tools,可以轻松查看DOM结构、样式,通过控制台输出调试信息,调试javascript,查看网络等

辅助工具:PhotoShop编辑、取色,fireworks量尺寸,AlloyDesigner对比尺寸,以及前面的到的Chrome develop tools,

FQ工具:lantern, 壁虎漫步

学习方法和学习目标

方法:

入门阶段反复阅读经典书籍的中文版,书籍中的每一个例子都动手实现并在浏览器中查看效果

在具备一定基础之后可以上网搜各种教程、demo,了解各种功能的实际用法和常见功能的实现方法

阅读HTML,CSS,Javascript标准全面完善知识点

阅读前端牛人的博客、文章提升对知识的理解

善用搜索引擎

目标:

熟记前面知识点部分的重要概念,结合学习经历得到自己的理解

熟悉常见功能的实现方法,如常见CSS布局,Tab控件等。

入门之路

以下是入门阶段不错的书籍和资料

HTML先看《HTML & CSS: Design and Build Websites》1-9章,然后《HTML5: The Missing Manual》1-4章。

CSS先看《CSS: The Missing Manual》,然后《CSS权威指南》

javascript先看《javascript高级程序设计》,然后《javascript权威指南》

HTTP看HTTP权威指南

在整个学习过程中HTML CSS JavaScript会有很多地方需要互相结合,实际工作中也是这样,一个简单的功能模块都需要三者结合才能实现。

动手是学习的重要组成部分,书籍重点讲解知识点,例子可能不是很充足,这就需要利用搜索引擎寻找一些简单教程,照着教程实现功能。以下是一些比较好的教程网址

可以搜索各大公司前端校招笔试面试题作为练习题或者他人总结的前端面试题还有个人总结的面试题(带参考答案)

http://codetutspluscom有各种各样的教程

MDN也有很多教程,更重要的是里面有详细的文档,需要查找某个功能时在Google搜索:xxx site:https://developermozillaorg

http://wwwhtml5rockscom/zh/也有很多优质教程

http://wwwsitepointcom/

http://alistapartcom/

原生javascript是需要重点掌握的技能,在掌握原生javascript的基础上推荐熟练掌握jQuery,在实际工作中用处很大,这方面的书籍有《Learning jQuery》或者去jQuery官网

建一个https://githubcom/账号,保存平时学习中的各种代码和项目。

有了一定基础之后可以搭建一个个人博客,记录学习过程中遇到的问题和解决方法,方便自己查阅也为其他人提供了帮助。也可以去http://wwwcnblogscom/或者http://wwwcsdnnet/这样的网站注册账号,方便实用

经常实用Google搜索英文资料应该经常找到来自http://stackoverflowcom/的高质量答案,与到问题可以直接在这里搜索,如果有精力,注册一个账号为别人解答问题也能极大提高个人能力。

经典书籍熟读之后,可以打开前面必备基础技能部分的链接。认真读对应标准,全面掌握知识

继续提高

有了前面的基础之后,前端基本算是入门了,这时候可能每个人心中都有了一些学习方向,如果还是没有。

可以参考前面必备技能部分提到的那两个项目,从里面选一些进行发展学习。以下是一些不错的方面:

Grunt:前端自动化工具,提高工作效率

less css:优秀的CSS预处理器

bootstrap:优秀的CSS框架,对没有设计师的团队很不错,与less结合使用效果完美

requirejs:AMD规范的模块加载器,前端模块化趋势的必备工具

Nodejs:JavaScript也可以做后台,前端工程师地位更上一步

AngularJS:做Single Page Application的好工具

移动端web开发:智能手机的普及让移动端的流量正在逐步赶超PC端

Javascript内存管理:SPA长期运行需要注意内存泄露的问题

High Performance JavaScript(Build Faster Web Application Interfaces)

Best Practices for Speeding Up Your Web Site:重要技能

####工具

chrome dev tools:前端开发调试利器,着重注意几个功能:

liveload: 修改页面后自动刷新,不用按F5

dimensions:直接在页面上测量的利器

livestyle:css样式修改后自动起效果,不需要刷新,elements修改后也能同步到代码中

image tool:测量,取色

UC二维码:移动端调试扫码必备

pagespeed,YSlow:页面性能分析和优化插件

马克飞象:优秀的在线markdown编辑器,快速写周报,做记录

watch expression:通过表达式查看当前内存中的值

call stack:查看调用栈,开启async,可以看异步调用栈(这个非常有用,尤其是ajax调试的时候)

scope variables:作用域链上的变量,非常有用

console(废话)

elements:元素样式调整,很常用

sources:代码中添加断点,单步调试,以及单步调试过程中查看内存中的对象

network:抓包查看每个请求,非常重要,前后端联调必备

timeline:分析渲染、js执行等等各个阶段,性能优化利器

emulation:模拟移动端环境,mobile页面开发必备

一些插件:

sublime text2:编码方便,插件多,速度快,性能好

emmet:提升html编码速度必备

sublimelinter + 各种语言的lint和hint:代码纠错

一些snippets:自动补全,提升开发效率

Intellij IDEA和WebStorm:集成开发环境,集成了各种功能,开发比sublime要方便,但会比较吃性能

Mark Men:测量、取色、标注利器,拿到视觉稿之后第一个打开的软件

GFW Fucker:我用红杏,可以的话买个虚拟服务器当梯子

iHosts:非常优秀的hosts管理软件,轻松修改hosts,开发调试必备

Charles:Mac 平台最好用的抓包分析工具

Rythem:AlloyTeam出品的代理抓包软件,非常轻量,安装简单,移动端(真机)开发调试很好用

Wunderlist:一个非常不错的Todo List,任务、需求多的时候管理起来很方便

####技能

前端的技能其实除了JavaScript(包括NodeJS)、HTML、CSS以外,还有很多。其实前端的技能树很大,这里只能列一些我开发中见到的说一说

#####语言基础

JavaScript:

作用域链、闭包、运行时上下文、this

原型链、继承

NodeJS基础和常用API

CSS:

选择器

浏览器兼容性及常见的hack处理

CSS布局的方式和原理(盒子模型、BFC、IFC等等)

CSS 3,如animation、gradient、等等

HTML:

语义化标签

#####进阶

JavaScript:

异步控制(Promise、ES6 generator、Async)

模块化的开发方式(AMD、CMD、KMD等等)

JavaScript解释器的一些相关知识

异步IO实现

垃圾回收

事件队列

常用框架使用及其原理

jQuery:基于选择器的框架,但个人认为不能叫框架,应该算工具库,因为不具备模块加载机制,其中源码很适合阅读钻研

AngularJS/Avalon等MVVM框架:着重理解MVVM模式本身的理念和双向绑定的实现,如何解耦

underscore:优秀的工具库,方便的理解常用工具代码片段的实现

polymer/React: 组件化开发,面向未来,理解组件化开发的原理

CSS和HTML:主要是CSS3的特性和HTML5的特性,以及浏览器处理的流程和绘制原理

DOM树、CSSOM树、渲染树的构建流程及页面渲染的过程

解析HTML、CSS、JavaScript时造成的阻塞

HTML5相关

SVG及矢量图原理

Canvas开发及动画原理(帧动画)

Video和Audio

flex box布局方式

icon fonts的使用

常用NodeJs的package:

koa

express

underscore

async

gulp

grunt

connect

request

一些理念:

响应式Web

优雅降级、渐进增强

dont make me think

网页可用性、可访问性、其中的意义

SEO搜索引擎优化,了解搜索引擎的原理

SPA的好处和问题

性能优化:

减少请求数量(sprite、combo)

善用缓存(application cache、http缓存、CDN、localstorage、sessionstorage,备忘录模式)

减少选择器消耗(从右到左),减少DOM操作(DOM和JavaScript解释器的分离)

CSS的回流与重绘

生态系统

npm

bower

spm

搭建一个属于自己的博客

git pages

hexo

jekyll

#####未来

Web Componets:面向未来的组件化开发方式

HTML模板

Shadow DOM

Custom Elements

HTML Import

移动端Native开发:这也是需要了解的,以后前端工程师会经常地和webview打交道,也要了解native开发

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/langman/3550426.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-16
下一篇2023-08-16

发表评论

登录后才能评论

评论列表(0条)

    保存