json - 如何使用 CoffeeScript 而不是 JSON?对于配置文件等

标签 json node.js coffeescript

JSON 确实很难用于本地配置文件,因为它不支持注释或函数,并且需要非常冗长的语法(逗号,始终使用 " 作为键)。使其非常容易出错,或者在需要功能的情况下,无法使用。

现在我知道我可以做到:

require('coffee-script')
config = require('config.coffee')

但是,这需要我在 config.coffee 中执行 module.exports = {the data},这并不理想。甚至允许暴露诸如 require 之类的东西,如果我们不信任它们,可能会使配置文件不安全。

有没有人找到一种方法来读取 coffeescript 配置文件,但要保证它们的安全?

最佳答案

原来 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 eval。

我为此创建了一个不错的包装器,名为 CSON它通过 require 支持 coffeejs 文件,通过上述机制支持 cson 文件,通过上述机制支持 json 文件典型的 JSON.parse - 以及将值字符串化回 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

关于json - 如何使用 CoffeeScript 而不是 JSON?对于配置文件等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12024020/

相关文章:

json - 如何从多个 Hive 表创建一个新的 Hive 表?我使用 JSON 字符串创建原始表,但不确定如何创建新表

python - 我在抓取的 JSON 中遇到 KeyError

javascript - 多个 2d 索引,不确定在哪个上运行 geoNear

node.js - 如何将 req 参数绑定(bind)或传递给 Passport.js JWT 策略?

javascript - CoffeeScript 类和绑定(bind)

mongodb - geoNear 回调?

javascript-如何在 json 字符串上使用正则表达式来搜索 JQuery 中的数据表列?

python - 使用 urllib2 和 simplejson 无限循环

javascript - 脊椎、node.js (express) 和 Access-Control-Allow-Origin

javascript - 如何在 CoffeeScript 中创建命名函数表达式?