加上越来越多解析器

  • LESS
    因为LESS后缀在mime中不可能取获得和css一样的type,我们须要去修改包装的mime对应方法lookup

var mime = require("mime");
module.exports = {
    isTXT: function(path){
        return /\b(text|xml|javascript|json)\b/.test( this.lookup(path) );
    },
    lookup: function(path){
        if( /\bless\b/.test(path) ){
            return mime.lookup("css");
        }else{
            return mime.lookup(path);
        }
    }
};

接下来添加less解析器

less: function(str,root,req,resp){
        require("less").render(str, function (err, output) {
            if (err) { throw err }
            else{
                resp.end( output.css );
            }
        });
}

可是事实上,你去平素访问对应的less文件链接的时候服务端竟然重返空,
那是出于在主模块中…

else if( mime.isTXT(pathname) ){
        rs.on("end",function(){
                str = require("./lib/handle").execute(str, root, req, resp);  //将处理过程用一个新的模块实现
                resp.end( str );
        });
}

把handle模块的执行结果早就当作字符串输出到响应中,可是在LESS解析器模块中的处理进度是异步监听机制的,大家必要修改那里当没有数据再次来到的时候绝不使用响应输出。

else if( mime.isTXT(pathname) ){
        rs.on("end",function(){
                str = require("./lib/handle").execute(str, root, req, resp);  //将处理过程用一个新的模块实现
                if(typeof str != "undefined") resp.end( str ); //只有返回结果不是undefined时,才直接输出
        });
}

接下来再一次测试,你对号入座的LESS财富, ! 妥妥的了 !

PS:

连锁完整代码已经发布到了npm仓库中, 能够运用
$npm install http-f2e-server@0.0.9 举办设置恐怕更新。进入目录后使用
$node http-f2e-server.js 运营服务,并查看德姆o。

累加正视

middleware的部分模块,
我们运用支付重视不在安装http-f2e-server的时候一向下载。
因而添加注重的时候放在devDependencies参数方面。

"devDependencies": {
    "jade":">=1.7.0",
    "coffee-script": ">=1.8.0",
    "less": "2.0.0",
    "markdown":">=0.5.0"
  },

然后 npm install 安装具有中间件重视模块

增进模块入口

因为中间件都以对字符串的操作,笔者将进口放在 mime.isTXT(pathname)
条件下。能够依照本人供给,放在跟handle模块同级或许在这之中判断, 原版
f2e-server
是和handle模块并行的,那版处理的时候利用在handle模块里面。

var compiled = _.template(str),
    result = compiled({require: require,request:req,response:resp}),
    mw;
if( mw = middleware[ req.url.match(/\b(\w+)$/)[1] ] ){
    mw(str,root,req,resp);
}else{
    return str;
}

在middleware内部

创设中间件模块,依次依照各样文件后缀名创立解析方法,在当中采纳resp输出结果,首先成立最简易的markdown解析,
如下:

"use strict";
var mime = require("./mime");
module.exports = {
    md: function(str,root,req,resp){
        resp.writeHead(200,{"Content-Type": mime.lookup('html')});
        var output = require( "markdown" ).markdown.toHTML(str + '');
        resp.end( '<style>code{padding:2px 8px;background:#eee;}</style>' + output, "utf-8" );
    }
};

markdown模块相关的API能够查阅github:https://github.com/evilstreak/markdown-js
那里成功后,直接从浏览器访问
http://localhost:8888/README.md
就可见赢获得markdown解析结果HTML了

更加多解析器

能够活动查看越来越多相关模块的API
(查看各样模块的package.json中的git地址查阅)

准备

使用 $npm install http-f2e-server@0.0.8
实行安装以前版本,本篇在此基础上应用中间件的情势扩充效益,对诸如LESS、jade、coffeeScript文件文本的动态解析输出。

相关文章

网站地图xml地图