前端核心知识

2018-03-20  本文已影响0人  黄昏少年

Promise

Promise对象代表一个异步操作,有三种状态

Promise缺点是无法取消,pending的进度无法获取

基本api:

Promise.resolve()
Promise.reject()
Promise.reject()
Promise.prototype.then()
Promise.prototype.catch()
Promise.all()//所有的完成
Promise.race()//竞速 完成一个即可

block, inline和inline-block的区别

Ajax缓存

Ajax调用都采用缓存调用方式,一般采用附加特征参数方式实现,注意其中的<script src=”xxx.js?{VERHASH}”,{VERHASH}就是特征参数,这个参数不变化就使用缓存文件,如果发生变化则重新下载新文件或更新信息

浏览器结构

  1. 用户界面(UI)
  2. 浏览器引擎(Rendering engine)
  3. JS解析器
  4. 网络部分
  5. UI后端
  6. 数据存储

浏览器加载文件

文件加载顺序

浏览器加载页面上引用的CSS、JS文件、图片时,是按顺序从上到下加载的,每个浏览器可以同时下载文件的个数不同,因此经常有网站将静态文件放在不同的域名下,这样可以加快网站打开的速度。

reflow

在加载JS文件时,浏览器会阻止页面的渲染,因此将js放在页面底部比较好。

因为如果JS文件中有修改DOM的地方,浏览器会倒回去把已经渲染过的元素重新渲染一遍,这个回退的过程叫reflow。
CSS文件虽然不影响js文件的加载,但是却影响js文件的执行,即使js文件内只有一行代码,也会造成阻塞。因为可能会有var width = $('#id').width()这样的语句,这意味着,js代码执行前,浏览器必须保证css文件已下载和解析完成。
办法:当js文件不需要依赖css文件时,可以将js文件放在头部css的前面。

常见的能引起reflow的行为:

  1. 改变窗囗大小
  2. 改变文字大小
  3. 添加/删除样式表
  4. 脚本操作DOM
  5. 设置style属性

线程和进程的区别

一个程序至少有一个进程,一个进程至少有一个线程.

线程的划分尺度小于进程,使得多线程程序的并发性高。

线程是独立调度的基本单位, 进程是拥有资源的基本单位

另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

线程在执行过程中与进程还是有区别的。

每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。

但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别

前端开发的优化问题

  1. 减少http请求次数:css spirit,data uri
  2. JS,CSS源码压缩
  3. 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数
  4. 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能
  5. 用setTimeout来避免页面失去响应
  6. 用hash-table来优化查找
  7. 当需要设置的样式很多时设置className而不是直接操作style
  8. 少用全局变量
  9. 缓存DOM节点查找的结果
  10. 避免使用CSS Expression
  11. 图片预载
  12. 避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示比div+css布局慢

display:none 和 visibility: hidden的区别

display:none 隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢,就当他从来不存在。

visibility:hidden 隐藏对应的元素,但是在文档布局中仍保留原来的空间。

CSS预处理器

基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题:

语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器;

没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护。

选择器引用&

用 & 在嵌套的规则集中引用上层的选择器

元素分类

搜索引擎优化SEO

Doctype

cookies,sessionStorage 和 localStorage 的区别

canvas和svg的区别

src和href的区别

上一篇 下一篇

猜你喜欢

热点阅读