用nodejs造轮子之blog(一)
发布于 3年前 作者 waynliu 3221 次浏览

工作快有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的模板页面来。 enter image description here

代码等到git上再贴出来,纯当反面教材。

1 回复

代码挺不错的,非常正面的教材.

回到顶部