用nodejs做了几个项目,期间一直使用json文件作为配置文件,对其不能加注释、单引号、双引号等格式问题在前期也踩了不少坑,尤其是多程序猴一起写代码时候,哪个知道那么多配置名称是啥子意思,不得不同时维护一个说明文档,但是我懒,写代码这么高效的事情,没事打开个word文档看,忍不了。
直到有一天,我发现了这篇文章《为什么说JSON不适合做配置文件?》(大家可以点进去看看),天降神功,感谢“聊聊架构”技术推送。此处我把主要内容做个大概介绍
json作为配置文件的缺点:
- 缺乏注释,
- 过于严格,
- 低信噪比(多余字符很无用,如键的引号其实是多余的,花括号将整个文档包围起来等)
- 不支持多行字符串(在字符串中换行,必须使用“\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
心情日记:这几天我司组织了一场规模浩大的乒乓球竞技团体赛,换了塑料球的我,直接被一个我很有胜算的兄嘚给虐爆了,写完博客,我要洗洗睡(哭一会),晚安!