1-10
CSS border-collapse
- 為 table 元素使用
- 三種屬性可用: separate 、 collapse 、 inherit
- separate 為預設,如下圖
- collapse 效果如下圖
AVIF
- 新的一種影像格式,更輕量且畫質不差,怕瀏覽器不支援的話可設多組 image source 標籤抓取其他傳統格式圖片
<script type=“component”>
- html 中 script 標籤的 type 屬性若設其他值會當作不被瀏覽器渲染的資料塊
- https://github.com/jakearchibald/jakearchibald.com/blob/main/static-build/posts/2020/09/avif-has-landed/index.md
- 上文用法是寫一段程式去解析 markdown 中的
<script type=“component”>
替換成一般的 script 標籤使瀏覽器渲染,此方法可以使 markdown 本身可以加程式碼撰寫,使其在 github 與網頁都能有良好的渲染,算變形用法
vm.$forceUpdate()
- 當要響應的資料層級太裡面而畫面無法更新時,可以用 this.$forceUpdate() 強制重新渲染畫面
- 文章節錄
Vue computed 怪狀
- 在 computed 或 getters 動態計算中,做過於複雜的運算後,陣列內元素會出現重複的情況
- 暫時不知道根本原因,目前解決方式是盡量不要在動態計算中做複雜處理,改用 call function 產出需要的資料,需要時在產一次,並覆蓋舊的
AWS Cognito trigger
- Cognito 自訂觸發 lambda function 時傳入的 event 物件,
event.triggerSource
可得知觸發時的情況 - 利用此值得知觸發 lambda 時是使用者驗證成功、成功換密碼或成功登入等等來判斷該寄哪些信 (目前產品寄信是串接三方服務來發送)
Vue Router Name Views
- 讓多個視圖佈局能在同一個路徑下組合而成,
沒命名時預設顯示 default <router-view name="nav"/>
為視圖命名後可在 route.js 內定義特定路徑下顯示
{
path: '/settings',
component: UserSettings,
children: [{
path: 'emails',
component: UserEmailsSubscriptions
}, {
path: 'profile',
components: { // 注意多個 router view 情況下 component 需加s
default: UserProfile,
nav: UserProfilePreview
}
}]
}
Vue Router redirect
- 重定向為 replace 路由紀錄
Vue Router alias
- 使具有別名的路徑顯示對應別名的視圖
- 多個路徑會共用同一份視圖佈局,舉例場景為:FB 個人頁面有一般網址和短網址(都是顯示個人頁面)、提供不同視角的頁面(同份元件佈局,但可以用路徑參數做不同的狀態)
HTML 標籤中的 Aria 系列屬性
- 大多使用於無障礙網頁,為頁面操作元素增加輔助作用
- https://developers.google.com/web/fundamentals/accessibility/semantics-aria/aria-labels-and-relationships?hl=zh-tw
AWS Cognito Custome Message
- 觸發傳自訂信件時,給AWS的信件 template 如果是中文會有機率發生轉換成亂碼的情況而報錯,解法將中文轉換成 unicode
CSS Flex 迭代兼容
- 節錄文章總結
CSS ellipsis 效果
.ellipsis { //這三個屬性需一起設置才會有效果
overflow: hidden;
text-overflow: ellipsis;
white-space: no-wrap;
}
.limit-line {
overflow: hidden;
text-overflow: ellipsis;
display: block;
display: -webkit-box; // 用 line-clamp 必設的
-webkit-line-clamp: 1; // 可限制幾行才...
-webkit-box-orient: vertical; // 用 line-clamp 必設的 (此屬性元素的內容元素如何排列)
}
Tailwind CSS 安裝和注意
- vue cli 安裝後可直接下
vue add tailwind
- 會產生 tailwind.config.js、postcss.config.js、tailwind.css,只要專案是用 webpack 打包輸出的,使用 tailwind 一定要用 postcss
- tailwind 內建 purge CSS(打包時能過濾無用到的CSS),但
vue add tailwind
後所增加的 vue-cli-plugin-tailwind 會在 postcss.config.js 中加入vue-cli-plugin-tailwind/purgecss
做使用,目前效果比 tailwind 內建還好,所以 tailwind.config.js 的 purge 選項先註解掉 - 若安裝最新 autoprefixer 套件 (用於 postcss 將 css 加瀏覽器前綴),會有綁定 postcss 8 版本的錯誤,目前 vue cli 是使用 7,解法是安裝 autoprefixer 版本 9
- postcss 會遍歷 .vue 和 .html 檔案中的 css,但僅限打完整的 class 名稱,若像:
:class="
h${level}"
這樣是變數形式的 class,postcss 會查不到導致正式環境沒有需要的 class,解法只能寫完整的 class 名稱,像::class="['h1', 'h2', 'h3', 'h4', 'h5', 'h6'][level - 1]"
PostCSS 簡介
- 為 CSS 的後編譯器,可加套件對 CSS 加上瀏覽器前綴、將先進語法轉換為主流瀏覽器通用的等等
- SCSS LESS 為預編譯器,提供更好用並類似CSS語法撰寫並能輸出成真正的CSS
- Vue cli 天生支持 PostCSS 和 Sass、Less、Stylus 等等處理器
指數運算 **
- 以前用
Math.pow(2,3) //8
,現在ES7 提供了指數運算子,3**3 //27
- ^在 JS 為位元運算用
- 指數運算前面不能直接使用一元運算子,要先包起來:
-(2**10) 或 (-2)**10 //-1024
**
才能運算BigInt
型別得值- 用
NaN
Undefuned
會得NaN
,用null
會轉0
以前問題解答
[].apply()
為何不行? 因為 apply 要接在函式物件後面,如Math.max.apply(null, numbers)
(ES8) padStart(), padEnd()
- 字串型別用的方法,加前後綴至指定字數
'19'.padStart(4, '0') // 0019
- 若第二個參數為空字串或第一個參數數字小於對象字串的長度,則返回原字串
- 不給第二個參數預設為加空格
Async Function
async function
本身為回傳 promise,return 任何值會進 resolve(),throw 任何值會進 reject()- Promise.all() 兩種用法:
function normalFunc() {
return Promise.all([
fakeFetch(),
fakeFetch()
])
.then(([result1, result2]) => {
console.log(result1);
console.log(result2);
})
.catch(error => {
console.log(error);
});
}
// ==========
async function asyncFunc() {
try {
const [result1, result2] = await Promise.all([
fakeFetch(),
fakeFetch()
]);
console.log(result1);
console.log(result2);
} catch (error) {
console.log(error);
}
}
performance.now()
- 取得網頁載入以來的 timestamp
Vue :is
- 某些標籤如 ul 底下只能使用指定標籤 li ,用一般的方式插入 component 會無法正常渲染
- 故需用 is 綁定要渲染的組件:
<li is="your-component"></li>
- https://segmentfault.com/q/1010000007205176
Vue v-for
:key
建議是綁跟內容相關的值,若渲染的組件沒有動態變動的可能可用 index 就好,但若綁定的內容會變動,此時用 index 當 key 的話會無法讓畫面響應 (在需響應變化的值在內容物件深層, vue 偵測不到變化的情況下),故用內容值綁定會正常讓畫面變化
Vue & setTimeout
- setTimeout 是在全域物件上,故在 Vue 裡面使用時,就算原先呼叫該 setTimeout 的組件已經銷毀,計時仍然會持續,故需要在該組件 beforeDestroy 時 clearTimeout
Promise.all(array)
- 此函式接取一個含 promise 的陣列並返回 promose
- 接取時得到的值為陣列裡各 promise 回傳結果的陣列,如果有一個 promise reject 將會進錯誤處理,全部完成才會進 reslove