gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:16:09 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com