前端开发知识体系部

1. 前言

  本文把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的是想要颠覆人们对于前端只有三大块(html、css、js)的认识——做web前端需要的比这三大块要多得多。

  在看内容之前,先看一下这个知识框架的预览图。图太大不好展示,看不清除,可在此下载清晰版http://pan.baidu.com/s/1hqIUvUc (内有整个知识体系的图片和xmind文件)

  

2. 分类

  所有知识框架,那肯定是一个结构型的展现,就是一棵树。web前端的知识点非常多,也非常散,需要好几层结构来组织这个体系,否则就会显得很乱。那么如何组织、把谁和谁放在一块儿?这是真正值得我们去思考的,你也可以自己来思考一下这个问题。

  在我总结的这个知识框架中,首先第一层我划分为:理论知识,类库框架,编码开发,运行环境。如下图:

  

  接下来给大家解释一下:

  这个图要从下往上看,为何?——因为下面是上面的基础;

  • 首先,我们需要一定的理论知识,不管是你听别人讲授、自己看书还是网上淘资料,你都需要一定的理论知识,每一种程序开发,都避免不了。
  • 第二,有了这些理论知识我们就可以编码了——不错——but,没有人能抵挡住第三方框架和类库的诱惑,例如jquery;
  • 第三,有了这些理论知识和协助我们的类库框架,我们就可真正的编码了。大家可能以为编码开发不就是写代码吗,还有啥?——这里面道道多着呢;
  • 最后,开发程序的目的,最终是为了能高效、稳定的运行在相应的环境中,这其中又有哪些事情需要我们去做?请期待;

3. 理论知识 包括“软知识”和“硬知识”

  “软知识”和“硬知识”大家可能觉得词陌生,其实我一说大家就能明白。

  

  • 所谓“软”的就是能在各个程序开发中都用到的,算是基本功、内功,例如数据结构、算法、设计模式、面向对象等等;
  • 所谓“硬”的就是能直接用于本程序开发的。用C语言你就得学C语言语法,此时学java没用。我们web前端开发所需要的硬知识其实都包含在三个标准里面:http标准、W3C标准和ECMAScript标准

4. 聊一聊web前端开发中的“硬知识”

  “软知识”的内容非常多,也是我们大学时代学习的重点(没学好是另回事儿,毕业再恶补)。我们本次主要讨论的是web前端这一个方向,因此就点到为止,让大家知道这些知识也在知识体系中扮演重要角色。

  刚才说道,硬知识有三个标准:http标准、W3C标准和ECMAScript标准,那咱们就挨个聊聊这三个标准。

4.1 http标准

  为什么做web前端要了解http标准?——因为浏览器要从服务端获取网页,网页也可能将信息再提交给服务器,这其中都有http的连接。web系统既然和http链接有瓜葛,你就必须去了解它。

  

  我的意见是:你不必去非常了解http的详细内容,但是你要了解web前端开发常用的一些http的知识——就是上图中我列出来的那些。当然,我知识列了一个纲,详细内容还得靠你自己去查阅(本文章讲的是知识框架,不会涉及任何知识点的详细内容)

  关于这方面的知识,建议去查阅《图解http》这本书,浅显易懂的讲述了这些内容,我曾经也看过。

4.2 W3C标准

  如果说你只知道web前端的一个标准,估计肯定是W3C标准了(据我了解,貌似大部分人真的都只知道这一个标准)。它的内容非常多,看看www.w3.org/TR/这个页面。

  写到这里让我想起了一句话:2/8原则——20%的功能满足80%的需求。我觉得这句话用到这里非常合适,我们在平时开发过程中根本用不到这么多东西。反而,你要把平时用的多的东西搞懂了。

  下图的这些知识,我想不用再过多解释了,这就是我文章开发说的“三大块”(html、css、js)。现在你要知道,它们只不多是W3C标准的一部分,而W3C标准也只是web前端开发知识体系中的一部分而已。

  (下图没有完全展开,想看权展开的图,可下载本文一开始提供的附件)

  

  关于CSS的基础知识,毛遂自荐一下自己之前的一篇系列博客:《CSS知多少

4.3 ECMAScript  

  简称ES,写全称太麻烦了。

  有些人可能只知道javascript,而不知道ES——其实,js是在ES的基础上,为web浏览器做了一部分封装(增加了DOM操作、BOM操作等)。

  

  如上图中的这些概念,大家可能平时都在javascript中看到,其实他们是ES的内容。只不过javascript继承了ES的这些特性,并且javascript用的比较广泛,因此才会在js中讨论的多一些。

  还是那个“2/8原则”。其实ES中的内容也非常多,而且更新很快,现在都到ES6了。但是我上图中列出来的这些都是最重要的概念。如果你不懂原型、闭包和作用域,那就说明你还不完全了解ES,也就是不完全会用javascript。

  在此毛遂自荐自己之前的一篇系列博客,大家可以去参考:《深入理解javascript原型和闭包系列

5. 框架和类库

  前面已经描述完了web前端开发所需要的理论知识。如何实践呢?——不能蛮干——还得绕世界去看看,有哪些大牛已经为我们做出了如此多的贡献。

  用下面的这些类库或者框架,能大大提高你的开发效率。

  

  • 首先,jquery一定是大部分web前端开发者不可或缺的工具。而我利用jquery不仅仅停留在只使用它的API和插件上,我还会自己去写jquery插件,我还会去读jquery的源码、了解jquery的设计思路。如果你也能那样做,请相信我,你会收获到意想不到的效果。如果有一个问题:怎样才能最最透彻的理解javascript的事件系统?最佳答案之一:读几遍(一遍可能读不懂)jquery关于事件处理部分的源码!
  • bootstrap不用再过多解释了吧,从github上的排名也能看出道道来。甚至连我们公司的UI设计师,都从bootstrap上截图作为素材。
  • fontAwesome是全世界最强大的图标系统。相比于css制作图标来说,这个要好很多倍,不管是开发、效率还是维护上。icomoon.io能让我自定义选择自己的图标文件。
  • requirejs和seajs这种模块定义系统,也一定是你系统中不可或缺的。我曾经看过一个教程,讲师就说:requirejs带来了既jquery之后的第二次前端技术变革。
  • 其他的,backbone、angular、react这些也慢慢的开始发挥了他们的价值,此处精力有限就不再赘述了——但是,他们很重要——你至少要试着去了解它们。

6. 编码开发

  要问编码IDE哪家强,当然要属微软的visual studio!但是即便是微软的VS最新版本,它也代替不了下面要说的这套开发环境。

  

  如果你专门做web前端,就不要在用vs了,当然要选择sublime。写html语句还用手动一条一条写吗?你得需要zencoding的协助,否则效率太差了。

  另外,针对html、css、js的压缩、合并、语法检查,文件的清除、复制这些操作,你还要手动去做吗?——你需要grunt或者gulp的帮助。

  在此毛遂自荐自己的教程《用grunt搭建自动化web开发环境》,讲的比较详细,适合初学者学习。

  如果你的系统中有比较多的js代码或者文件,请选择一个合适的模块定义规范——CMD / AMD

  请用git来帮助你做文件版本管理,最简单的就是使用github。

  调试、测试,也都有专门的工具,都是需要学的……

  ——我的天哪……这些字写到现在写的我的手都酸了,别说要学习这些知识了——再也别说我们web前端是“三大块”了!

7. 运行环境

  当系统真正到了运行环境中,当你觉得终于完事儿的时候,其实还有好几个知识点需要你掌握。看下图:

  

  首先,你要知道web系统虽然大部分是在浏览器下运行,但是js可能会被运行在node环境。

  在浏览器环境下,最重要的两点是:web安全和性能优化。需要注意的纲要我都列出来了,如果想了解推荐两本书《白帽子将web安全》《高性能网站建设指南》

8. 其他

  以上这些是全部的知识体系。如果你想成为一名合格的、让leader喜欢的程序猿,你除了知道这些知识之外,我觉得还需要以下几点:

  • 要了解敏捷软件开发流程(如SCRUM)和项目管理知识(如考取PMP),这也属于一种“软”知识吧;
  • 要学会在网上和别人交流(博客、qq群、开源项目),交流能让自己看到自己的不足;
  • 要学会自我反省和自我学习。就像我现在一样,试着自己总结一下属于自己的东西,随时反省随时进步。

时间: 2024-12-18 18:08:00

前端开发知识体系部的相关文章

前端开发知识体系技能点【根据自我学习顺序】

UI设计+原型 html5+css3 bootstrap+ionic javascript[对象.数组.函数.字符串.闭包.原型链.对象封装.ajax.事件.DOM.BOM.正则.设计模式] jquery[五大模块:选择器.文档操作.动画.ajax.事件]+zepto requireJS[模块化] less+sass angular[模型+控制器+过滤器] nodeJS mongoDB

前端开发知识学习概要

前端开发工具 编辑器 editPlus sublime 浏览器: Chrome Safari Firebox IE 插件:firebug chrome: inspect element html 组成结构 1 <!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前,不是 HTML 标签: 2 它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令, 浏览器读取. 3 <html> 4 <head> 5 描述页面

.NET开发知识体系

记得几年前写过一篇关于.NET开发方面的知识总结,最近园子里也有人总结.NET方面的知识体系,所以就想把之前那篇文章翻出来,结合现在的理解加以更新,如下. 参考资料: 1,我之前的那篇文章:让我们都建立自己的知识树吧 2,王福朋的,自己总结的web前端知识体系大全[欢迎补充] 3,灵感之源的两篇文章:.NET技术大系概览 (迄今为止最全的.NET技术栈),Web前端开发大系概览 (前端开发技术栈)

转载 前端基础知识体系 一个新手的学习之路

原帖地址:  转载的原因是我学习前端和php已经4个多月了.看看自己还有那些不足.自己得努力学习,牛人太多.红色是我会的,或者学过的.希望今天把大部分飘红. 一.HTML 标签的分类 标签表示一个元素 按性质划分: Block-Level和Inline-Level 按语义划分: Headings: h1, h2, h3, h4, h5, h6 Paragraphs: p Text Formatting: em, strong, sub, del, ins, small Lists: ul, li

Android 开发知识体系

知识体系 1.Unix/Linux平台技术:基本命令,Linux下的开发环境 2.企业级数据库技术:SQL语言.SQL语句调优.Oracle数据库技术 3.Java 语言核心技术:Java语言基础.Java面向对象编程.JDK核心API.Java集合框架.Java网络编 程.JavaI/O编程.Java多线程编程.Java异常机制.Java安全.JDBC.XML 4.软件工程和设计模式:软件工程概述.配置管理及SVN.UML.基本设计模式 5.Android应用开发基础:Android开发平台.

前端开发知识之前端移动端适配总结

meta标签到底做了什么事情 做过移动端适配的小伙伴一定有遇到过这行代码: <meta name="viewport" content="width=device-width, initial-scale=1.0"> 但是,很多小伙伴只是感性的认识:噢,我加了这行代码,然后页面的宽度就会跟我的设备宽度一致.然而,这种理解是很片面的.那么,这句话的本质到底是什么呢? 不急,我们先往下面看,这里先留个悬念. 几个专有名词和单位 这里,我们先来辨析一下在适配的

前端开发知识总结

目录: 一.HTML部分 二.CSS部分 三.JavaScript部分 四.jQuery部分 五.Bootstrap部分 一.HTML部分 XHTML和HTML有什么区别 XHTML是一种基本的web网页设计语言,XHTML是一个基于XML的置标语言 XHTML 元素必须被正确的嵌套 XHTML 元素必须被关闭 标签名必须用小写字母 XHTML 文档必须拥有根元素 2. 前端页面有哪几层构成,分别是什么?作用是什么? 1.结构层 HTML(页面结构内容)表示层 2. CSS(网页的样式和外观)

敏捷开发知识体系整体框架

敏捷开发工程实践 项目管理 迭代开发 风险价值生命周期 多级项目规划 完整团队 每日站立会议 任务板 燃尽图 需求管理 需求订单 业务流程草图 用例驱动开发 用户故事 架构 演进的架构 演进的设计 基于组件的架构设计 开发 结对编程 测试驱动开发 重构 代码规范 测试 单元测试 并行测试 测试管理 变更管理 持续集成 自动构建 团队变更管理 敏捷开发管理实践描述 定义和特征说明 主要角色 主要活动和最佳实践 主要输入输出 工作流程 敏捷开发工程实践描述 定义和特征说明 应用说明 案例说明 敏捷开

前端架构知识体系

0. 前端自动化(Workflow) 前端构建工具 Yeoman – a set of tools for automating development workflow gulp – The streaming build system grunt – the JavaScript Task Runner F.I.S – 前端集成解决方案 webpack NPM 前端模块管理器 Bower – A package manager for the web Browserify Component