最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用node.js半年來總結(jié)的 10 條經(jīng)驗(yàn)

 更新時(shí)間:2014年08月18日 15:14:24   投稿:hebedich  
從3月初來到帝都某創(chuàng)業(yè)公司的服務(wù)器團(tuán)隊(duì)實(shí)習(xí),到現(xiàn)在已接近半年的時(shí)間。PS: 已轉(zhuǎn)正,服務(wù)器端用的 Node。

先不說房價(jià),堵車,霧霾。。。先說說我這半年使用 Node.js 的經(jīng)驗(yàn)吧。。。都是工作上遇到的問題,血的教訓(xùn)。。

1.精確版本號

“一定要精確到具體版本號!使用*直接滾,^和~都不行!”,早上剛到公司,我們服務(wù)器的頭頭滿眼血絲(估計(jì)又凌晨幾點(diǎn)睡的),對我抱怨道:“媽蛋,以前寫的代碼package.json里的版本和服務(wù)器正在運(yùn)行的版本不一樣。安裝最新的又咣咣一頓報(bào)錯。”此處省略幾千字。。。

好吧。我先打自己臉。以前只會用*。。。大多時(shí)候也沒必要寫死版本號,使用^和~也可以。掃一下盲:

semver
node.js 中的版本管理

2.測試

一定要寫測試用例。就拿我來說,我負(fù)責(zé)的那塊包含過濾部分(用正則神馬的過濾文本,提取出有用的文本)。有了測試用例,每次改動過濾規(guī)則后,npm test 下,妥妥的。依個(gè)人喜好挑選使用的測試模塊,mocha, should, tape, tap, supertest 等等。

嘗試本地運(yùn)行,測試成功后才上傳到服務(wù)器。我好幾次改完代碼(就簡單的改了幾行)以為怎么可能會出問題,結(jié)果一重啟服務(wù)器就掛了。。尼瑪少了括號什么的。。這種問題也可以通過使用jslint或jshint等編輯器插件來檢測低級語法錯誤。

服務(wù)器代碼備份。目前我使用的方法:起初服務(wù)器上有兩個(gè)一模一樣的工程(git庫,文件名不一樣),一個(gè)正在運(yùn)行,另一個(gè)當(dāng)作備份。當(dāng)有代碼改動時(shí),到備份工程下 git pull ,然后停止正在運(yùn)行的程序,啟動備份的程序。假如程序經(jīng)過一段時(shí)間沒有掛掉也就是感覺比較穩(wěn)定后,將此工程當(dāng)作主,另一個(gè)工程當(dāng)作備。當(dāng)又有改動時(shí),重復(fù)以上步驟,主備來回切換。假如程序掛掉了,則切換回較穩(wěn)定的備即可。

3.使用 debug

寫程序免不了調(diào)試,很多人喜歡并習(xí)慣用萬能的 console.log() ,包括我。。就個(gè)人而言,我使用 console.log() 調(diào)完后,不是刪掉就是注釋掉。刪掉吧以后也許還會用到,注釋掉吧怪難看。這個(gè)時(shí)候不妨用用 debug 模塊。暫時(shí)沒用過 node-inspector,不做評價(jià)。

4.保持代碼精簡

嘗試用較少的代碼完成較多的事情,也是對自己能力的提升與考驗(yàn)。包括正確的縮進(jìn),恰當(dāng)?shù)淖兞棵逦拇a組織結(jié)構(gòu)等等。。代碼精簡了,漂亮了,當(dāng)出問題了回頭查錯也快,總比先弄明白一團(tuán)亂糟的代碼干了些什么就花了幾個(gè)小時(shí)強(qiáng)。

假如團(tuán)隊(duì)沒有使用CoffeeScript的話就不要使用它。一是別人無法讀懂你的代碼幫你糾錯。二是出錯后顯示出錯的行數(shù)和coffee代碼的行數(shù)不一樣。。。自己的開源項(xiàng)目可以用用。

5.多請教,保持獨(dú)立思考

剛開始工作的時(shí)候,我也各種一頭霧水,包括技術(shù)上的不足和業(yè)務(wù)邏輯上的欠缺,常常請教團(tuán)隊(duì)內(nèi)的大牛。而后我會嘗試彌補(bǔ)技術(shù)上的不足,理清業(yè)務(wù)上的邏輯。后來有一次,我要根據(jù) PM 的要求設(shè)計(jì)一個(gè) api,既要考慮用戶的需求(多客戶端的情況),客戶端的需求和行為,數(shù)據(jù)庫的設(shè)計(jì)(怎么存冗余少,查詢次數(shù)少,易擴(kuò)展,易修改,差量查詢)等等,考慮了一個(gè)周多,幾近崩潰。。。雖然我和頭頭商量了好多次,但它總是給我理邏輯,不告訴我方法。后來終于找了一種還算不錯的解決方式。。他后來也告訴我,想讓我保持獨(dú)立思考去解決問題,這樣才能有提高。。

6.使用現(xiàn)有的庫

目前npm上已經(jīng)有近9W的第三方模塊了,理論上想用的都能在npm上找到,當(dāng)然npm上不乏非常多的優(yōu)秀的模塊,文檔全面,使用也非常方便,通常都會滿足需求。假如你發(fā)現(xiàn)某個(gè)模塊能滿足大部分需求可以有功能上的完善,或有bug,可以去github上提pr,假如你發(fā)現(xiàn)沒能找到滿足的模塊的話,可以自己創(chuàng)建個(gè)并npm publish到npm上與大家共享。當(dāng)然你發(fā)現(xiàn)某類實(shí)現(xiàn)某個(gè)功能的模塊都很shit的話,你也可以publish個(gè)不shit的。

7.保持簡單

假如你想展示一個(gè)餅圖的話,用 HTML5 canvas 或 CSS3 即可,沒必要用 C++ 的 canvas 庫畫一個(gè)圖片,“光下載依賴的庫就 400+ MB”,頭頭如是說。

8.良好的文檔

良好的文檔是客戶端與服務(wù)器團(tuán)隊(duì)交流的最重要的渠道。文檔寫得明明白白了,假如客戶端請求出錯了,就可以先去查看文檔(比如每個(gè)錯誤代碼代表了什么),而不是每次出問題了就來找服務(wù)器的人討論。PS: 一些 http 請求示例盡量用 curl 寫,而不是 js 中的對象等的方式,也許你看的很懂,但客戶端的人不懂 js。

9.配置文件

在每個(gè)工程目錄下都建一個(gè)配置文件,如 config.js/config.json。而不是寫死在代碼里。如:

{
  "app": 3000,
  "mongo": {
    "host": "localhost",
    "port": 27017
  },
  "redis": {
    "host": "localhost",
    "port": 6379
  }
  ...
}
10.使用 pm2

使用 pm2 等這種進(jìn)程管理工具,很方便,最不濟(jì)進(jìn)程掛掉了還能自動重啟吶。沒用過 forever 不做評價(jià)。。還有 grunt 神馬的也沒用過,不做評價(jià)。

相關(guān)文章

  • nodeJs鏈接Mysql做增刪改查的簡單操作

    nodeJs鏈接Mysql做增刪改查的簡單操作

    本篇文章主要介紹了nodeJs鏈接Mysql做增刪改查的簡單操作,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • 零基礎(chǔ)之Node.js搭建API服務(wù)器的詳解

    零基礎(chǔ)之Node.js搭建API服務(wù)器的詳解

    今天小編就為大家分享一篇關(guān)于零基礎(chǔ)之Node.js搭建API服務(wù)器的詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • node.js 微信開發(fā)之定時(shí)獲取access_token

    node.js 微信開發(fā)之定時(shí)獲取access_token

    本文給大家分享的是在使用node.js做微信開發(fā)的過程中如何定時(shí)獲取access_token的方法,有需要的小伙伴可以參考下
    2020-02-02
  • NodeJs的fs讀寫刪除移動監(jiān)聽

    NodeJs的fs讀寫刪除移動監(jiān)聽

    這篇文章主要介紹了NodeJs的fs讀寫刪除移動監(jiān)聽,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-04-04
  • Node.js利用Net模塊實(shí)現(xiàn)多人命令行聊天室的方法

    Node.js利用Net模塊實(shí)現(xiàn)多人命令行聊天室的方法

    Node.js Net 模塊提供了一些用于底層的網(wǎng)絡(luò)通信的小工具,包含了創(chuàng)建服務(wù)器/客戶端的方法,下面這篇文章主要給大家介紹了Node.js利用Net模塊實(shí)現(xiàn)命令行多人聊天室的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • NodeJS GRPC簡單的示例詳解

    NodeJS GRPC簡單的示例詳解

    本文介紹了如何使用NodeJS GRPC,包括.proto文件的定義、客戶端和服務(wù)器的實(shí)現(xiàn),首先,創(chuàng)建.proto文件定義服務(wù)和消息,然后實(shí)現(xiàn)客戶端greeter_client.js文件,最后運(yùn)行服務(wù)器和客戶端,通過這篇文章,你可以快速掌握NodeJS GRPC的基礎(chǔ)使用方法
    2024-10-10
  • 基于node.js之調(diào)試器詳解

    基于node.js之調(diào)試器詳解

    下面小編就為大家?guī)硪黄趎ode.js之調(diào)試器詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • 如何用nodejs給C#寫一個(gè)數(shù)據(jù)表的實(shí)體類生成工具

    如何用nodejs給C#寫一個(gè)數(shù)據(jù)表的實(shí)體類生成工具

    這篇文章主要介紹了如何用nodejs給C#寫一個(gè)數(shù)據(jù)表的實(shí)體類生成工具,對nodejs感興趣的同學(xué),可以參考下
    2021-05-05
  • Node.js中的模塊化,npm包管理器詳解

    Node.js中的模塊化,npm包管理器詳解

    這篇文章主要介紹了node模塊與npm包管理工具,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-09-09
  • nodejs log4js 使用詳解

    nodejs log4js 使用詳解

    這篇文章主要介紹了nodejs log4js 使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評論

正镶白旗| 辽阳县| 上高县| 琼海市| 锡林浩特市| 大兴区| 太和县| 鲁山县| 南昌县| 岚皋县| 泊头市| 准格尔旗| 广丰县| 保靖县| 宁津县| 名山县| 建阳市| 嘉定区| 塔城市| 刚察县| 保靖县| 长治市| 化隆| 山阳县| 云和县| 进贤县| 云南省| 平谷区| 星子县| 六盘水市| 辽阳县| 平乐县| 怀来县| 咸宁市| 阿克陶县| 惠来县| 彰武县| 松阳县| 内黄县| 衡南县| 楚雄市|