可新增註釋的json配置檔案---HJSON

weixin_34370347發表於2018-08-30

        用nodejs做了幾個專案,期間一直使用json檔案作為配置檔案,對其不能加註釋、單引號、雙引號等格式問題在前期也踩了不少坑,尤其是多程式猴一起寫程式碼時候,哪個知道那麼多配置名稱是啥子意思,不得不同時維護一個說明文件,但是我懶,寫程式碼這麼高效的事情,沒事開啟個word文件看,忍不了。

        直到有一天,我發現了這篇文章《為什麼說JSON不適合做配置檔案?》(大家可以點進去看看),天降神功,感謝“聊聊架構”技術推送。此處我把主要內容做個大概介紹

json作為配置檔案的缺點:

  1. 缺乏註釋,
  2. 過於嚴格,
  3. 低訊雜比(多餘字元很無用,如鍵的引號其實是多餘的,花括號將整個文件包圍起來等)
  4. 不支援多行字串(在字串中換行,必須使用“\n”進行轉義,想要一個字串在檔案中另起一行顯示,那就徹底沒辦法了)

但是並沒講怎麼使用,結合我的express框架使用,採用了HJSON方案,就開始了我的探索初體驗。

替代方案:HJSON

HJSON 是一種基於 JSON 的格式,但具有更大的靈活性,可讀性也更強。它支援註釋、多行字串、不帶引號的鍵和字串,以及可選的逗號。如果你想要 JSON 結構的簡單性,同時對配置檔案更友好,那麼可以考慮 HJSON。有一些可以將 HJSON 轉換為 JSON 的命令列工具,如果你使用的工具是基於 JSON 的,可以先用 HJSON 編寫配置,然後再轉換成 JSON。JSON5 是另一個與 HJSON 非常相似的配置語言。

npm 安裝

npm install hjson     
        
hjson包的github地址 https://github.com/hjson/hjson-js#modify--keep-comments複製程式碼

“來人吶,上程式碼!!!”

<config/config.hjson>
{
    // 可以加註釋
    name: "express-demo"    // 名稱
    version: 0.12     // num
    private: true  // bool
}


<app.js>
var Hjson = require('hjson');
var fs=require("fs");
var _config=fs.readFileSync("./config/config.hjson", "utf8");
var _configObj = Hjson.parse(_config);
// var text2 = Hjson.stringify(_configObj);
console.log(_configObj)
console.log(_configObj.name)

列印結果:
{ name: 'express-demo', version: 0.12, private: true }
express-demo
複製程式碼

    心情日記:這幾天我司組織了一場規模浩大的乒乓球競技團體賽,換了塑料球的我,直接被一個我很有勝算的兄嘚給虐爆了,寫完部落格,我要洗洗睡(哭一會),晚安!


相關文章