關于個人開源項目(vue app)的一些總結

項目地址

https://github.com/BYChoo/record

項目簡介

此項目名叫:Record上炎。是以Vue全家桶(vue,vue-router,vuex) + axios + express + mongodb技術棧開發(fā)的一個校園考勤網(wǎng)站挑胸,專門為老師定制的揽思。網(wǎng)站目前實現(xiàn)了登錄注冊、日歷肩狂、導入文件(csv)摘完、考勤、導出缺勤名單等核心功能傻谁。

關于項目結構

剛開始著手做此項目的時候孝治,考慮到項目本身并不復雜,以視圖層來說撐死了也就六七個視圖層审磁,我就把所有視圖層組件都放在components文件夾中谈飒,再在components文件夾中新建一個common文件夾來放置復用的組件。這對于小型項目來說并沒有什么問題(like this)态蒂。但是考慮到此站往后可能會部署上線杭措,為了方便維護,我還是花了些時間對整個項目結構進行了重整:

組件:新建一個views文件夾放置視圖層的組件钾恢,如果每個視圖層需要用到的子組件多的話手素,還可以以此視圖層為核心建一個文件夾,在此文件夾中再建一個childrens文件夾放置子組件

image.png

復用組件:項目中凡是復用到的子組件統(tǒng)一放在components中

http請求:新建一個APIs文件夾瘩蚪,以視圖層面為出發(fā)點創(chuàng)建每個視圖層需要用到的.js文件

image.png

全局方法:新建一個utils文件夾泉懦,放置方法.js文件
靜態(tài)資源:關于靜態(tài)資源,基于vue-cil構建的項目中有兩個可以放置靜態(tài)資源的文件夾:static和src文件夾下的assets疹瘦,放置在static文件夾中的靜態(tài)資源是不會被webpack打包的崩哩,而src文件夾下的靜態(tài)資源則會,該放哪還是酌情考慮吧

關于http請求

不知道大家有沒有這樣子寫過http請求

// 這條http請求是請求xxx
this.$http.get('/api/demo')
  .then((res) => {
    // do something  
  })
  .catch((err) => {
    // throw err
  })

這樣寫請求是沒問題的,但如果這條http請求是需要多次被使用到呢邓嘹?每次都要寫這樣一長串的代碼未免有點不優(yōu)雅了酣栈。針對這個問題,我決定采用把請求抽離出來汹押,以每個視圖層為每個.js文件钉嘹,把每個http請求封裝成函數(shù)然后導出,like this:


/**
 * index.js
 */

const getCaledarDay = function(params) {
  return new fetch({      // fetch是http請求實例
    url: '/api/get_caledarDay',
    method: 'get',
    params
  })
}

export { getCaledarDay }; // 把函數(shù)導出

/**
 * index.vue
 */

...
import { getCaledarDay } from 'api/index.js'; // 引入函數(shù)
...

這樣子寫的話就能有效的規(guī)避了http請求復用的問題了

關于狀態(tài)管理

關于數(shù)據(jù)狀態(tài)管理一直是我開發(fā)Vue項目是都要考慮的問題鲸阻,一般考慮是否要用vux的狀態(tài)管理(vuex)都離不開這個考慮點:跨組件之間數(shù)據(jù)共享問題。如果跨組件之間需要共享到的數(shù)據(jù)多且龐大缨睡,那么直接vuex一把梭就好了鸟悴,不要再考慮了。但如果跨組件之間共享數(shù)據(jù)不多(酌情考慮多的概念)奖年,那么可以通過父子組件間和非父子組件的prop细诸、$emit、$on等事件來傳值也是可以的陋守。

vuex編譯后的大小25kb

關于csv文件上傳與導出功能

csv文件上傳導出可以說是此項目最關鍵的點了震贵。在開發(fā)過程csv文件上傳過程中,我發(fā)現(xiàn)了幾個可以解析csv文件的包:

  • node-csv
  • line-reader
  • fs

其中我采用了node-csv這個類庫來開發(fā)水评,畢竟是node中專門來用解析csv文件的包猩系。此外,我還用了formidable包來模擬解析前端上傳的form表單中燥,如果不這樣做的話寇甸,前端post得csv文件會接受不到。有了formidablenode-csv開發(fā)起來就很美滋滋了疗涉。

導出csv文件部分拿霉,我采用了file-saver包來模擬csv文件的導出下載,怎么使用可以去github上翻閱咱扣,那里都寫的很詳細了绽淘。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市闹伪,隨后出現(xiàn)的幾起案子沪铭,更是在濱河造成了極大的恐慌,老刑警劉巖偏瓤,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伦意,死亡現(xiàn)場離奇詭異,居然都是意外死亡硼补,警方通過查閱死者的電腦和手機驮肉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來已骇,“玉大人离钝,你說我怎么就攤上這事票编。” “怎么了卵渴?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵慧域,是天一觀的道長。 經常有香客問我浪读,道長昔榴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任碘橘,我火速辦了婚禮互订,結果婚禮上,老公的妹妹穿的比我還像新娘痘拆。我一直安慰自己仰禽,他們只是感情好,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布纺蛆。 她就那樣靜靜地躺著吐葵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪桥氏。 梳的紋絲不亂的頭發(fā)上温峭,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音字支,去河邊找鬼诚镰。 笑死,一個胖子當著我的面吹牛祥款,可吹牛的內容都是我干的清笨。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼刃跛,長吁一口氣:“原來是場噩夢啊……” “哼抠艾!你這毒婦竟也來了?” 一聲冷哼從身側響起桨昙,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤检号,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蛙酪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體齐苛,經...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年桂塞,在試婚紗的時候發(fā)現(xiàn)自己被綠了凹蜂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玛痊,靈堂內的尸體忽然破棺而出汰瘫,到底是詐尸還是另有隱情,我是刑警寧澤擂煞,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布混弥,位于F島的核電站,受9級特大地震影響对省,放射性物質發(fā)生泄漏蝗拿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一蒿涎、第九天 我趴在偏房一處隱蔽的房頂上張望哀托。 院中可真熱鬧,春花似錦同仆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至市怎,卻和暖如春岁忘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背区匠。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工干像, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驰弄。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓麻汰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親戚篙。 傳聞我的和親對象是個殘疾皇子五鲫,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內容