ile başvuru tanımla controller
adında bir uygulama geniş nesnesini başlatıyorum. Ayrıca bir sunucu başlatıyorum. Yedeklemeyi düşük tutmak istediğimden beri, her istekte controller
için bir ön uç oluşturmak istiyorum, controller
için bir kopya/başvuru, ancak istek geniş nesneler/yapılandırmaları içeren ve controller
içinden erişilebilen ek bir pool
özelliği ile .Uygulamamda ek içeriğe özgü özellikler
var applicationPool = new ObjectPool(); // container for objects
var controller = new Controller(); // application wide instance
var server = http.createServer();
applicationPool.set("myController", controller);
server.on("request",function(req,res){
var requestPool = new ObjectPool();
requestPool.set("request",req);
requestPool.set("response",res);
/*
* pool population
* routing
* controller resolving
* parameter resolving
*/
// frontend specific to current request
var frontend = applicationPool.get("myController").create(requestPool);
// hopefully finishes res
frontend.greetAction(parameters);
/*
* post response actions
*/
}
server.listen(3000);
Ve Controller
sınıfı: Bir BaseController
sınıfı hakkında
function Controller(){
BaseController.call(this);
// ...
}
function greetAction(parameters){
var res = this.getObjectPool().get("response"); // defined in BaseController
res.end(format("Greetings, %s!",parameters["name"]));
}
Controller.prototype = Object.create(BaseController.prototype);
Controller.prototype.greetAction = greetAction;
Ek düşüncelerim: şuydun Takıldığım edilir
function BaseController(){ ... }
function getObjectPool(){
return this.pool;
}
function create(pool){
var frontend = Object.create(this.__proto__, this);
frontend.pool = pool;
return frontend;
}
BaseController.prototype.getObjectPool = getObjectPool;
BaseController.prototype.create = create;
. Test ettiğim şey için. pool
'u frontend
'a eklerseniz, controller
nesnesine de uygulanır. Yeni bir nesne oluşturmayı ve controller
'un tüm özelliklerini eklemeyi düşünüyorum. Ayrıca, controller
hedef ve getObjectPool
için get
trap'a sahip olmakla birlikte proxy'lere bir göz atıyorum.
Doğrudan res
'u değiştirmenin hatalı olduğunu biliyorum. Muhtemelen bunun yerine string
/buffer
dönecektir. Ama anlatılan problem devam ediyor. Diğer kontrolörleri yerleştirmeyi planlarken.
PHP + Symfony'den geliyorum, yöntemiyle ve getContainer
yöntemine sahip bir sınıf ve temel nesneler için kısayollar, aynı şeyi yapıyor.
Herhangi bir düşünce takdir edilmektedir. Bir süre bunu çözmeye çalışıyorum.
Şerefe!