nodejsを使ってウェブサイトを作成します。再構成コード。
1558 ワード
index.jsでは最初からファイルの存在を判断しています。files Load関数でも同じように判断しました。書き直したら次のようになります
// server.js
var config = require('./common/config');
var http = require('http');
var fs = require('fs');
var url = require('url');
var path = require('path');
var FServer = require('./server/FServer');
function index(){
function onRequest(req, res){
//
var pathname = url.parse(req.url).pathname;
// ( .)
var extname = path.extname( pathname );
var type = extname.slice(1);
// ,
var realPath = config.root + pathname;
if ( extname ) {
if ( type === 'html' ) {
realPath = config.root + '/tpl' + pathname;
}
FServer.filesLoad(realPath, type, req, res);
} else {
// ToDo
}
}
http.createServer(onRequest).listen(config.port);
}
exports.index = index;
コードは以前よりずっと簡潔であるが、ToDo部分は本質的な内容を追加していない。ただし、拡張子が特定されていない場合は、要求されたファイルがどのような種類かは不明ですので、ディスク上のファイルの本当のパスを特定することはできません。一般的には、拡張子なしの要求は、データ操作の属性(SEOのために書き換えられたurlを含まない)を有する。ToDoの内容を完成するには、サイトのすべてのurlを列挙して、ディスク上のファイルと一対一に対応してください。例えばfile = {
'/' : config.root + '/tpl/index.html',
'/upload' : config.root + '/tpl/upload.html'
//
}
このように行くファイルはディスク上のリアルパスでfileを呼び出すことができます。ToDoの内容は以下のようになります。realpath = file[pathname];
type = path.extname( realpath );
FServer.filesLoad(realPath, type, req, res);
対応する要求にデータを操作する必要があると、この方法はうまくいかない。データの要求については次回の講釈を聞いてください。