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
参数来支持内置的安全性部分.例如true
eval
# 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 次 |
最近记录: |