张大帅亲笔:https://www.zhihu.com/question/19834302,部分内容有更改。
不允许转载。
基础知识 | 必须精通1.html+css
这部分建议在w3school在线教程上学习,边学边练,每章后还有小测试。(既然在这里看到本文,肯定在慕课网上学习啦)之后可以模仿一些网站做些页面。
2.javascript 要学的内容实在很多,如果没有其他编程语言的基础的话,学起来可能要费些力,还是建议先在w3school或者慕课网上学习。之后建议马上看《javascript语言精粹》
,js是一门很混乱的语言,这本书能够帮助你区分哪些是语言的精华,哪些是糟粕,对于语言精华,应该深入学习。糟粕部分能看懂别人写的代码就行,自己就不用尝试了。
有了以上基础,就可以进行一般的静态网页设计,不过对于复杂的页面还需要进一步学习。
1.css。截至2015.12.08,天猫、淘宝、支付宝都已停止对ie6,ie7的支持,未来相信大多数网站都会停止对ie6,ie7的支持,ie8的市场份额也不像两年前那么高了(天猫即将停止对ie8的支持,2016.12.13),webkit
内核已成为市场主流(前端小伙伴们的福音)。对于css的学习,推荐分三块:“基础概念”,“css2.1规范”,“css3规范”。必看精通CSS(第2版)+(豆瓣),看完这本书你应该对:盒子模型,流动,block,inline,层叠,样式优先级,等概念非常了解了。这本确实有些年头了,但基础概念部分讲述非常清晰,可以称之为经典。IE6,IE7相关的内容可以不看。css3的部分可以参考:CSS3实用指南+(豆瓣)。这本书同样有些老,只是最新出版的书中没发现有特别好的。
2.javascript。上面提到内容还不足以让你胜任js编程。在有了基础之后,进一步学习内容包括:
a)框架。推荐zepto,简单易用,在w3school简单学习js后,直接上手zepto即可完成一些简单的项目。zepto源码简单清晰,也适合新手阅读。补充:可以使用codecademy学习(可能有部分同学无法打开,自己想办法)Javascript,zepto,用户体验真的很好。最近比较热门的框架是React+Vue+Angular
这些根据需要稍作了解即可,慕课网都有的啦,你说你是不是想偷懒。随着ie浏览器市场份额的下降,以及移动端的发展,标准原生js已经可以在实际项目中使用(目前还需要借助es5shim、babel等),重点还是ES5+ES6+ES7。
b)javascript语言范式。这个名字可能并不恰当,只是我找不到可以描述“面向对象”,“函数式”这个两个概念的概念。javascript不完全是一个面向对象的语言,它的很多设计理念都有函数编程语言的影子,甚至说如果你不用面向对象,完全可以把它理解成一门函数式编程语言。javascript的很多语言特性,都是因为他具有函数式语言的特点才存在的。这部分推荐先学习面向对象的基本理论,对封装,继承,多态等概念要理解,维基百科,百度百科会是你的帮手,另外推荐《object+oriented+javascript》
,有中文版。对与函数式编程可以参考这篇文章:JavaScript+中的函数式编程实践。
c)javascript+语言内部机制。必须弄清如下概念:js中变量的作用域,变量传递方式,函数的定义环境与执行环境,闭包,函数的四种调用方式(一般函数,对象的方法,apply,call),以及四种调用方式下,‘this指向的是谁。这部分内容你会在《javascript语言精粹》中详细了解。
d)dom编程,这个web前端工程师的核心技能之一。必读《dom编程艺术》
,另外《高性能javascript》
这本书中关于dom编程的部分讲的也很好。
e)ajax编程,这是另一核心技术。ajax建议在网上查些资料,了解这个概念的来龙去脉,百度百科,维基百科上的内容就足够了。真正编程是很容易的,如今几乎所有框架都对ajax有良好的封装,编程并不复杂。另外,ajax未来几年会被FetchStandard取代(能打开看看不懂?证明英语很重要的啦)也需要了解。另外关于xhr2,cors(跨站资源共享),formData文件上传,也需要了解。
f)es5+es6。现在开发js大部分基于es5的,ie8以下通过es5-shim。但利用一些工具,现在已经可以直接写es6代码了,尤其在reactjs,nodejs类型的项目中。对于从es5,es6每个阶段js发生了哪些变化都需要系统学习,学习顺序建议是JavaScript基础->es5->es6,越靠前的越重要。一些参考链接:
1.ECMAScript5 compatibilitytable
2.ES5《张鑫旭》,张大神在慕课网上也有视频教程哦!
3.ECMAScript6入门
3.html5。需要了解html都提供了哪些api,然后项目中用起来。这部分没有什么难理解的,关键在于能用html5解决业务问题,以及不支持html5的浏览器的降级方案。这部分体现了前端的一个思想:面向未来编程,尽早将新技术引入业务中来,而不是过分考虑兼容性问题,进而导致面向过去编程。
有了以上知识,对于大多数小型网站,你应该已经可以写出能够工作的代码了。但要想成为更专业的前端,你还需继续努力。更高的要求大概还有四方面:1易维护,2可测试,3高性能,4低流量(移动端)。
1.易维护。对于页面你该理解‘样式’,‘数据’,‘行为’三者分离,对应的当然就是css、html、js。对于js代码,你最好了解设计模式,重构,MVC等内容。
2.可测性。就是保证你的代码能沟通单元测试100%覆盖到所有分支
3.高性能。必读《高性能javascript》
4.低流量。移动端关注比较多,PC端现在可以不用太关注了
前端项目同样面临软件生命周期的各个环节,首先是代码管理,你必须学会使用svn和git。其次是代码的构建,如今前端代码构建已经不是简单的压缩一下了,需要进行依赖管理、模块合并、各种编译,必须要学会使用grunt、gulp、webpack、rollup
等前端构建工具,以及前端模块管理的方式,amd,cmd,es6+module
等等。然后呢?以上内容只是简单说了前端学习的顺序。前端工程师应该有的知识结构请参考这里:JacksonTian2FfksGitHub补充:对于前段开发,基本内容就这些了,可以根据自己的兴趣爱好选择性学习以下内容。
1.交互设计。大公司依然有专业人士搞这些,不过不懂交互的前端一定不是好前端。推荐《简约至上》
。
2.后端。应该说前段工程师必须至少了解一门后端语言,不过如果爱好也可深入学习,入手难度比较低的应该是php了。这部分由可分为基于页面,基于框架两种。大型项目都是基于框架开发的,建议至少了解一个MVC框架,比如php的ci,yii,yaf等,好还框架的设计思想都大同小异。如今NodeJs
在大公司已经得到普遍的使用,推荐大家使用在Node上使用Koa框架做一些后端服务的开发。
3.Android和ios开发。时至今日,前端的工作领域已经非常广泛,native的界面开发本质上也是前端开发,个大公司都面临着Native环境和web环境
页面同时维护的问题,如果能够在技术上得到统一,将会有巨大的价值。对于学有余力的同学,应该了解Native开发
的基本流程,至少了解到界面构建的技术。
4.如果你能够认真看到这里,说明你对前端有真爱,最后说一个编程习惯的问题,绝对
是保你工作平安,少出故障。代码提交前必须做的三个事情:
A.git+diff(svn+diff)检查所有变更;
B.跑一边单元测试;
C.手动运行一遍所有demo.
(整理了好长时间,慕课网手记编辑不友好,觉得不错并且前端更有方向了就点一下赞哦)
热门评论
我找到了工作,水平还在进阶,好丑,加油,待我学完之时,就是重归之日
在html和css深入实践过程中都哭爹喊娘了,,,没想到还有那么多要学。。。。只能慢慢来了。加油。
代码层面和工程层面这两部分暂时不用理会。