不知不觉已经是第十天啦!明天又要上课了,连上九天然后国庆!
今天内容比较少的原因…要去整合一下这些天的题目,把他们归类一下。
href="#"与href=“javascript:void(0)的区别”?
1、# 包含了一个位置信息,默认的锚是#top 也就是网页的上端。在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# + id
2、javascript:void(0), 仅仅表示一个死链接。
如果要定义一个死链接请使用 javascript:void(0)
一些浏览器内核
Google Chorm 内核:统称为Chromium内核或者Chrome内核,以前是WebKit内核,现在是Blink内核
Internet Explorer 是 Windows系统默认的IE浏览器 ,内核是Trident内核,也就是IE内核。
Firefox浏览器,风格简单,速度快,安全性高,扩展性强,但是媒体功能不强等。内核:Gecko内核,俗称Firefox内核。
Safari浏览器内核:WebKit内核。
Opera浏览器,是浏览器的先驱,内核:最初是Presto内核,然后是WebKit,现在是Blink内核。
为什么打开一个谷歌Google页面,会有四个进程?
因为打开一个页面,至少需要1个网络进行,1个浏览器进程,1个GPu进程以及1个渲染进程。
什么是线程?
单线程就是一个接一个的计算,多线程就是同时处理多个计算。
多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,就是说允许单个程序创建多个并行执行。
单线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。
多线程也是程序,所以线程需要占用内存,线程越多占用内存也越多,多线程需要协调和管理,所以需要CPU时间跟踪线程;线程之间对共享资源的访问会相互影响,必须解决争用共享资源的问题;线程太多会导致控制太复杂。
单线程在程序执行时,所走的程序都是按照连续顺序下来的,前面的必须处理好,才会执行后面的。多线程运行就是一个进程内有多个相对独立的并且实现特定的任务以竞争CPU的方式执行,宏观上是并发,实际上是分时执行,只是执行的时间片较短。
每个正在运行的程序即是进程,至少包含一个线程,这个线程叫主线程,它在程序启动时被创建,用于执行main函数。只有一个主线程的程序,称为单线程程序。拥有多个线程的程序,称为多线程程序。
什么是进程?
进程是当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源(一个进程又是由多个线程所组成的)。
线程是不能单独存在的,它是由进程来启动和管理的,一个进程就是一个程序的运行实例。线程是依附于进程的,而进程中使用多线程并行处理能提升运算效率。线程之间共享进程中的数据。当一个进程关闭后,操作系统会回收进程所占用的内存;多线程的好处就是可以提高CPU的利用率,在多线程程序中,如果一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样可以大大地提高程序的效率。
几个常用的自定义过滤器
(VUE)
(1)去除空格
(2)时间转换
(3)大小写转换
(4)字符串替换
(5)金额字符转金额/数字转金额字符
(6)保留两位小数
(7)判断字符串长度并省略
vue开发命令 npm run dev输入后的执行过程
1、npm run dev 是执行配置在package.json中的脚本
2、调用了webpack配置文件
3、配置文件中调用了main.js
4、main.js用到了一个html元素#app,引用路由等开始vue的模板编译
什么是同源?
指的是“协议+域名+端口”三者相同,即使两个不同的域名指向同一个ip地址,也非同源。它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,浏览器就很容易受到xss,cdfr等攻击。
axios、ajax、fetch
(1)ajax
$.ajax({
type: 'POST',
url: url,
data: data,
dataType: dataType,
success: function () {},
error: function () {}
});
本身是针对MVC编程,不太符合MVVM
基于原生的XHR开发,XHR本身的架构不清晰
Query整个项目太大,单纯使用ajax却要引入整个JQuery非常的不合理(采取个性化打包的方法又不能享受CDN服务)
不符合关注分离(Separation of Concerns)的原则
配置和调用方式非常混乱,而且基于事件的异步模型不友好
(2)axios
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
从浏览器中创建 XMLHttpRequest
支持 Promise API
客户端支持防止CSRF
提供了一些并发请求的接口(重要,方便了很多的操作)
从 node.js 创建 http 请求
拦截请求和响应
转换请求和响应数据
取消请求
自动转换JSON数据
(3)fetch
try {
let response = await fetch(url);
let data = response.json();
console.log(data);
} catch(e) {
console.log("Oops, error", e);
}
语法简洁,更加语义化
基于标准 Promise 实现,支持 async/await
同构方便,使用 isomorphic-fetch
更加底层,提供的API丰富(request, response)
脱离了XHR,是ES规范里新的实现方式
axios既提供了并发的封装,也没有fetch的各种问题,而且体积也较小,当之无愧现在最应该选用的请求的方式。
前端的性能优化
降低请求量:合并资源,减少HTTP 请求数,minify / gzip 压缩,webP,lazyLoad。
加快请求速度:预解析DNS,减少域名数,并行加载,CDN 分发。
缓存:HTTP 协议缓存请求,离线缓存 manifest,离线数据缓存localStorage。
渲染:JS/CSS优化,加载顺序,服务端渲染,pipeline。