大约在几个月以前,让我看完了《webkit技术内幕》这本书的时候,忽然有了一个想法。想把整个web前端开发所须要的知识都之中在一个视图中,造成一个完整的web前端知识体系,目的是想要颠覆人们对于前端只有三大块(html、css、js)的认识——作web前端须要的比这三大块要多得多。javascript
拖了好几个月了,可是因为近期将要参加的某一个活动,我不得不这两天把这个东西整出来。css
你们不要惧怕,其实下文中的这个知识框架要比草图中的好看的多,草图你们权当没看见。html
在看内容以前,先看一下这个知识框架的预览图。图太大很差展现,看不清除,可在此下载清晰版:http://pan.baidu.com/s/1hqIUvUc (内有整个知识体系的图片和xmind文件)前端
全部知识框架,那确定是一个结构型的展示,就是一棵树。web前端的知识点很是多,也很是散,须要好几层结构来组织这个体系,不然就会显得很乱。那么如何组织、把谁和谁放在一起?这是真正值得咱们去思考的,你也能够本身来思考一下这个问题。java
在我总结的这个知识框架中,首先第一层我划分为:理论知识,类库框架,编码开发,运行环境。以下图:node
接下来给你们解释一下:react
这个图要从下往上看,为什么?——由于下面是上面的基础;jquery
“软知识”和“硬知识”你们可能以为词陌生,其实我一说你们就能明白。git
“软知识”的内容很是多,也是咱们大学时代学习的重点(没学好是另回事儿,毕业再恶补)。咱们本次主要讨论的是web前端这一个方向,所以就点到为止,让你们知道这些知识也在知识体系中扮演重要角色。github
刚才说道,硬知识有三个标准:http标准、W3C标准和ECMAScript标准,那我们就挨个聊聊这三个标准。
为何作web前端要了解http标准?——由于浏览器要从服务端获取网页,网页也可能将信息再提交给服务器,这其中都有http的链接。web系统既然和http连接有瓜葛,你就必须去了解它。
个人意见是:你没必要去很是了解http的详细内容,可是你要了解web前端开发经常使用的一些http的知识——就是上图中我列出来的那些。固然,我知识列了一个纲,详细内容还得靠你本身去查阅(本文章讲的是知识框架,不会涉及任何知识点的详细内容)
关于这方面的知识,建议去查阅《图解http》这本书,浅显易懂的讲述了这些内容,我曾经也看过。
若是说你只知道web前端的一个标准,估计确定是W3C标准了(据我了解,貌似大部分人真的都只知道这一个标准)。它的内容很是多,看看www.w3.org/TR/这个页面。
写到这里让我想起了一句话:2/8原则——20%的功能知足80%的需求。我以为这句话用到这里很是合适,咱们在平时开发过程当中根本用不到这么多东西。反而,你要把平时用的多的东西搞懂了。
下图的这些知识,我想不用再过多解释了,这就是我文章开发说的“三大块”(html、css、js)。如今你要知道,它们只很少是W3C标准的一部分,而W3C标准也只是web前端开发知识体系中的一部分而已。
(下图没有彻底展开,想看权展开的图,可下载本文一开始提供的附件)
简称ES,写全称太麻烦了。
有些人可能只知道javascript,而不知道ES——其实,js是在ES的基础上,为web浏览器作了一部分封装(增长了DOM操做、BOM操做等)。
如上图中的这些概念,你们可能平时都在javascript中看到,其实他们是ES的内容。只不过javascript继承了ES的这些特性,而且javascript用的比较普遍,所以才会在js中讨论的多一些。
仍是那个“2/8原则”。其实ES中的内容也很是多,并且更新很快,如今都到ES6了。可是我上图中列出来的这些都是最重要的概念。若是你不懂原型、闭包和做用域,那就说明你还不彻底了解ES,也就是不彻底会用javascript。
在此毛遂自荐本身以前的一篇系列博客,你们能够去参考:《深刻理解javascript原型和闭包系列》
前面已经描述完了web前端开发所须要的理论知识。如何实践呢?——不能蛮干——还得绕世界去看看,有哪些大牛已经为咱们作出了如此多的贡献。
用下面的这些类库或者框架,能大大提升你的开发效率。
要问编码IDE哪家强,固然要属微软的visual studio!可是即使是微软的VS最新版本,它也代替不了下面要说的这套开发环境。
若是你专门作web前端,就不要在用vs了,固然要选择sublime。写html语句还用手动一条一条写吗?你得须要zencoding的协助,不然效率太差了。
另外,针对html、css、js的压缩、合并、语法检查,文件的清除、复制这些操做,你还要手动去作吗?——你须要grunt或者gulp的帮助。
在此毛遂自荐本身的教程《用grunt搭建自动化web开发环境》,讲的比较详细,适合初学者学习。
若是你的系统中有比较多的js代码或者文件,请选择一个合适的模块定义规范——CMD / AMD
请用git来帮助你作文件版本管理,最简单的就是使用github。
调试、测试,也都有专门的工具,都是须要学的……
——个人天哪……这些字写到如今写的个人手都酸了,别说要学习这些知识了——再也别说咱们web前端是“三大块”了!
当系统真正到了运行环境中,当你以为终于完事儿的时候,其实还有好几个知识点须要你掌握。看下图:
首先,你要知道web系统虽然大部分是在浏览器下运行,可是js可能会被运行在node环境。
在浏览器环境下,最重要的两点是:web安全和性能优化。须要注意的纲要我都列出来了,若是想了解推荐两本书《白帽子将web安全》《高性能网站建设指南》
以上这些是所有的知识体系。若是你想成为一名合格的、让leader喜欢的程序猿,你除了知道这些知识以外,我以为还须要如下几点: