我的博客


  • 首页

  • 归档

  • 标签

  • 搜索

同步和异步

发表于 2017-08-16 | 阅读次数

JavaScript 的执行环境是单线程的,所谓的单线程就是一次只能完成一个任务,其任务的调度方式就是排队,这就和火车站洗手间门口的等待一样,前面的那个人没有搞定,你就只能站在后面排队等着。

同步和异步

同步:后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排列顺序是一致的、同步的;

异步:每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。

在浏览器端耗时很长的操作都应该异步执行,避免浏览器失去响应,最好的例子就是Ajax操作。在服务器端,异步模式甚至是唯一的模式,因为执行环境是单线程的,如果允许同步执行所有http请求,服务器性能会急剧下降,很快就会失去响应。

阅读全文 »

defer和async的区别

发表于 2017-08-16 | 阅读次数

我们先定义一个<script> 没有任何属性。HTML文件将被解析,直到解析到 script 文件,HTML 解析将停止,并将请求获取 script 文件(如果它是外部的)。执行 script 文件再执行 HTML解析。

阅读全文 »

立即执行函数

发表于 2017-08-16 | 阅读次数

函数声明、函数表达式、匿名函数

函数声明:使用function关键字声明一个函数,再指定一个函数名,叫函数声明。

函数表达式:使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式。

匿名函数: 使用function关键字声明一个函数,但未给函数命名,所以叫匿名函数,匿名函数属于函数表达式,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等。

1
function fn(){…}       // 函数声明
2
var fn = function(){…} // 函数表达式
3
function(){…}          // 匿名函数
阅读全文 »

闭包

发表于 2017-08-16 | 阅读次数

闭包是什么

「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。简单说,就是一个函数用到了它外面的变量,这种用法叫闭包。

看个例子

1
function foo(){
2
  var local =1
3
  function bar(){
4
    local +=1
5
    return local
6
  }
7
  return bar
8
}
9
var func = foo()
10
func()

local 变量和 bar 函数组成了一个闭包。

阅读全文 »

BFC 详解

发表于 2017-08-14 | 阅读次数

BFC 定义

BFC 全称 Block Formatting Context,块级格式化上下文。

一个 BFC 是网页中某个独立的 CSS 渲染区域。

w3c 对 BFC 定义

浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的块级格式化上下文。
在一个块级格式化上下文里,盒子从包含块的顶端开始垂直地一个接一个地排列,两个盒子之间的垂直的间隙是由他们的 margin 值所决定的。两个相邻的块级盒子的垂直外边距会发生叠加。
在块级格式化上下文中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘),即使存在浮动也是如此,除非这个盒子创建一个新的块级格式化上下文。

阅读全文 »

HTML和CSS基础

发表于 2017-08-13 | 阅读次数

HTML 语义化

语义化的含义就是用正确的标签做正确的事情,html 语义化就是让页面的内容结构化,便于对浏览器搜索引擎解析;在没有CSS样式情况下也以一种文档格式显示,并且是容易阅读的。搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重,利于SEO。使阅读源代码的人对网站分块,便于阅读维护理解。

文档流

文档流(Normal Flow)就是文档中正常排列方式。块级元素从上到下依次排列,内联元素从左到右依次排列,宽度不够就换行。

阅读全文 »

盒模型

发表于 2017-08-12 | 阅读次数

定义

html文档中的每个元素都被描绘成矩形盒子,这些矩形盒子通过一个模型来描述其占用空间,这个模型称为盒模型。盒模型通过四个边界来描述:margin(外边距),border(边框),padding(内边距),content(内容区域),如图所示:

CSS3中新增了一种盒模型计算方式:box-sizing。常用的值有两个:content-box(默认)和border-box。

阅读全文 »

跨域

发表于 2017-08-11 | 阅读次数

如何在本地伪装一个网站

1.编辑 hosts 文件
Mac:sudo vi/etc/hosts
Windows:hosts文件的路径是:C:\Windows\System32\Drivers\etc\hosts,可以使用记事本等文字编辑器打开
2.添加一行 127.0.0.1 xxx.com
3.保存关闭
4.访问 xxx.com 端口号

如何监听 80 端口

Mac:sudo http-server -c-1 -p 80
Windows :
1.以管理员身份运行 git bash
2.http-server -c-1 -p 80

阅读全文 »

动态 REM 方案 (移动端方案)

发表于 2017-08-10 | 阅读次数

rem是什么

rem(font size of the root element)是指相对于根元素的字体大小的单位。简单的说它就是一个相对单位。看到rem大家一定会想起em单位,em(font size of the element)是指相对于父元素的字体大小的单位。它们之间其实很相似,只不过一个计算的规则是依赖根元素一个是依赖父元素计算。

动态 REM 方案

1.浏览器禁止 980 像素的缩放(meta:vp 阻止缩放)
2.设置 html {font-size: 页面宽度 / 10 px}
3.10 rem == 页面宽度
4.所有单位都用 rem == 所有长度都以页面宽度为基准
5.页面可以兼容任何手机屏幕

阅读全文 »

自动加载、懒加载和预加载

发表于 2017-08-09 | 阅读次数

自动加载

自动加载就是符合某些条件时才加载某些图片。

现在好多的网站都用到了自动加载图片技术,比如淘宝,刚打开淘宝时,加载一部分图片,在你浏览的过程中,往下拉再加载一部分图片,再往下拉的时候再加载一部分图片。

阅读全文 »
上一页1…345…7下一页
shadow

shadow

70 日志
50 标签
GitHub 简书
© 2017 - 2020 shadow