[TOC]
# # 指南使用手册
## 项目结构概览
本项目分为前言、推荐、面试技巧和七大模块四部分:
前言部分,主要介绍了项目的构成,以及为什么要写这个项目,算是本项目的概要,建议首先阅读。
推荐部分,这部分主要涉及一些书或者项目的推荐,作为学习。
面试技巧部分,这部分主要是从简历到hr面的一些技巧和建议。
七大模块,是主要内容,下一节会详细介绍。
## 模块概览
本项目会分为七大模块,分别为:前端基础、框架解读、工程化、性能优化、计算机基础、Typescript、细分领域。
## 前端基础
这一部分以JavaScript、CSS、HTML这前端传统的三剑客为主,以浏览器原理等为辅,这一模块的构成不是简单得采用罗列面试题+罗列对应答案的方式,我们首先会区分重难点和非重点知识,再进行相应的解读。
对于非重点或者简单的知识我们采用罗列答案的方式,这一部分主要是帮助开发者快速过一遍这些内容,比如『==和===的区别是什么?』这种问题属于简单型的问题,我们只会做简单的解答,并不会深入历史讲清楚『===』诞生的原因、背后原理之类的。
对于重点和难点知识,我们会会提供两个版本的解读,简略版本会直接罗列相关要点,如果对相关知识已经掌握,可以快速阅读简略版作为快速地复习,详细版会针对相关知识进行深度解读,如果对相关知识不够了解,那么建议阅读详细版。
## 框架解读
框架部分一般分为两种,一种是框架原理知识,一种为实战技巧。
## 框架原理
框架原理是必考的内容,因为没有公司希望招一个API小子过来,在这部分我们跟『前端基础』中的重点部分处理方法一样,通过详略两个版本的内容。
我们不会通过罗列源码的方式进行原理讲解,我们会尽量简化代码做到深入浅出。
## 实战技巧
实战技巧主要涉及基础组件实现,考察是否只会用现成组件库,有没有造组件轮子的能力。
我们会对常见的基础组件实现,创建一个对应的实战项目,毕竟这些实战技巧脱离了项目只靠罗列答案,稍微有较深入的追问就原形毕露。
## 工程化
前端工程化现在已经成为标配了,我们目前计划的内容有:webpack、Babel、Git、测试、Node工具。
### webpack
webpack是前端项目的事实上的打包标准,这部分我们会从打包原理、插件loader编写和实战搭建三个部分进行讲解。
webpack的知识是实战型的,所以会有一个实战源码。
### Babel
Babel也是前端事实上的转译标准,不过这部分要考察的内容并不多,基本就是插件的编写和编译原理,我们也会有对应的实战源码。
### Git
Git是任何软件工程师的必备技能(SVN瑟瑟发抖),这部分主要讲两个部分:工作流和使用技巧。
### 测试
测试是软件工程的必备,但是在前端领域至今的重视程度不够,我们看到招聘市场上对测试的要求也不多。
但是测试是软件工程的基本要求,我们还是增加了这个部分,主要是对测试工具的对比和入门,以及测试思想的解读。
### Node工具(todo)
实际上Node才是前端工程化的基石,现在前端对Node要求也越来越多,当然除了写中间层之外,一大用处就是造基于Node的工程工具,如下:
![](https://img.kancloud.cn/27/1d/271d3851495380500fe77c970107ce1f_676x131.png)
这个部分我们会造一个基于Node的Cli工具,并将各种代码美化工具、代码检测工具以及各种工程化的思想集成进去,除了学会造node工具之外,对前端工程化的知识算是一个总的梳理。
### Typescript(未完成)
考虑再三,我还是认为TS应该占据一席之地,这两年Typescript其实有成为前端大型项目的标准开发语言,Angular这种庞然大物早就用了TS自不必说,Vue已经抛弃flow用TS重写(用过flow就知道多难用),甚至连Facebook开源的jest也抛弃flow改用TS,在Node后端框架中最流行的Nestjs也是基于TS的,还有vscode、antd、rxjs等等都是基于TS的。
在招聘信息上我见到越来越多的要求是『有使用Typescript的经验者优先』这种条件,个人认为在Vue 3.0正式发布后TS会逐渐成为硬性要求,虽然尤小右声明Vue在使用层面不限制js或者ts,但是Angular团队也是这么说的。。。但是问题在于Vue的生态会逐渐被TS重写,Vue对TS的支持会非常好,会有越来越多的团队用TS开发Vue新项目,这个趋势是不可逆的,包括本身对TS支持良好的Angular和React,三大框架都被TS纳入版图之后,这个方向已经很明朗了。
所以,这部分会介绍TS的基本语法和高级类型编程,然后用TS重写一个库作为实战。
## 性能优化
性能优化是任何软件工程必备的步骤,我们不会罗列雅虎军规,而是进入到实战进行优化。
这个部分我们不会罗列任何东西,会直接拿一个项目进行一步步的优化,原因很简单,性能优化就是与实战强相关的,脱离实际谈优化都是空中楼阁,在面试过程中有没有进行过实际优化,如果没有实战作保证很容易翻车。
## 计算机基础
计算机基础是前端面试近两年的考察重点,也其中算法涉及的最多,所以这部分的重点在于算法。
另一个重点是网络部分,HTTP协议也是必不可少的。
这部分会分为这几个部分: 数据结构、算法、网络。
操作系统,数据库和编译原理部分暂时没有,前端涉及的编译原理主要是编译原理的前端部分,在『工程化』模块中的babel会讲到相关知识,而前端的操作系统其实是浏览器,这部分在『前端基础』模块会涉及,数据库的应用场景在前端很有限,基本以数据类的重型前端项目为主,这个部分暂时没有考虑加。
## 细分领域(todo)
前端的目前分化的领域大概有四类:移动前端、可视化、图形、Node。
移动web前端,他们大部分时间在为移动设备工作,除了传统前端知识外,还需要运用 hybrid、RN 甚至一些 native 技术
![](https://img.kancloud.cn/48/6e/486e8804625436b48a827b1a4211f2b9_709x212.png)
可视化前端,他们大部分时间再跟数据、canvas、svg 等打交道,需要一定的可视化科学的基础和相关领域
![](https://img.kancloud.cn/0e/1f/0e1f96a91735538e20075c4449dd0c3c_473x225.png)
算法
图形互动前端,他们离传统意义的前端更远,大部分时间在处理图形学范畴的东西
![](https://img.kancloud.cn/7f/38/7f382b32778c956059c04368daf73667_693x136.png)
Node 前端,讲道理 node 工程师跟前端的关系已经很小了,但是也挂了前端的头衔,他们的技术要求基本就是个后端,除了也用 js
![](https://img.kancloud.cn/41/6b/416b033e9c717878f1aa5fd268d02677_717x196.png)
![](https://img.kancloud.cn/41/6b/416b033e9c717878f1aa5fd268d02677_717x196.png)
实际上,这四个领域的分化导致其对特定领域的知识要求更高,而相关的资料就相比于通用前端知识更少,这部分应该是本项目难度最大的地方,我会按照移动前端、Node前端、可视化、图形先后顺序进行更新,这也是我个人的熟悉程度,也是目前市面上相关需求的大小排序,毕竟市场对于找一个写shader的前端需求有限,一般是一些大厂或者游戏厂商。
- 前言
- 指南使用手册
- 为什么会有这个项目
- 面试技巧
- 面试官到底想看什么样的简历?
- 面试回答问题的技巧
- 如何通过HR面
- 推荐
- 书籍/课程推荐
- 前端基础
- HTML基础
- CSS基础
- JavaScript基础
- 浏览器与新技术
- DOM
- 前端基础笔试
- HTTP笔试部分
- JavaScript笔试部分
- 前端原理详解
- JavaScript的『预解释』与『变量提升』
- Event Loop详解
- 实现不可变数据
- JavaScript内存管理
- 实现深克隆
- 如何实现一个Event
- JavaScript的运行机制
- 计算机基础
- HTTP协议
- TCP面试题
- 进程与线程
- 数据结构与算法
- 算法面试题
- 字符串类面试题
- 前端框架
- 关于前端框架的面试须知
- Vue面试题
- React面试题
- 框架原理详解
- 虚拟DOM原理
- Proxy比defineproperty优劣对比?
- setState到底是异步的还是同步的?
- 前端路由的实现
- redux原理全解
- React Fiber 架构解析
- React组件复用指南
- React-hooks 抽象组件
- 框架实战技巧
- 如何搭建一个组件库的开发环境
- 组件设计原则
- 实现轮播图组件
- 性能优化
- 前端性能优化-加载篇
- 前端性能优化-执行篇
- 工程化
- webpack面试题
- 前端工程化
- Vite
- 安全
- 前端安全面试题
- npm
- 工程化原理
- 如何写一个babel
- Webpack HMR 原理解析
- webpack插件编写
- webpack 插件化设计
- Webpack 模块机制
- webpack loader实现
- 如何开发Babel插件
- git
- 比较
- 查看远程仓库地址
- git flow
- 比较分支的不同并保存压缩文件
- Tag
- 回退
- 前端项目经验
- 确定用户是否在当前页面
- 前端下载文件
- 只能在微信中访问
- 打开新页面-被浏览器拦截
- textarea高度随内容变化 vue版
- 去掉ios原始播放大按钮
- nginx在MAC上的安装、启动、重启和关闭
- 解析latex格式的数学公式
- 正则-格式化a链接
- 封装的JQ插件库
- 打包问题总结
- NPM UI插件
- 带你入门前端工程
- webWorker+indexedDB性能优化
- 多个相邻元素切换效果出现边框重叠问题的解决方法
- 监听前端storage变化