跟我學 “Linux” 小程式 Web 版開發(二):UI 開發
工作量分析
在我們進行這部分開發的時候,接下來我們需要進行相應的功能安排和分類。
簡單看來,我需要開發 3 個頁面:
- 首頁:首頁負責使用者預設訪問。
- 列表頁:列表頁面則是在搜尋過程中,如果有多個結果,則進入到列表頁面。如果有單個結果,則應該進入到詳情頁面。
- 結果頁:結果頁負責顯示命令的具體的翻譯結果。
根據實際的工作拆分元件的化,我需要有一個 Layout 元件來負責整體的頁面的環境渲染。但是,考慮到元件的複用,於是決定將首頁的 Title 進行最佳化,使首頁和詳情頁保持一致。
在新版的佈局情況下,我就可以將頂部的的 title 和底部的 Link 放在最外側的元件中。
建立 Router & Page
在思考情況後,接下來我們來建立 Router 和 Page。首先,刪除 views
下的 About.vue
(因為這個頁面我們不需要)。然後建立 List.vue
和 Result.vue
,用作後續的開發準備。
建立完成後,修改 router/index.js
中的 routes
部分:
const routes = [
{
path: '/',
name: 'home',
component: () => import(/* webpackChunkName: "home" */ '../views/Home.vue')
},
{
path: '/list/:cmd',
name: 'list',
component: () => import(/* webpackChunkName: "list" */ '../views/List.vue')
},
{
path: '/cmd/:cmd',
name: 'command',
component: () => import(/* webpackChunkName: "cmd" */ '../views/Result.vue')
}
]
完成定義後,我們就可以透過形如 https://tldr.linux.cn/list/ls 和 https://tldr.linux.cn/cmd/ls 這樣的方式來訪問具體的命令了。
定義頁面
接下來需要編寫 Home、List 和 Result 這三個頁面。由於這三個頁面在內容方面沒有太多的可以借鑑的點,所以我們更多關注於使用頁面中 <script>
的部分。
<template>
<div class="home">
<v-text-field
v-model="cmd"
@keydown="onKeyDown"
autofocus
></v-text-field>
</div>
</template>
<script>
export default {
name: 'home',
data:function(){
return {
cmd:""
}
},
methods:{
onKeyDown: function(e) {
}
},
computed:{
isLoaded:function(){
return !this.loaded
}
}
}
</script>
上述程式碼是我在三個頁面幾乎都會使用到的結構,刪除其中的一些無用的程式碼以後,基本上在每個頁面都可以看到。這裡我重點說一下其中的一些比較特殊的用法。
首先第一個是在 v-text-field
上加入的 @keydown="onKeyDown"
這個繫結,這個繫結將會幫助實現使用者點選回車以後,自動觸發事件。這樣在使用者輸入完命令後,按下回車就自動執行後續的操作,而不需要再移動滑鼠指標去點選按鈕啟動搜尋。
其次,在 v-text-field
上加入了autofocus
,來實現進入頁面後,自動為輸入框加入focus
,從而實現頁面載入完成後,使用者就可以輸入命令。
這樣的一些配置,可以讓使用者的體驗做到最好。
除此之外,我還用到了 computed
,來做資料調整,確保我可以控制內容。
一些小的特性的點
使用骨架圖來最佳化體驗
由於我們的應用在列表頁面和詳情頁面存在資料的查詢時間,為了讓應用在載入的時候,不會因為載入中而退出頁面,我加入了 v-skeleton-loader 元件,這樣使用者在資料查詢的時候,看骨架圖來緩解使用者的焦慮。
在元件層面,我配置了 v-if
來做顯示的控制,並將 type 設定為 card,article,card,article
來實現多樣化的元件載入支援。
<v-skeleton-loader
v-if="isLoaded"
type="card,article,card,article"
min-height="800"
></v-skeleton-loader>
總結
在這一部分中,藉助 Vue 的 method
、onkeydown
和 computed
實現了頁面基本邏輯的構建。並藉助 Vuetify 的一些基礎元件來構建頁面。
在這一部分,我想告訴大家的更多是在 UI 的部分,我們在做的時候不僅僅需要考慮的是介面,更多還需要考慮在 UX 側體驗的最佳化,元件庫提供給我們的配置專案,可以最佳化產品體驗。
相關文章
- 跟我學 “Linux” 小程式 Web 版開發(一):初始化LinuxWeb
- 跟我學 “Linux” 小程式 Web 版開發(四):引入統計及 Crash 收集LinuxWeb
- 跟我學 “Linux” 小程式 Web 版開發(五):遇到的一些坑LinuxWeb
- 現學現賣微信小程式開發(二)微信小程式
- UI雲開發桌布小程式原始碼UI原始碼
- 美美優選小程式開發(開發小程式)
- 小程式web開發框架-weweb介紹Web框架
- java web 動態web開發基礎入門學習 eclipse版(二)JavaWebEclipse
- 小程式開發
- 微信小程式學習:雲開發微信小程式
- 快速學會開發微信小程式微信小程式
- Web開發學習Web
- 微信小程式開發04-打造自己的UI庫微信小程式UI
- 微信小程式「學科排名」開發心得微信小程式
- mpvue開發小程式Vue
- 微信小程式開發微信小程式
- 《Flask Web開發:基於Python的Web應用開發實戰》學習筆記(二)FlaskWebPython筆記
- web開發學習之旅Web
- Web開發初學指南Web
- 微信小程式開發小記微信小程式
- 使用Flutter + V8開發小程式引擎(二)Flutter
- Flutter Web 外掛開發小記FlutterWeb
- 移動web開發小貼示Web
- 24個免費的Web UI開發套件WebUI套件
- 探索AI驅動Web開發動態UIAIWebUI
- 微信小程式開發系列二:微信小程式的檢視設計微信小程式
- 微信小程式開發學習筆記[4]微信小程式筆記
- 微信小程式開發學習筆記[2]微信小程式筆記
- 微信小程式開發學習筆記[3]微信小程式筆記
- 現學現賣微信小程式開發(一)微信小程式
- Web開發從學些JavaScript開始WebJavaScript
- Spring Boot(二):Web 綜合開發Spring BootWeb
- Swift Web 開發之 Vapor – 路由(二)SwiftWebVapor路由
- Spring Boot (二):Web 綜合開發Spring BootWeb
- 【小程式】微信小程式開發實踐微信小程式
- 【小程式】微信小程式開發準備微信小程式
- HarmonyOS UI 開發UI
- 小程式開發利器:Matchmaker