| 目录 |
|---|
| 一:目录 |
| 二:前言 |
| 2-1: 关于dog蛋 |
| 2-2 :写给你们 |
| 三 HTML |
| 3.1 HTML 语义化 |
| 3.2 HTML5 新标签 |
| 3.3 常见浏览器及其内核 |
| 四 CSS |
| 4.1 CSS 盒模型 |
| 4.2 CSS 单位 |
| 4.3 CSS 选择器及优先级 |
| 4.4 CSS 常见布局 |
| 4.5 CSS3 新特性 |
| 4.6 BFC |
| 五 JavaScript |
| 5.1 原型与原型链 |
| 5.2 闭包 |
| 5.3 浅拷贝与深拷贝 |
| 5.4 防抖与节流 |
| 5.5 ES6 |
| 5.6 promise |
| 5.7 Generator,async/await相关 |
| 5.8 数组操作 |
| 六 Vue |
| 6.1 MVVM |
| 6.2 生命周期 |
| 6.3 双向数据绑定 |
| 6.4 Virtual DOM |
| 6.5 template 编译 |
| 6.6 key |
| 6.7 nextTick |
| 6.8 父子组件通讯 |
| 6.9 父子组件生命周期 |
| 6.10 keep-alive |
| 6.11 vuex用法 |
| 七 浏览器 |
| 7.1 一个url从输入到显示的过程 |
| 7.2 重绘与回流 |
| 7.3 内存泄漏 |
| 7.4 浏览器兼容性 |
| 八 网络协议 |
| 8.1 HTTP/HTTPS |
| 8.2 HTTP 状态码 |
| 8.3 跨域问题 |
二:前言
首先对于大家所说的互联网寒冬本蛋不发表任何意见,此图为证
2.1:关于dog蛋
大家好,我是前端经验长达三年多的前端dog蛋,会唱跳,敲代码,喜欢ctrl-c,ctrl-v,hah~
2.2:写给你们
虽然已经过了金三银四但身边找工作的小伙伴还是很多的,很多小伙伴担心现在是招聘淡季怕不好找工作,其实换个思维方式,既然现在是招聘淡季那肯定也是求职淡季,所以相对来说还是好找的,希望找工作的小伙伴们放平心态,对每次的面试都要进行记录和总结,相信很快就可以收到满意的offer的。
三:Html
3.1 HTML 语义化
- 便于对浏览器、搜索引擎解析;
- 便于盲人浏览网页;
- 便于阅读源代码的人对网站进行分开,维护和理解
3.2 HTML5 新标签
<header>,<footer>,<<aside>,<nav>,<canvas>,<video>等
3.3 常见浏览器及其内核
| Chrome | Firefox | Safari | IE | Opera | |
|---|---|---|---|---|---|
| 内核 | Blink | Gecko | Webkit | Trident | Blink |
四:CSS
4.1: CSS 盒模型
可以通过css3新增的的box-sizing属性进行设置:
/* 标准模型 */
box-sizing:content-box;
/IE模型/
box-sizing:border-box;
border-box 中,整个 div 的宽、高,包括 margin、padding、border。
content-box 中,整个 div 的宽、高,则不包括上面元素。
4.2: CSS 单位
| 单位 | 描述 |
|---|---|
| px | 像素。计算机屏幕上的一个点为 1px。 |
| em | 相对单位。相对于父元素计算,假如某个 p 元素为 font-size: 12px,在它内部有个 span 标签,设置 font-size: 2em,那么,这时候的 span 字体大小为:12 * 2 = 24px |
| rem | 相对单位。相对于根元素 html 的 font-size,假如 html 为 font-size: 12px,那么,在其当中的 div 设置为 font-size: 2rem,就是当中的 div 为 24px。 |
| rpx | 微信小程序相对单位。1rpx = 屏幕宽度 / 750 px。在 750px 的设计稿上,1rpx = 1px。 |
4.3: CSS 选择器及优先级
1:通配符:*
2:ID 选择器:#ID
3:类选择器:.class
4:元素选择器:p、a 等……
5:后代选择器:p span、div a 等……
6:伪类选择器:a:hover 等……
7:属性选择器:input[type="text"] 等……
8:子元素选择器:li:firth-child、p:nth-child(1) 等……
CSS 选择器权重
!important -> 行内样式 -> #id -> .class -> 元素和伪元素 -> * -> 继承 -> 默认
4.4: CSS 常见布局
4.5: CSS3 新特性
transform:旋转、缩放、移动或者倾斜
animation:动画
gradient:渐变
shadow:阴影
border-radius:圆角
4.6: BFC
五 JavaScript
5.1 原型与原型链
5.2 闭包
5.3 浅拷贝与深拷贝
5.4 防抖与节流
防抖: 任务频繁触发的情况下,只有任务触发的间隔超过指定间隔的时候,任务才会执行(有个输入框,输入之后会调用接口,获取联想词。但是,因为频繁调用接口不太好,所以我们在代码中使用防抖功能,只有在用户输入完毕的一段时间后,才会调用接口,出现联想词。)
节流:指定时间间隔内只会执行一次任务。 使用场景:
- 懒加载要监听计算滚动条的位置,使用节流按一定时间的频率获取。
- 用户点击提交按钮,假设我们知道接口大致的返回时间的情况下,我们使用节流,只允许一定时间内点击一次。
不防抖和节流会损害页面性能
5.5 ES6
5.6 promise
promise实现原理:手把手教你实现一个完整的 Promise
5.7 Generator,async/await相关
阮一峰:Generator,async,Thunk,co 系列
5.8 数组操作
六:Vue
6.1: MVVM
6.2: 生命周期
6.3: 双向数据绑定原理
具体步骤: 第一步:需要observe的数据对象进行递归遍历,包括子属性对象的属性,都加上setter和getter 这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化
第二步:compile解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定 更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图
第三步:Watcher订阅者是Observer和Compile之间通信的桥梁,主要做的事情是:
1、在自身实例化时往属性订阅器(dep)里面添加自己
2、自身必须有一个update()方法
3、待属性变动dep.notice()通知时,能调用自身的update()方法,并触发Compile中绑定的回调,则功成身退。
第四步:MVVM作为数据绑定的入口, 整合Observer、 Compile和Watcher三者, 通过Observer来监听自己的model 数据变化,通过Compile来解析编译模板指令,最终利用Watcher搭起Observer和Compile之间的通信桥梁,达到 数据变化->视图更新;视图交互变化(input)->数据model变更的双向绑定效果。
6.4: Virtual DOM
6.5: template 编译
详情步骤: 首先,通过compile编译器把template编译成AST语法树(abstractsyntaxtree即源代码的抽象语法结构的树状表现形 式),compile是createCompiler的返回值,createCompiler是用以创建编译器的。另外compile还负责合并option。
然后,AST会经过generate(将AST语法树转化成renderfuntion字符串的过程)得到render函数,render的返回值是 VNode,VNode是Vue的虚拟DOM节点,里面有(标签名、子节点、文本等等)
6.6: key
6.7: nextTick
6.8: 父子组件通讯
-
子-> 父: on+emit
-
父<>子: on.sync(语法糖)来的
-
兄弟 : event bus | vuex
6.9: 父子组件生命周期
6.10: keep-alive
<component:is='curremtView' keep-alive></component>
6.11: vuex用法
| vuex | vue |
|---|---|
| state | data |
| getters | computed |
| mutations | methods(同步操作) |
| actions | methods(异步操作 |
七 浏览器
7.1 一个url从输入到显示的过程
1-1:DNS解析
1-2:TCP三次握手
1-3:发送请求,分析url,设置请求报文(头,主题)
1-4:把请求回来的html代码 经过解析生成DOM树
1-5:解析css代码生成,生成样式树
1-6:结合DOM和style树生成渲染树
7.2 重绘与回流
7.3 内存泄漏
- 意外的全局变量:无法被回收。
2.定时器:未被正确关闭,导致所引用的外部变量无法被释放。
3.事件监听:没有正确销毁(低版本浏览器可能出现)。
4.闭包:会导致父级中的变量无法被释放。
5.DOM 引用:DOM 被删除时,内存中的引用未被正确清空。
如何查看内存变化情况?
使用 Chrome 的 Timeline(新版本 Performance)进行内存标记,可视化查看内存的变化情况,找出异常点。
7.4 浏览器兼容性
PC端兼容性
移动端兼容性
八 网络协议
8.1 HTTP/HTTPS
HTTPS:HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 它是一个 URI scheme(抽象标识符体系),句法类同 http: 体系。用于安全的HTTP数据传输。https:URL 表明它使用了 HTTP,但 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP 与 TCP 之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
8.2 HTTP 状态码
- 1**开头 - 信息提示
- 2**开头 - 请求成功
- 3**开头 - 请求被重定向
- 4**开头 - 请求错误
- 5**开头 - 服务器错误
然后,常见的状态码:
- 200 - 请求成功,Ajax 接受到信息了。
- 400 - 服务器不理解请求。
- 403 - 服务器拒绝请求。
- 404 - 请求页面错误。
- 500 - 服务器内部错误,无法完成请求。