1. <em id="2qvri"><tr id="2qvri"></tr></em>
      1. 首頁»NodeJS»程序員使用Node的十個技巧

        程序員使用Node的十個技巧

        來源:Sonet-life 發布時間:2015-10-14 閱讀次數:

          從問世到現在將近20年,JavaScript一直缺乏其它有吸引力的編程語言,比如Python和Ruby,的很多優點:命令行界面,REPL,包管理器,以及組織良好的開源社區。感謝Node.js和npm,現如今的JavaScript鳥槍換炮了。Web開發者有了強大的新工具,接下來就看他們的想象力了。

          下面這個提示和技巧清單,能讓你和你的node程序保持快樂。

         1. 用npm init開始新項目

          npm有個init命令,可以引導你完成創建package.json文件的過程。即便你非常熟悉package.json和它的屬性,也可以把npm init當作將你的新程序或模塊導入正軌的簡便辦法。 它可以聰明地為你設置默認值,比如通過上層目錄的名稱推斷模塊名,從~/.npmrc中讀取創作者的信息,以及用你的git設置確定代碼庫。

        mkdir my-node-app
        cd my-node-app
        npm init
        

         2.聲明所有依賴項

          在將模塊安裝到項目本地時堅持使用--save (或 --save-dev)是個好習慣。這些選項會將指定的模塊添加到package.json的dependencies(或devDependencies)清單中,并使用合理的默認semver范圍

        npm install domready --save
        

          注意,現在npm使用插入符風格的semver范圍

        "dependencies": {
          "domready": "^1.0.4"
        }
        

         3.指定啟動腳本

          在package.json中設定scripts.start,你就可以在命令行中用npm start啟動程序了。這個非常方便,因為克隆了你的程序的其他node開發人員不用猜就能輕松運行它。

          額外獎勵:如果在package.json中定義了scripts.start,你就不需要Procfile了(Heroku平臺用Procfile來聲明在你程序的dynos上運行什么命令)。使用npm start會自動創建一個作為web進程的Procfile。

          這里有個啟動腳本示例:

        "scripts": {
          "start": "node index.js"
        }
        

         4.指定測試腳本

          就像團隊中的所有人都應該可以運行程序一樣,他們也應該可以測試它。package.json中的scripts.test就是用來指定運行測試套件的腳本的。如果你用mocha之類的東西運行測試,一定要確保把它包含在package.json里的devDependencies中,并且指向安裝在你項目本地的文件,而不是全局安裝的mocha:

        "scripts": {
          "test": "mocha"
        }
        

         5.不要把依賴項放在源碼的版本控制中

          很多node程序使用的npm模塊帶有C語言寫的依賴項,比如bson、ws和hiredis,這些依賴項必須在Heroku的64位Linux架構下進行編譯。編譯過程可能非常耗時。為了讓構建過程盡可能的快,Heroku的node buildpack在下載和編譯完依賴項后會緩存它們,以便在后續部署中重用。這個緩存是為了降低網絡流量并減少編譯次數。

          忽略node_modules目錄也是模塊創作者推薦的npm實踐。應用程序和模塊之間少了一個區別!

        echo node_modules >> .gitignore
        

         6.用環境變量配置npm

          以下內容摘自npm配置

        所有以npm_config_開頭的環境變量都會被解釋為配置參數。比如說環境中有npm_config_foo=bar時,會將配置參數foo設置為bar。任何沒有給出值的環境配置的值都會設置為true。配置值對大小寫不敏感,所以NPM_CONFIG_FOO=bar也一樣。

          最近在所有的Heroku構建中都有程序的環境。這一變化讓Heroku上的node用戶無需修改程序代碼就可以控制他們的npm配置。習慣#7是這一方式的完美例證。

         7.帶著你自己的npm注冊中心

          最近幾年公共npm注冊中心出現了突飛猛進式的增長,因此會偶爾不穩定。所以很多node用戶開始尋求公共注冊中心之外的方案,他們或者是出于開發和構建過程中速度及穩定性方面的考慮,或者是因為要放置私有的node模塊。

          最近幾個月冒出了一些可供選擇的npm注冊中心。NodejitsuGemfury提供收費的私有注冊中心,此外也有一些免費的,比如Mozilla的只讀S3/CloudFront鏡像Maciej Ma?ecki的歐洲鏡像

          在Heroku上配置node程序使用定制注冊中心很容易:

        heroku config:set npm_config_registry=http://registry.npmjs.eu
        

         8.追蹤過期的依賴項

          如果你編程的時間足夠長,可能已經領教過相依性地獄的厲害了。好在Node.js和npm接納了semver,即 語義化版本管理規范 ,設置了一個健全的依賴項管理先例。在這個方案下,版本號和它們的變化方式傳達的含義涉及到了底層代碼,以及從一個版本到下一版本修改了什么。

          npm有一個很少有人知道的命令,outdated。它可以跟npm update結合使用,能夠找出程序的那些依賴項已經過期了,需要更新:

        cd my-node-app
        npm outdated
        
        Package            Current  Wanted     Latest  Location
        -------            -------  ------     ------  --------
        express              3.4.8   3.4.8  4.0.0-rc2  express
        jade                 1.1.5   1.1.5      1.3.0  jade
        cors                 2.1.1   2.1.1      2.2.0  cors
        jade                0.26.3  0.26.3      1.3.0  mocha > jade
        diff                 1.0.7   1.0.7      1.0.8  mocha > diff
        glob                 3.2.3   3.2.3      3.2.9  mocha > glob
        commander            2.0.0   2.0.0      2.1.0  mocha > commander
        

          如果你做的是開源的node程序或模塊,可以看看david-dmNodeICOshields.io,你可以用這三個優秀服務所提供的圖片徽章在項目的README或網站上顯示生動的依賴信息。

         9.用npm腳本運行定制的構建步驟

          隨著npm生態系統的持續增長,開發和構建過程的自動化選擇也會隨之增長。Grunt是迄今為止node世界中最流行的構建工具,但像gulp.js這種新工具,以及普通的老式npm腳本也因為較輕的負載受到歡迎。

          在你把node程序部署到Heroku上時,要運行npm install --production命令以確保程序的npm依賴項會被下載下來裝上。但那個命令也會做其它事情:它會運行你在package.json文件中定義的所有npm腳本鉤子,比如preinstall和postinstall。這里有個樣本:

        {
          "name": "my-node-app",
          "version": "1.2.3",
          "scripts": {
            "preinstall": "echo here it comes!",
            "postinstall": "echo there it goes!",
            "start": "node index.js",
            "test": "tap test/*.js"
          }
        }
        

          這些腳本可以是行內bash命令,或者也可以指向可執行的命令行文件。你還可以在腳本內引用其他npm腳本:

        {
          "scripts": {
            "postinstall": "npm run build && npm run rejoice",
            "build": "grunt",
            "rejoice": "echo yay!",
            "start": "node index.js"
          }
        }
        

         10.嘗試新東西

          ES6,也就是被大眾稱為JavaScript的ECMAScript語言規范的下一版,其工作名稱為Harmony。 Harmony給JavaScript帶來了很多振奮人心的新特性,其中很多已經出現在較新版本的node中了。

          Harmony實現了很多新特性,比如塊作用域生成器代理弱映射等等。

          要在你的node程序中啟用harmony的特性,需要指定一個比較新的node引擎,比如0.11.x,并在啟動腳本中設置--harmony選項:

        {
          "scripts": {
            "start": "node --harmony index.js"
          },
          "engines": {
            "node": "0.11.x"
          }
        }
        

         11. Browserify

          客戶端JavaScript有亂如麻團般的遺留代碼,但那并不是語言本身的錯。由于缺乏合理的依賴項管理工具,讓jQuery-插件拷貝-粘帖的黑暗時代延續了好多年。感謝npm,帶著我們步入了前端振興的年代:npm注冊中心像野草一樣瘋長,為瀏覽器設計的模塊也呈現出了驚人的增長勢頭。

          Browserify是一個讓node模塊可以用在瀏覽器中的神奇工具。如果你是前端開發人員,browserify將會改變你的人生。可能不是今天,也不是明天,但不會太久。如果你想開始使用browserify,請參閱這些文章

        QQ群:WEB開發者官方群(515171538),驗證消息:10000
        微信群:加小編微信 849023636 邀請您加入,驗證消息:10000
        提示:更多精彩內容關注微信公眾號:全棧開發者中心(fsder-com)
        網友評論(共1條評論) 正在載入評論......
        理智評論文明上網,拒絕惡意謾罵 發表評論 / 共1條評論
        登錄會員中心
        江苏快3投注技巧