完成的家庭作业:
背景故事:我想尝试编写自己的框架,但遇到了一些麻烦,很可能是因为没有完全理解它。
我想要实现的是如下所示的语法:
var app = require('./app'); //this part is understood and it works in my current code.
app.get('/someUrl', function(){ //do stuff here });
app.post('/someOtherUrl', function(){ //do stuff here });
我知道 Express 框架具有相同的语法,但阅读它们的源代码仍然让我难以理解。
这可能是一项微不足道的任务,但我根本无法制作它。
试图require('./app');
在应用程序更深的文件中生成一个未定义的对象,所以我猜测服务器是一个单例对象。
那么我尝试了什么?
我当前的代码看起来像这样,不知何故我觉得这是要走的路,但我显然不能这样做。
我省略了所有require();
语句以使其更具可读性。
server.js:
var app = module.exports = {
preProcess: function onRequest(request, response){
processor.preRequest(request); //this object adds methods on the request object
var path = urllib.parse(request.url).pathname;
router.route(urls, path, request, response);
},
createServer: function() {
console.log("Server start up done.");
return this.server = http.createServer(this.preProcess);
}
};
exports.app = app;
在撰写本文时,我正在尝试用一种get()
方法扩展这个对象。
index.js:
var app = require('./server');
app.createServer().listen('1337');
该router.route()
位基本上将请求向前发送到应用程序和 router.js 文件中,我做了一些魔术并将请求向前路由到映射(到目前为止)到 /urlThatWasRequested 的函数
这是我想留下的行为。我知道这可能是一个很高的要求,但我的所有代码都很容易丢弃,而且我不害怕重写整个代码库,因为这是我自己的项目。
我希望这足以解释我的问题,否则请说出我应该添加的内容以使这一点更清楚。
提前致谢!