Javascript:
为什么 webpack 打包会慢?
答:有一种原因是因为二次打包了已经 minify 的文件,例如加载了 jquery.min.js, vue.min.js, react.min.js 等等,这时候就需要移除,通过类似
externals: { 'react': 'window.React', 'react-dom': 'ReactDOM' },
的形式移除,还有就是设置webpack 的common JS
第二种办法就是因为默认webpack 生成的 bundle,是包含 css 的,进行 css, js 分离可以降低打包时长。
ctrl+F5和 F5的区别?
首先,F5会快很多,是因为他没有从服务器完全重新请求全部资源,在发送 http 请求的时候,header 部分包含一个 if-modified-since, 一个if-none-match 这两个字段到服务器去通过服务器设定的阈值来判断,如果不需要改变,就会返回304,此时浏览器读取网页数据是从本地缓存读取。
相反,Ctrl+F5就不会包含这两个字段,所以服务器会全部返回。
Fetch 和 Ajax 的区别:
Ajax 本质是 XMLHttpRequest,Fetch 本质是 promise 。
Ajax 是4种,
0:为初始化,1:正在发送请求,2:已经接收到全部内容,3:解析相应内容,4:解析完成
Promise 状态机有3中,pending,resolve,reject。
跨域的实现:
var xhr = new XMLHttpRequest(); xhr.onload = function(){ alert(xhr.responseText); }; xhr.open('POST', 'http://10.0.1.1:8888/cors', true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send("f=json");
ajax
Fetch 是通过设置 mode:'cors'实现
fetch("http://10.1.1.1:8085", { method: "POST", mode: "cors", headers: { ... }, body: 'key=1' }).then(()=>{})