https://www.npmjs.com/package/postcss-apply
https://stackoverflow.com/questions/56580681/generate-two-different-index-files-for-rtl-and-ltr-support-using-webpack
https://www.npmjs.com/package/postcss-apply
https://stackoverflow.com/questions/56580681/generate-two-different-index-files-for-rtl-and-ltr-support-using-webpack
https://awoo.ai/zh-hant/blog/301-redirection-for-seo/
https://seo.whoops.com.tw/301-vs-302-redirects/
https://eyesofkids.gitbooks.io/javascript-start-es6-promise/content/contents/ch5_flow_n_error.html
// 用throw語句取代reject
const p1 = new Promise((resolve, reject) => {
throw new Error('rejected!') // 用throw語句
//相當於用以下的語句
//reject(new Error('rejected!'))
})
p1.then(val => {
console.log(val)
return val + 2
})
.then(val => console.log(val))
.catch(err => console.log('error:', err.message))
.then(val => console.log('done'))
//最後結果:
//error: rejected!
//donehttps://developer.mozilla.org/zh-TW/docs/Glossary/IIFE
Function 轉換為 expression 形式,並且馬上執行,function scope 內的變數在外面是無法存取的。
(function () {
var aName = "Barry";
})();
// Variable name is not accessible from the outside scope
aName // throws "Uncaught ReferenceError: aName is not defined"
把 IIFE 只配給變數會儲存它的結果,而非 function 本身
var result = (function () {
var name = "Barry";
return name;
})();
// Immediately creates the output:
result; // "Barry"符合 JSLint 的版本,行為一樣,只有語意略有差異:
(function () {
var aName = "Barry";
}());
Arrow function 版本,程式碼更為精簡,行為一致:
(() => {
var aName = "Barry";
})();Async function 版本,目前主要為了 top level await 而使用:
(async function () {
var aName = "Barry";
})();
(async () => {
var aName = "Barry";
})();Dead Link Checker
Broken Link Checker