Node+Express搭建個(gè)人博客(純后端)-開發(fā)準(zhǔn)備(二)

技術(shù)棧

  • 平臺(tái): Node.js(v8.9.3)
  • 框架:Express(v4.16.0)
  • 數(shù)據(jù)庫(kù):MongoDB(v3.4.14)

開發(fā)環(huán)境

Node與MongoDB的下載與安裝,請(qǐng)自行百度或谷歌,遍地都是只锭,不再贅述九巡。

相關(guān)規(guī)范

相關(guān)規(guī)范主要包括代碼規(guī)范Git commit規(guī)范API接口文檔規(guī)范邑狸。

代碼規(guī)范

代碼規(guī)范采用JavaScript Standard Style,以下簡(jiǎn)稱standard規(guī)范巧骚。至于為什么使用這個(gè)代碼規(guī)范,沒有什么特殊原因侣监,這是我使用過的第一個(gè)代碼規(guī)范,是我規(guī)范自己代碼的開始臣淤,習(xí)慣而已橄霉,并且github上的start數(shù)也不算少。standard規(guī)范相比較ESLint而言邑蒋,最舒服的一點(diǎn)就是不用配置姓蜂,對(duì)我影響最大的一點(diǎn)是代碼中再也沒有出現(xiàn)分號(hào),并且強(qiáng)迫癥再也受不了代碼中有分號(hào)【捂臉】医吊,以至于后來使用ESLint時(shí)钱慢,也要配置為可以不寫分號(hào)【再次捂臉】。

通過代碼規(guī)范卿堂,可以在編程過程中避免一些低級(jí)錯(cuò)誤束莫,比如使用未定義的變量等,同時(shí)可以規(guī)范自己的代碼書寫風(fēng)格草描,有了規(guī)范代碼的習(xí)慣览绿,寫出來的代碼賞心悅目,看著也舒服很多穗慕,一定程度上增加了代碼的可讀性饿敲,工作效率的提升也是必然的事情。

我聽說過逛绵,有的團(tuán)隊(duì)的代碼規(guī)范及其嚴(yán)格怀各,比如一行代碼最大字符長(zhǎng)度不能超過120甚至80,每個(gè)函數(shù)的代碼行數(shù)不能超過50行等术浪,存在必有意義吧瓢对,起初沒必要對(duì)自己這么嚴(yán)格,但是代碼規(guī)范還是要重視起來的添吗。

工具配合

我使用的編輯器是VS Code,可以安裝StandardJS插件沥曹,非常方便。

同時(shí)可以配合一個(gè)npm的庫(kù)包pre-commit進(jìn)行代碼規(guī)范,因?yàn)椴灰?guī)范的代碼是不會(huì)影響程序的正常運(yùn)行的妓美,但我們使用代碼規(guī)范的目的就是希望提交到代碼倉(cāng)庫(kù)的代碼都是規(guī)范的僵腺,pre-commit的作用就是在進(jìn)行commit操作時(shí)檢測(cè)所有代碼是否符合standard規(guī)范,如果不符合則不允許提交代碼壶栋。

相關(guān)參考

standard規(guī)范的文檔中辰如,有關(guān)于規(guī)范的細(xì)則和使用過程中可能出現(xiàn)的問題。

standard規(guī)范的中文文檔

standard規(guī)范的github鏈接

pre-commit鏈接

Git commit規(guī)范

我們進(jìn)行commit操作時(shí)贵试,填寫的相關(guān)說明一定是要有意義的琉兜,我記得在學(xué)習(xí)編程的最開始,我們的對(duì)git的命令以及操作規(guī)范不清楚毙玻,所以commit的信息亂七八糟豌蟋,經(jīng)常是“解決沖突”、“修改bug”這樣的說明桑滩,在被批評(píng)之后梧疲,也僅僅是commit信息不再胡寫。

項(xiàng)目的commit message規(guī)范使用的是主流的Angular規(guī)范运准,在實(shí)際的團(tuán)隊(duì)開發(fā)中幌氮,通過對(duì)commit日志的規(guī)范,有助于代碼的review
胁澳、日志的自動(dòng)化生成以及項(xiàng)目發(fā)版该互,同時(shí)能夠很好地熟悉git工作流。在該項(xiàng)目中不涉及發(fā)版韭畸,只是簡(jiǎn)單的開發(fā)宇智,所以只是遵循了部分規(guī)范,在實(shí)際工作中陆盘,如果團(tuán)隊(duì)剛好涉及到git工作流的規(guī)范普筹,那肯定是要遵循的败明。

Git commit日志基本規(guī)范

基礎(chǔ)語(yǔ)法模板

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

規(guī)范的基本說明:

type代表本次提交的類型隘马,是新增feature還是修復(fù)bug或是修改文檔等,主要類型及其說明如下:

  • feat:新增feature
  • fix: 修復(fù)bug
  • docs: 僅僅修改了文檔妻顶,比如README, CHANGELOG, CONTRIBUTE等等
  • style: 僅僅修改了空格酸员、格式縮進(jìn)、都好等等讳嘱,不改變代碼邏輯
  • refactor: 代碼重構(gòu)幔嗦,沒有加新功能或者修復(fù)bug
  • perf: 優(yōu)化相關(guān),比如提升性能沥潭、體驗(yàn)
  • test: 測(cè)試用例邀泉,包括單元測(cè)試、集成測(cè)試等
  • chore: 改變構(gòu)建流程、或者增加依賴庫(kù)汇恤、工具等
  • revert: 回滾到上一個(gè)版本

scope表明本次修改的范圍或者模塊庞钢,例如users。

subject是對(duì)變更內(nèi)容的簡(jiǎn)要描述因谎。

BLANK LINE不用說,就是字面意思的空白行。

body是對(duì)本次變更更加詳細(xì)的說明斑匪,可以是發(fā)起本次變更的原因以及本次變更的解決思路和方法等龟虎。

footer處填寫相關(guān)連接。

格式要求:

# 標(biāo)題行:50個(gè)字符以內(nèi)匠璧,描述主要變更內(nèi)容
# (我是空行)
# 主體內(nèi)容:更詳細(xì)的說明文本桐款,建議72個(gè)字符以內(nèi)。 需要描述的信息包括:
# (我是空行)
# * 為什么這個(gè)變更是必須的? 它可能是用來修復(fù)一個(gè)bug夷恍,增加一個(gè)feature鲁僚,提升性能、可靠性裁厅、穩(wěn)定性等等
# * 他如何解決這個(gè)問題? 具體描述解決問題的步驟
# * 是否存在副作用冰沙、風(fēng)險(xiǎn)? 
#
# 尾部:如果需要的話可以添加一個(gè)鏈接到issue地址或者其它文檔,或者關(guān)閉某個(gè)issue执虹。

相關(guān)參考

Git commit message和工作流規(guī)范

API接口文檔規(guī)范

我寫過的第一個(gè)接口文檔拓挥,是word形式的,寫了大概三個(gè)接口就受不了了袋励,word寫接口侥啤,太不舒服了,后來用showdoc工具寫接口文檔茬故,好用了很多盖灸,但是沒有很好地體現(xiàn)文檔的維護(hù)記錄,再后來磺芭,參加工作之后接觸了解了apidoc赁炎,相對(duì)而言,它也算主流之一钾腺,使用簡(jiǎn)單并且支持多語(yǔ)言徙垫,所以就開始使用apidoc作為生成接口文檔的工具,接口文檔在代碼中以注解的形式書寫放棒,然后通過apidoc的相關(guān)命令生成接口文檔姻报,配合git剛好可以很好地體現(xiàn)接口文檔的維護(hù)記錄。當(dāng)然间螟,還有其他選擇吴旋,個(gè)人喜好而已损肛。

apidoc編寫接口示例

代碼實(shí)例:

/**
 * @api {POST} /user create a user
 * @apiDescription 用戶新增的接口
 * @apiName 用戶注冊(cè)
 * @apiGroup User
 * @apiUse userParams
 * @apiSuccessExample Success-Response:
 * {
 *   errorCode: 0,
 *   status: 200,
 *   data: {
 *     _id: '123',
 *     name: 'morehao',
 *     createdAt: '20180913',
 *     updatedAt: '20180913',
 *     lastLogin: '暫未登錄'
 *   }
 * }
 * @apiErrorExample {json} Error-Response:
 *  {
 *    status: 200,
 *    errorCode: 20100,
 *    errorMsg: '該用戶已經(jīng)存在'
 *  }
*/

截圖實(shí)例:


image

image

相關(guān)參考

這里只確定API接口文檔的生成方式,詳細(xì)的使用后面也不會(huì)過多涉及荣瑟,下面附上相關(guān)鏈接荧关。

apidoc官方網(wǎng)站

apidoc文檔的官方示例

下面附上項(xiàng)目的github地址:

項(xiàng)目地址

我的個(gè)人博客:

毛浩先生的個(gè)人博客

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市褂傀,隨后出現(xiàn)的幾起案子忍啤,更是在濱河造成了極大的恐慌,老刑警劉巖仙辟,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件同波,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡叠国,警方通過查閱死者的電腦和手機(jī)未檩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粟焊,“玉大人冤狡,你說我怎么就攤上這事∠钐模” “怎么了悲雳?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)香追。 經(jīng)常有香客問我合瓢,道長(zhǎng),這世上最難降的妖魔是什么透典? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任晴楔,我火速辦了婚禮,結(jié)果婚禮上峭咒,老公的妹妹穿的比我還像新娘税弃。我一直安慰自己,他們只是感情好凑队,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布则果。 她就那樣靜靜地躺著,像睡著了一般顽决。 火紅的嫁衣襯著肌膚如雪短条。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天才菠,我揣著相機(jī)與錄音,去河邊找鬼贡定。 笑死赋访,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蚓耽,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼渠牲,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了步悠?” 一聲冷哼從身側(cè)響起签杈,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鼎兽,沒想到半個(gè)月后答姥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谚咬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年鹦付,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片择卦。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡敲长,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出秉继,到底是詐尸還是另有隱情祈噪,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布尚辑,位于F島的核電站钳降,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏腌巾。R本人自食惡果不足惜遂填,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望澈蝙。 院中可真熱鬧吓坚,春花似錦、人聲如沸灯荧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)逗载。三九已至哆窿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厉斟,已是汗流浹背挚躯。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留擦秽,地道東北人码荔。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓漩勤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缩搅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子越败,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評(píng)論 25 707
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料硼瓣? 從這篇文章中你...
    hw1212閱讀 12,723評(píng)論 2 59
  • 一個(gè)人究飞,工作的時(shí)候,走路的時(shí)候堂鲤,旅行的時(shí)候亿傅,等候的時(shí)候,在車上的時(shí)候——幾乎是所有醒著的時(shí)候筑累,甚至是在睡...
    平夏閱讀 708評(píng)論 0 1
  • 死了三天袱蜡,睡了一下午,醒來很難受慢宗,終于晚上走出去一趟坪蚁,慢慢活過來了。晚上镜沽,大師兄給我們音頻敏晤,講了三點(diǎn),一點(diǎn)是如何將...
    梅子Mey閱讀 185評(píng)論 0 1
  • “他們臉上的皺紋里積滿了陽(yáng)光和泥土缅茉,他們向我微笑時(shí)嘴脾,我看到空洞的嘴里牙齒所剩無(wú)幾。他們時(shí)常流出混濁的眼淚蔬墩,這倒不是...
    HOPEhopeHOPE閱讀 152評(píng)論 0 0