如何使用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支持coffeejs文件,以及将值串化为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