我不太了解node.Is我可以做任何事情来迭代对象,而不必每次都需要它
folderOrder = ['routes', 'models','fixtures', 'views', 'controllers']
require 'routes/posts_route'
require 'routes/post_route'
require 'models/post'
无论如何,我在文件夹路由和模型中创建的所有新文件都将自动需要,而不需要每个文件。我的例子是https://github.com/abhayathapa/ember-blogger/blob/master/app/initialize.coffee
任何帮助将不胜感激。我已经尝试了node.js require all files in a folder?中的答案,但我得到了相同的结论---找不到模块“fs”
答案 0 :(得分:3)
您可以尝试这样的事情(如果您使用的是node.js ):
folderOrder = ['routes', 'models','fixtures', 'views', 'controllers']
fs = require 'fs'
folderOrder.forEach (folder) ->
dir = __dirname + '/' + folder + '/'
files = fs.readdirSync dir
files.forEach (file) ->
require dir + file
更新
在检查了您链接的示例后,似乎这与节点无关。它是浏览器代码,使用早午餐来管理构建。但是,在initialize.coffee
中,已经有一个注释的代码片段可以完全执行此操作,如果您取消注释,它似乎可以正常工作,并注释掉“手动”要求。不过,我不知道它为什么不首先使用。
因此,initialize.coffee应该包含这个:
# ===== Config =====
window.App = require 'config/app'
require 'config/router'
require 'config/store'
# Load all modules in order automagically.
# Ember likes things to work this way so everything is in the App.* namespace.
folderOrder = [
'routes', 'models','fixtures', 'views', 'controllers', 'helpers', 'templates'
]
folderOrder.forEach (folder) ->
# Go through the prefixes in order and require them
window.require.list().filter((module) ->
new RegExp("^#{folder}/").test(module)
).forEach((module) -> require(module))
编辑完文件后,从根文件夹运行brunch w -s
,它应该正常工作。
答案 1 :(得分:1)
是的,我使用的是:
fs = require 'fs'
requiredFiles = {}
for file in fs.readdirSync __dirname when file isnt 'index.coffee'
requiredFiles[file.replace /\.coffee$/, ""] = require "./#{file}"
# requiredFiles is populated with all files in the current path, except index.coffee
答案 2 :(得分:0)
我会做类似于@mutil的事情,但会将该逻辑放在每个给定的文件夹中。
给定一系列路径,每个文件夹中都有一个index.coffee:
fs = require 'fs'
module.exports = (path)->
fs.readdir "./#{path}", (err, files) ->
if err?
return err
else
return (require "./#{file}" for file in files when file isnt 'index.coffee' and file isnt '.DS_Store')
与
for folder in folderOrder
require("./#{folder}")(folder) for folder in folderOrder
在initialize.coffee中,但是你可能会遇到一些异步问题。