bal*_*ton 11 json node.js coffeescript
JSON真的很难用于本地配置文件,因为它不支持注释或函数,并且需要令人难以置信的冗长语法(逗号,总是"用于键).使其非常容易出错,或者在需要功能的情况下,不可能使用.
现在我知道我可以这样做:
require('coffee-script')
config = require('config.coffee')
Run Code Online (Sandbox Code Playgroud)
但是,这需要我做一些不太理想的module.exports = {the data}内部config.coffee.甚至允许require暴露的东西,如果我们不信任它们会使配置文件不安全.
有没有人找到一种方法来读取coffeescript配置文件,但要保证它们的安全吗?
bal*_*ton 14
事实证明,CoffeeScript 通过调用设置sandbox参数来支持内置的安全性部分.例如trueeval
# Prepare
fsUtil = require('fs')
coffee = require('coffee-script')
# Read
dataStr = fsUtil.readFileSync('path').toString()
data = coffee.eval(dataStr, {sandbox:true})
Run Code Online (Sandbox Code Playgroud)
上面的代码将读入文件数据,然后在沙盒模式下使用coffeescript进行评估.
我已经为这个名为CSON的CSON创建了一个很好的包装器,它通过require 支持coffee和js文件,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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2877 次 |
| 最近记录: |