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);
対応する要求にデータを操作する必要があると、この方法はうまくいかない。データの要求については次回の講釈を聞いてください。