最近遇到的一些问题汇总

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(()=>{})

 

posted on 2017-07-20 11:37  bbb324  阅读(132)  评论(0编辑  收藏  举报

导航