这是我参与8月更文挑战的第14天,活动详情查看:更文挑战
HTML5
html5是html的第五个版本
html5规定了一些废弃标签,新增了一些标签, 又新增了一些功能
存储
存储是前端仓库的意思
HTML5新增了一个存储对象用于存储数据
每一个网站分配一个
只要浏览器不卸载, 电脑不崩溃,永远存在
它的生命周期是永久
查看:
现在该对象中没有任何内容
既然是一个对象,可以使用对象的语法添加内容:
比如:
localStorage.a = 10;
localStorage[“b”] = 20;
因为该对象中的原型上提供了相应的API, 所以建议我们使用原型上面的方法:
使用方式:
localStorage.setItem(key, value)
key: 表示数据名称
value: 存储的数据 (该方法会默认转为字符串)
比如:
localStorage.setItem(“age”, 11)
解决方案:
在存储的时候先转为字符串, 提取的时候再转为原类型
本地存储API
- 存储数据:
localStorage.setItem(key, value)
key: 存储的数据名称
value: 要存储的数据
该方法会默认转为字符串
- 获取数据:
localStorage.getItem(key)
key: 要获取的数据名称
返回值:字符串
- 删除某一项:
localStorage.removeItem(key)
key:要删除的数据名称
- 删除全部:
localStorage.clear()
会话存储
除了本地存储还有一个对象叫做会话存储
对象名称: sessionStorage
与本地存储的区别就是生命周期
本地存储的生命周期是永久
会话存储的生命周期是从页面打开到页面关闭
查看:
服务器
简单来说就是可提供的机器
这个服务器可以租,可以买,可以下载一个模拟的软件
我们选择自己写的nodejs
如果想要使用nodejs, 必须先安装node.exe程序
平时我们在浏览器的输入栏中查看的地址栏:
file:///……
当有了服务器之后, 上传到服务器,就必须通过http请求访问页面, 此时查看地址栏
http:// ……
HTTP协议
超文本传输协议:里面规定了前端发送请求后端如何解析, 后端返回数据前端如何接收。
有了服务器之后, 我们就可以通过http来发送请求,请求服务器中的资源。
在很久以前,浏览器的目的只是为了渲染页面,静态页面
此时面临一个问题,前端发送一个请求,后端如何解析, 后端返回数据,前端如何接收。
于是http协议就出现了。
比如: 前端想要从服务器上请求一张图片,前端就必须按照http协议的规定发送请求,后端解析并返回数据的时候也要按照http协议,按照正确格式返回数据。
还有另外一个问题,服务器的承载(连接)是有限的,假如服务器的承载上线是10, 此时前端发送过来一个请求,并且是有状态(持久连接),服务器最多可以服务的连接数量是10个,在当时浏览器只是为了渲染静态页面,所以没有必要是持久连接,所以特意给http协议设定成为五无状态(没有持久连接)
连接过程:
浏览器发送http请求,请求到服务器,服务器接受响应,返回数据,断开连接,浏览器接受数据,并渲染页面。
由于断开了连接, 所以此时服务器可服务的连接数据远大于有状态(持久连接)
服务器比较重要的一方面提供服务器环境,前端某些时候需要服务器环境支持
比如:多线程,事件推送,ajax, canvas的相关功能
多线程
js是单线程, 当js在执行的时候,页面是停止渲染
当上面的函数在执行 (在大量计算的时候), 此时用户点击页面将得不到相应(假死状态)
我们希望当js在大量计算的时候,不要阻塞线程
H5提供了一个Worker函数,可以开辟一个新的线程,用于计算
使用方式:
1 将要计算的代码提取出来放入一个js文件中
2 初始化Worker函数
举例:
var worker = new Worker("comouted.js");
结果:
postMessage
开辟的额外的线程用于计算, 计算的结果可以通过postMessage向主线程推送
onmessage
额外的线程将计算的结果推送过来了, 主线程可以通过onmessage来接受数据
WebSql
前端数据库,本来属于HTML5规范, 后来又没有。
openDatabase
它是一个函数,是window的属性
作用: 打开或者创建数据库
使用方式:
openDatabase(dbname, version, descript, size)
dbvname: 数据库名称
version: 版本号
descript: 描述
size: 大小
举例:
// 创建数据库
openDatabase("数据库", 1, "这是测试数据库", 1024 * 1024);
观察数据库:
执行代码:openDatabase("数据库", 1, "这是测试数据库", 1024 * 1024);
执行openDatabase方法之后会返回一个数据库库对象:
查看:
transaction
该方法接受一个参数是回调函数, 回调函数中的参数就是事物对象
SQLTransaction
通过ta调用SQLTransction原型上的方法 executeSql来执行sql语句
使用方式
ta.executeSql(sql, [], successcallback, failedcallback)
sql: sql语句
[]: 数组, 替代数组
successcallback: 成功时候的回调函数
failedcallback: 失败时候的回到函数
事件推送
正常情况下只能够从浏览器端发送消息到服务器端, 服务器接受并返回数据,关闭连接,之后服务器想 要主动发行信息到浏览器端,无法实现,
于是HTML5,提供了一个叫做 EvetnSource的函数 用于主动向前端推送消息
初始化
和worker一样, 需要初始化
并且也服务器环境支持
使用方式:
var es = new EventSource(path)
path: 接口
查看:
history
history.forward
该方法会加载历史记录列表中的下一个URL
调用该方法等价于点击了前进按钮或者history.go(1)
history.back
该方法会加载历史记录列表中的前一个URL
调用该方法等价于点击了后退按钮获取或者history.go(-1)
pushState
作用: 用于添加新的历史记录
使用方式:
history.pushState(obj, title, url)
obj: 数据对象
title: 新的网页标题 (一般省略)
url: 新的网页url
举例:
// 添加新的历史记录
history.pushState({username: "老王"}, null, "index.html#aaa");
replaceState
作用: 替换当前历史记录
使用方式:
history.replaceState(obj, title, url)
obj: 数据对象
title: 网页标题
url: 新的URL
pushState和replaceState的区别: pushState是添加新的历史记录, replaceState是替换当前历史记录
举例:
// 替换当前历史记录
history.replaceState({username: "老张"}, null, "index.html#ccc")