簡體   English   中英

Ember.js中的類自動加載器?

[英]Class autoloader in Ember.js?

我正在尋找一個自動加載器,類似於它們在語言中的運行方式(例如http://php.net/manual/en/language.oop5.autoload.php )。 我只是指定了查找文件的算法,它會自動加載到應用程序中。

我最初的想法是一個構建過程,它掃描目錄並構建索引文件。 有沒有更好的辦法?

這是我使用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');

app.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的余燼發生器余燼工具 他們對項目的文件夾結構有所了解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM