我正在寻找一个自动加载器,类似于它们在语言中的操作方式(例如http://php.net/manual/en/language.oop5.autoload.php)。我只是指定了查找文件的算法,它会自动加载到应用程序中。
我最初的想法是扫描目录并构建索引文件的构建过程。有没有更好的办法?
我正在寻找一个自动加载器,类似于它们在语言中的操作方式(例如http://php.net/manual/en/language.oop5.autoload.php)。我只是指定了查找文件的算法,它会自动加载到应用程序中。
我最初的想法是扫描目录并构建索引文件的构建过程。有没有更好的办法?
这是我使用 browserify 和 node.js 构建脚本的解决方案,但我很好奇是否有人有更好的解决方案:
构建.js:
var glob = require("glob");
var fs = require('fs');
var path = require('path');
function buildFile(directory, build_file, suffix) {
glob(directory, function(err, files) {
if (fs.existsSync(build_file)) {
fs.unlinkSync(build_file);
}
fs.appendFileSync(build_file, 'module.exports = {');
var controllers = {};
files.forEach(function (file) {
var key = path.basename(file, '.js')+suffix;
var value = "require('"+file+"')";
fs.appendFileSync(build_file, '\n '+key+': '+value + ',');
});
fs.appendFileSync(build_file, '\n}');
});
};
buildFile('./controllers/*.js' , './controllers.js', 'Controller');
buildFile('./routes/*.js' , './routes.js' , 'Route');
应用程序.js:
var App = Ember.Application.create();
App.reopen(require('./controllers.js'));
App.reopen(require('./routes.js'));
routes.js(来自 build.js 的示例输出):
module.exports = {
ApplicationRoute: require('./routes/Application.js'),
IndexRoute: require('./routes/Index.js'),
RecoverRoute: require('./routes/Recover.js'),
RegisterRoute: require('./routes/Register.js'),
UsersRoute: require('./routes/Users.js'),
UsersNewRoute: require('./routes/UsersNew.js'),
ValidateRoute: require('./routes/Validate.js'),
}
我使用 Grunt.js 在发生更改时自动监视和重建。
你可能想使用 RequireJS 之类的东西:http ://requirejs.org/
RequireJS 将允许您指定将根据需要加载的依赖项。您还可以运行RequireJS 优化器将您的模板和 JavaScript 编译到一个文件中以部署到您的生产服务器。
可以使用预制工具,例如Yeoman 的 ember generator或ember tools。他们对项目的文件夹结构持意见。