guide:frontend-dev
差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版前次修改 下次修改 | 前次修改 | ||
guide:frontend-dev [2022/05/17 14:58] – ↷ 頁面guid:pdf-frontend-dev被移動並更名為guide:frontend-dev admin_wi1d5ky | guide:frontend-dev [2024/12/22 21:17] (目前版本) – 外部編輯 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
- | # PDF 前端開發指南 | + | # 前端開發指南 |
+ | |||
+ | ## 圖片 | ||
+ | |||
+ | ```html | ||
+ | <img | ||
+ | src=" | ||
+ | srcset=" | ||
+ | /> | ||
+ | ``` | ||
+ | |||
+ | --- | ||
+ | ## lazy import | ||
+ | |||
+ | ```jsx | ||
+ | import React, { useState, createElement } from ' | ||
+ | import MessageList from ' | ||
+ | import MessageInput from ' | ||
+ | import ErrorBoundary from ' | ||
+ | |||
+ | const Channel = () => { | ||
+ | const [emojiPickerEl, | ||
+ | |||
+ | const openEmojiPicker = () => { | ||
+ | import(/* webpackChunkName: | ||
+ | .then(module => module.default) | ||
+ | .then(emojiPicker => { | ||
+ | setEmojiPickerEl(createElement(emojiPicker)); | ||
+ | }); | ||
+ | }; | ||
+ | |||
+ | const closeEmojiPickerHandler = () => { | ||
+ | setEmojiPickerEl(null); | ||
+ | }; | ||
+ | |||
+ | return ( | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | {emojiPickerEl} | ||
+ | </ | ||
+ | </ | ||
+ | ); | ||
+ | }; | ||
+ | |||
+ | ``` | ||
+ | |||
+ | |||
+ | --- | ||
+ | ## map & object 的使用時機 | ||
+ | |||
+ | ### 使用 Map: | ||
+ | |||
+ | * 储存的键不是字符串/ | ||
+ | * 储存大量的数据时,选择 Map,因为它占用的内存更小 | ||
+ | * 需要进行许多新增/ | ||
+ | * 需要保持插入时的顺序的话,选择 Map,因为 Object 会改变排序 | ||
+ | * 需要迭代/ | ||
+ | |||
+ | |||
+ | ### 使用 Object: | ||
+ | |||
+ | * 只是简单的数据结构时,选择 Object,因为它在数据少的时候占用内存更少,且新建时更为高效 | ||
+ | * 需要用到 JSON 进行文件传输时,选择 Object,因为 JSON 不默认支持 Map | ||
+ | * 需要对多个键值进行运算时,选择 Object,因为句法更为简洁 | ||
+ | * 需要覆盖原型上的键时,选择 Object | ||
+ | |||
+ | |||
+ | Src: < | ||
+ | |||
+ | --- | ||
+ | |||
+ | ## PDF 頁面開發 | ||
- 可以在後端用 puppeteer 的 `.pdf()` 來輸出,文件可見 [[https:// | - 可以在後端用 puppeteer 的 `.pdf()` 來輸出,文件可見 [[https:// |
guide/frontend-dev.1652770693.txt.gz · 上一次變更: 2024/12/22 21:17 (外部編輯)