443100
想写一个递归创建目录的脚本, 开始发现创建目录都不对的.. 先是一个模块:
events = require "events"
exports.ring = ring = new events.EventEmitter
create_file = (base_path, data) ->
if (typeof data) is "string"
file_path = path.join base_path, data
fs.writeFile file_path, ""
else
for key, value of data
new_path = path.join base_path, key
fs.mkdir new_path, ->
create_file new_path, value
ring.on "create", (tree, base_path) ->
base_path = base_path or "."
create_file base_path, tree
然后在另一个文件引用:
file_tree =
"parent": "child"
"tree":
"a": "aa"
"b": "bbb"
scaffold = require("../lib/index").ring
scaffold.emit "create", file_tree
创建的目录结构是这样的:
➤➤ tree
.
|-- create.coffee
|-- parent
`-- tree
|-- a
`-- b
`-- bbb
create.coffee 是我跑脚本的文件, 文件树几个子文件没有创建成功..
然后我把 for in 循环改成了 Object.keys 和 forEach, 文件创建成功,
以前在 DOM 节点绑定操作的时候遇到过这个问题, 为什么文件操作里也有?
记得原来的说法是循环当中没有创建作用域, 可传值在 JS 里也出错的么?