Javascript 在Ember.js中类自动加载器?

Javascript 在Ember.js中类自动加载器?,javascript,build,ember.js,browserify,Javascript,Build,Ember.js,Browserify,我正在寻找一个自动加载器,类似于他们如何运作的语言(例如)。我只指定了查找文件的算法,它会自动加载到应用程序中 我最初的想法是扫描目录并构建索引文件的构建过程。有更好的方法吗?您可能想使用类似RequireJS的东西: RequireJS将允许您指定将根据需要加载的依赖项。您还可以运行将模板和JavaScript编译到一个文件中,以部署到生产服务器。您可能需要使用类似RequireJS的东西: RequireJS将允许您指定将根据需要加载的依赖项。您还可以运行将模板和JavaScript编译到一

我正在寻找一个自动加载器,类似于他们如何运作的语言(例如)。我只指定了查找文件的算法,它会自动加载到应用程序中


我最初的想法是扫描目录并构建索引文件的构建过程。有更好的方法吗?

您可能想使用类似RequireJS的东西:


RequireJS将允许您指定将根据需要加载的依赖项。您还可以运行将模板和JavaScript编译到一个文件中,以部署到生产服务器。

您可能需要使用类似RequireJS的东西:


RequireJS将允许您指定将根据需要加载的依赖项。您还可以运行将模板和JavaScript编译到一个文件中,以部署到生产服务器。

以下是我使用browserify和node.js构建脚本的解决方案,但我很好奇是否有人有更好的解决方案:

build.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');
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'),
}
app.js:

var App = Ember.Application.create();
App.reopen(require('./controllers.js'));
App.reopen(require('./routes.js'));
routes.js(build.js的示例输出):


我使用Grunt.js在发生更改时自动监视和重建。

以下是我使用browserify和node.js构建脚本的解决方案,但我很好奇是否有人有更好的解决方案:

build.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');
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'),
}
app.js:

var App = Ember.Application.create();
App.reopen(require('./controllers.js'));
App.reopen(require('./routes.js'));
routes.js(build.js的示例输出):


我使用Grunt.js在发生更改时自动监视和重建。

可以使用预先制作的工具,如或。他们对项目的文件夹结构持不同意见。

可以使用预先制作的工具,如或。他们对项目的文件夹结构持保留意见。

我可以将整个目录指定为依赖项吗?您想从模块的角度考虑。。。通常不能只说“包含整个目录”,因为javascript往往需要按特定顺序加载。因此,您需要创建一个模块,其中包含功能所需的所有文件。然后,您可以在应用程序的其他地方包含该模块,而不是所有单独的文件。希望这是有意义的。我理解这一点,但问题的关键是更动态地指定这些依赖项,而不是繁琐地管理列表。我可以将整个目录指定为依赖项吗?您想从模块的角度考虑。。。通常不能只说“包含整个目录”,因为javascript往往需要按特定顺序加载。因此,您需要创建一个模块,其中包含功能所需的所有文件。然后,您可以在应用程序的其他地方包含该模块,而不是所有单独的文件。希望这是有意义的。我理解这一点,但问题的关键是更动态地指定这些依赖项,而不是繁琐地管理列表。您使用的是什么服务器端框架?您使用的是什么服务器端框架?我最终使用了ember工具。我最终使用了ember工具。