前文
最近面試有一間公司要求使用Restcountries API使用CRUD前端Html串接API,有看我文章的夥伴應該知道我大多是研究後端或CI/CD相關技術,對於前端技術較少研究,這次我打算使用vue.js來完成此次需求.
需求如下
- 分頁
- 顯示國家相關資訊
- 排序效果
- 點選國家名稱進入Detail頁面
因為以上幾點都是CRUD相關操作,關於CRUD相關操作使用三大框架就很適合(所以我選擇使用Vue)
話不多說先給大家看看成品 RestcountriesSample
Source Code
要使用的API介紹
雖然官網對於API介紹雖少,但我相信只要有常串API的人應該可以很快猜出每個API作用.
- All:請求所有國家資訊
- FULL NAME:查找國家By名子.
而且我發現大部分API都可以用GET來請求.
只要用這兩個就可以完成我們的需求
Code解說與問題分析
一開始我在分析問題是要找尋合適的API後面經過塞選挑出上面兩個API.
接下來我就考慮把畫面用Table + 分頁方式呈現,而Detail Page利用Query String方式傳Country Name來看明細資料.
我用Pure前端串接API,所以我建立兩個Html頁面
- 一個是Master Page
- 一個是Detail Page
Master page
在Javascript code我主要介紹流程
主要在一開始頁面建立時去Load All 資料並把資料binding在rows
陣列物件
orderBy
方法,提供一個排序實現這邊可以讓Page呼叫時傳入要排的欄位名稱就可以不用HardCode(使用類似@click="orderBy('name'),ASC *= -1"
)傳入Name就可以對於Name來排序,提高程式碼可用性
因為API請求有時候會比較久,所以我這邊使用vue-loading-overlay來當Loading Page(有興趣的可以在查閱此連結的API)
1 | <div id="app"> |
1 | var app = new Vue({ |
Detail Page
Detail我使用FULL NAME來查找我要的國家明細
Detail Html畫面,我就不多說可以看原始碼
因為我在設計時想要使用QueryString來傳送CountryName,所以我利用URLSearchParams
來取得QueryString countryName
資料並使用Ajax查詢API
如果查不到資料或使用者傳送一個不存在的資訊,我就會顯示No Data Display!!
1 | var app = new Vue({ |
小結
這次題目我前後大約花半天就把東西從無到有完成,個人覺得還算蠻順利的,但我寫的Front Code可能不太標準(因為我很少寫Js XDD)
如果有寫得不好的地方在歡迎指教
不得不說我覺得Vuejs寫起來真的蠻直覺,而且很多資源可以查閱學習來相對蠻容易的
相是Loading Page就有很多不同的樣式可以挑選.
此文作者:Daniel Shih(石頭)
此文地址: https://isdaniel.github.io/vue-first-Restcountries/
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 3.0 TW 許可協議。轉載請註明出處!