用nodejs造轮子之blog(一)
工作快有2年了,非专业从事开发,乱七八糟搞了一通,java, 需求,原型,网络, .net, ios, android, drupal, joomla, magento。导致没有专业性,所以想造个轮子。
之前听说过node,想用的时候是去年想做个penny bids的应用。后来想法搁置了,也就没碰了。
这次造轮子,是看了node beginner和那个bolg模块开始的。
theme选了几个站准备综合下
http://www.theverge.com/
http://simplebits.com/
http://css-tricks.com/
字体
http://fonts.googleapis.com/css?family=Homenaje
代码有时间放到git上,慢慢更新,因为这个只有业余业余的时间写。
代码基本就是node beginner的结构加了一个helper,是blog模块里取出来的。
var helper = exports;
// get file extension.
helper.extname = function(pathname) {
var index = pathname.lastIndexOf('.');
return index < 0 ? '' : pathname.substring(index);
}
helper.mime = {
// returns MIME type for extension, or fallback, or octet-steam
lookupExtension : function(ext, fallback) {
return helper.mime.TYPES[ext.toLowerCase()] || fallback || 'application/octet-stream';
},
// List of most common mime-types.
TYPES : { ".3gp" : "video/3gpp"
, ".a" : "application/octet-stream"
,...
}
};
extname那个方法貌似path里面有个方法return ext的 mime主要是返回对应的content-type的
function route(handle, pathname, response, request) {
console.log("About to route a request for " + pathname);
// file or path or 404.
if (helper.extname(pathname) != '') {
fs.readFile(pathname.substring(pathname.indexOf('/') + 1), function(error, file) {
if (error) throw error;
response.writeHead(200, {"Content-Type": helper.mime.lookupExtension(helper.extname(pathname))});
response.write(file);
response.end();
});
} else if (typeof handle[pathname] === 'function') {
handle[pathname](response, request);
} else {
console.log("No request handle found for " + pathname);
response.writeHead(404, {"Content-Type": "text/html"});
response.write("404 Not found");
response.end();
}
}
这是最初的router, 能加载css和图片,能根据path找到制定的方法。 图片是能跑出page.tpl.html的模板页面来。
代码等到git上再贴出来,纯当反面教材。
1 回复
代码挺不错的,非常正面的教材.