前端 - tips

水中花world發表於2018-06-19

0716:
pc開發一定要以ie為主除錯,否則到了快上線,手忙腳亂

ie瀏覽器下慎用apply,會出現跳轉失效的問題
// window.history.go.apply(window.history, arguments);
// window.location.replace.apply(window.location, arguments);
0716 end:

location.replace

1:b->c 是通過window.location.replace(“..xx/c”) 此時b頁面的url會被c頁面代替,並且點選後退按鈕時會回退到a頁面(最開始的頁面)
2:b->c是通過window.location.href(“..xx/c”) 此時b頁面的路徑會被c頁面代替,但是點選回按鈕後頁面回退的是b頁面

Babel
Babel 預設只轉碼 ES6 的新語法(syntax),而不轉換新的 API,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise 等全域性物件,以及一些定義在全域性物件上的方法(比如 Object.assign、Array.from)都不會轉碼。
如果想讓這些方法執行,必須使用babel-polyfill,為當前環境提供一個墊片。
http://babeljs.io/docs/en/babel-plugin-transform-runtime/

babel-polyfill
轉碼 ES6 的新的 API,如果想讓這些方法執行,必須使用babel-polyfill,為當前環境提供一個墊片。

fetch
https://www.cnblogs.com/huilixieqi/p/6494380.html

Es6-promise
https://www.npmjs.com/package/es6-promise
在IE8支援promise

bluebird.js
支援IE4+的promise,

Fetch
使用promise方式的請求,相比ajax,請求不會自動把cookie帶上

瀏覽器檔案-記憶體快取與硬碟快取
在瀏覽器中,瀏覽器會在js和圖片等檔案解析執行後直接存入記憶體快取(for memory cache)中,那麼當重新整理頁面時只需直接從記憶體快取中讀取(from memory cache)
css檔案則會存入硬碟檔案中,所以每次渲染頁面都需要從硬碟讀取快取(from disk cache);
通過ensure非同步載入的js會快取在磁碟中(for disk cache);
如果只是普通的script引入的js-瀏覽器預設會存在記憶體快取中-中斷程式重新開啟還是會重新訪問
https://www.cnblogs.com/duiniweixiao/p/8884274.html

require.ensure和import () 非同步載入,ie8不相容,暫無元件解決

es6-promise.auto
es6-promise: 是個庫而已,不會自動polyfill;
es6-promise.auto會檢測Promise是否存在,若存在原生的Promise,則不執行;
否則會應用polyfill;

await/async — ES7語法
async onReady () {
async function b () {
console.log(1);
};
await b().then(() => {
console.log(2);
});
}
一般需要在函式片段外層包一下async或者在生命週期名前加async
async () => {

}
// async 返回到是promise
需要另外在babel中新增元件babe-plugin-transform-runtime,
babel-polyfill只轉es6的語法


中轉頁跳轉,在success中繼續跳轉中轉頁,介面不能算完全請求成功,所以console日誌沒有成功的日誌;
報錯是:介面response介面 fail data, 表示介面未完成被重定向

chrome控制檯-preserve log可以記錄所有歷史的介面請求日誌;