nodejs使用yaml寫配置檔案,是否會有效能問題?最佳實踐又是什麼?
js檔案作為配置,可以參考webpack
讀寫又不頻繁,一般都在專案啟動時用,不會有效能問題。
如果怕,就benchmark一下
Toml#parse x 677 ops/sec ±3。01% (80 runs sampled)
Yaml#parse x 3,405 ops/sec ±1。73% (84 runs sampled)
JSON#parse (fs) x 43,730 ops/sec ±2。84% (83 runs sampled)
JSON#parse (require) x 90,257 ops/sec ±2。01% (84 runs sampled)
JS#require x 87,288 ops/sec ±2。03% (82 runs sampled)
Fastest is JSON#parse (require)
從上面的資料來看,下面這種寫法效率最高
var jsonString = require(‘。/data。json’)
但json表達能力確實差,我不認為配置檔案讀取會有非常影響效能(如果不是頻繁讀寫)。
配置檔案的使用由來已久,從。ini、XML、JSON、YAML再到TOML,語言的表達能力越來越強,同時書寫便捷性也在不斷提升。從rails開始使用yaml,用著非常習慣,另外推薦toml,也非常適合,表達上更好,效能略差。
既然是「配置檔案」,也就是說「是需要人來配置的」,那就需要讓人更容易的配置。
來看 JSON,它是一種「資料格式」,是用來做「資料傳輸」的,所以它連註釋都不能直接寫,它並不適合人來閱讀,也不方便人來編寫,那一定層面也可以說「它不方便、也不適合作為配置檔案」。
再來看 YAML,官網說「YAML is a human friendly data serialization standard for all programming languages。」,看看
The Official YAML Web Site
網站首頁就是一個 YAML,它是對人友好的,易於人的閱讀和書寫的,一定層面說「它是適合作為配置檔案的」。
最後,來說效能, 如
@i5ting
所說「一般都在專案啟動時用,不會有效能問題」 ,配置檔案絕大多數情況都不會頻繁讀寫,如果是要反覆頻繁讀寫檔案,大機率效能問題會出現在「磁碟 IO」上,而不是 YAML 的解析上,用 JSON 也好不了哪兒去。
Node 應用配置檔案,可考慮用一下 Confman 這個模組,
Houfeng/confman
支援多種配置檔案格式,應用寫好後一樣可隨時換想用的配置格式,你可以在配置時決定使用何種格式,而不是在應用開發時。
首先程式不應該自主修改配置檔案。
(這樣也就不會出現讀寫效能問題)
修改的應該是資料檔案。
然後說配置檔案的問題:
抽象出來一個config類可能會好一些。
然後這個類只管提供config以及寫入config。
config在程式startup的時候一次讀取。並新增程式中各個子程式對於某項配置的訂閱。
在觸發修改操作的時候修改配置檔案。並且通知各個訂閱配置修改的子程式。
這樣應該不會有太大效能問題。
可以參考poi的配置檔案寫法。
https://
github。com/poooi/poi/bl
ob/master/lib/config。es
為什麼沒人提dotenv?