使用Vue寫一個cnodejs社群的webapp之後的反思

桀驁不馴的喵發表於2017-06-08

前言

終於抽出了時間來完成我這個斷斷續續的專案了,當時最開始是想做一個知乎日報webapp的,不過由於API跨域和圖片的跨域問題,當時處理起來不順手,就改做cnode的了,因為官方提供了API同時也允許跨域,真的是非常感謝cnodejs社群提供的API

反思一 元件重用

當時拿到API之後直接開始擼起了首頁,當時覺得也就幾個頁面就能完成,頁面太多的細分元件,完全按照頁面去完成的,不過當寫的到後面發現,有不少地方都可以提取出來作為元件去呼叫的。比如主題的列表展示,評論以及個人中心的主題等。當拿到一個專案之後應先花寫時間去找找哪有相似的地方,將其提取出來做成元件去呼叫。

反思二 樣式檔案

起初是按照元件和模板的方式,將樣式檔案寫在了vue檔案中。由於之前看過大漠的文章介紹過postcss,於是在這次專案中一開始使用了postcss去寫樣式,因為其中的next外掛可以讓我們使用css4中的一些特性去實現某些樣式。比如變數,元件化,顏色函式等。寫了一些後發現將樣式混入到元件中確實看起來很方便,但是當我定義變數,進行匯入時,發現並不是很順手,而且postcss的使用也並沒有帶給我超越scss的體驗。權衡了利弊之後便切換回了scss,並將檔案全部提取到一個資料夾中進行元件化管理。帶個我的方便是可以分離來寫樣式和結構,也可以進行一些主題的更改。不便是當要更改一個元件時,我可能改完vue還要去找scss。至於那種方便,應該是仁者見仁,或是根據專案需求了吧。

反思三 元件間的資料傳遞

首先使用者的登入資訊無疑是要儲存在官方的狀態管理vuex中了,當然為了儲存也要存在localStorage中了。父級元件向下傳遞使用prop。而頭部標題欄,側滑選單和回覆評論時的顯示隱藏上,狀態的切換。因為都是做成了元件,而資料傳遞時首先想到了放到vuex中,通過getter去獲取狀態的變化。而評論框的顯隱採用的是子元件向父元件通過$emit傳遞事件,從而達到關閉其他評論框的目的。

反思四 資料儲存還原

由於是單頁應用,而資料則是來自ajax,當頁面切換時,資料應該用去主動獲取資料並渲染,而當頁面回退時,應該回到上次瀏覽的位置,而這個功能vue-router提供了方法。然而資料的儲存應該如何去做呢,當時還沒想好解決方案,留待慢慢研究下。

反思五 後端渲染ssr

前端的資料均來自ajax的話,那麼初次載入時便要去請求資料,影響了相應時間和SEO,而現在Vue ssr 的技術也越來越成熟,Vue2.3將ssr的有了很大的效能提示。那麼下一個目標便是將專案升級為後端渲染!

最後

專案地址
線上瀏覽

相關文章