iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0
自我挑戰組

前端系統設計系列 第 2

[Day2] 前端系統設計題目類型

  • 分享至 

  • xImage
  •  

分類

Frontend system design 分為兩種:

  1. Applications
  2. UI component

 

Application

因為 Web app 越來越複雜,所以也開始採用 Software engineering classes,像是:

  • Model-view-controller (MVC)
  • Model-view-viewmodel (MVVM)

甚至像是 Flux / Redux-based architecture

 

你必須專注於應用程序中獨特的部分,而不是花太多時間談論適用於所有問題的一般內容 (It's imperative that you focus on the parts that are unique to the application and not spend too much time talking about general stuff that are applicable to all questions)

 

以下是幾個重點步驟:

  1. 設計高層級架構 (Design the high-level architecture)
  2. 辨識系統的元件 (Identify the component in the system)
  3. 元件之間的 APIs (the API between the components)

 

以下是一些常見問題及其重要部分

Application Examples Important Areas
News Feed Facebook, Twitter 訊息流互動 (Feed interactions), 訊息流分頁方法 (Feed pagination approaches), 訊息編輯器(Message/post composer)
Messaging/Chat Messenger, Slack, Discord 訊息同步 (Message syncing), 即時聊天 (Real-time chat), 訊息列表 (Messages list), 聊天室列表 (Chat list)
E-commerce Marketplaces Amazon, eBay 產品列表 (Product listing pages), 產品細節 (Product detail pages), 購物車 (Cart), 結帳流程 (Checkout)
Photo Sharing Instagram, Flickr, Google Photos 照片瀏覽 (Photos browsing), 照片編輯(Photos editing), 照片上傳 (Photos uploading)
Travel Booking Airbnb, Skyscanner 搜尋介面 (Search UI) , 搜尋結果 (Search results), 預定介面 (Booking UI)
Email Client Outlook, Apple Mail, Gmail 信箱同步 (Mailbox syncing), 信箱介面 (Mailbox UI), 寫信介面 (Email composer),
Video Streaming Netflix, YouTube 影片播放器 (Video player), 影片串流 (Video streaming) , 推薦影片 (Recommended videos)
Pinterest Pinterest 瀑布流版面 (Masonry layout implementation) and 媒體訊息流優化 (media feed optimizations)
Collaborative Apps Google Docs, Google Sheets, Google Slides, Notion 即時互動 (Real-time collaboration), 狀態同步 (State syncing)
Drawing Figma, Lucidchart Rendering approach, Client state/data model
Maps Google/Apple Maps, Foursquare City Guide 地圖渲染 (Map rendering), 展示地區 (Displaying locations)
File Storage Google Drive, Dropbox 檔案上傳 (File uploading), 檔案下載 (File downloading), 檔案搜尋器 (File explorer)
視訊會議 (Video Conferencing) Zoom, Google Meet 影片串流 (Video streaming), 多樣觀看模式 (Various viewing modes)
(共乘系統) Ridesharing Uber, Lyft 旅程預定 (Trip booking), 司機位置 (Driver location)
音樂串流 (Music Streaming) Spotify, Apple Music 音樂播放器界面 (Music player UI), 播放清單 (Playlists UI)
遊戲 (Games) Tetris, Snake Game state, Game loop, Game logic

 
 

UI components

  1. 先決定 subcomponents (e.g. Carousel 有 Image, pagination buttons, thumbnails)
  2. 對外的 API (external-facing API)
  3. 描述 component 內部狀態 (describe the internal component state)
  4. subcomponents 之間的 API
  5. 深入優化 & 效能, security, UX, 可行性 (accessibility)

 

或許會需要寫一小段 code 如下

  1. 描述 component 的階層
  2. 描述 component state
  3. 解釋 component 的重要邏輯 (Explain some non-trivial logic within the component)
<ImageCarousel
	images={...}
	onPrev={...}
	onNext={...}
	layout="horizontal"
>
	<ImageCarouselImage style={...} />
	<ImageThumbnail onClick={...} />
</ImageCarousel>

 

調整主題樣式 (Customizing Theming)

API Design Principles for UI components | Front End Interview Guide | GreatFrontEnd

 
 

範例

 

參考資源


上一篇
[Day 1] 什麼是前端系統設計?
下一篇
[Day3] 系統設計的模板 - RADIO framework
系列文
前端系統設計8
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言