如何使用CoffeeScript而不是JSON? 对于configuration文件等
对于本地configuration文件来说,使用JSON确实很麻烦,因为它不支持注释和函数,并且需要非常冗长的语法(逗号,总是使用"
for keys”),使得它非常容易出错,或者在需要函数的情况下,不可能使用。
现在我知道我可以这样做:
require('coffee-script') config = require('config.coffee')
但是,这需要我做module.exports = {the data}
内config.coffee
这是不理想的。 如果我们不信任它们,甚至可以让需要的东西暴露出来,这会使configuration文件变得不安全。
有没有人find一种方法来阅读coffeescriptconfiguration文件,但保持他们的安全?
结果CoffeeScript支持内置的安全部分,通过eval
调用将sandbox
参数设置为true
。 例如
# Prepare fsUtil = require('fs') coffee = require('coffee-script') # Read dataStr = fsUtil.readFileSync('path').toString() data = coffee.eval(dataStr, {sandbox:true})
上面的代码将读取文件数据,然后在沙箱模式下用coffeescript对其进行评估。
我为CSON创build了一个很好的包装器,通过require, cson
文件和json
文件,通过典型的JSON.parse
支持coffee
和js
文件,以及将值串化为coffeescript表示法。 使用这个,暴露下面的API:
# Include CSON CSON = require('cson') # Parse a file path CSON.parseFile 'data.cson', (err,obj) -> # async result = CSON.parseFile('data.cson') # sync # Parse a string CSON.parse src, (err,obj) -> # async result = CSON.parseSync(src) # sync # Stringify an object to CSON CSON.stringify data, (err,str) -> # async result = CSON.stringifySync(obj) # sync