node.js 模板渲染 和请求静态对象,不使用 express

   var _ = require('underscore');  //npm install underscore

   var mime = require('mime');    //npm install mime;

   var path = require('path');

//创建服务器连接步骤省略



 //为res对象添加一个render()函数,方便使用,需要渲染,所以有第二个参数,传的参数是index.html中需要用到的数据
    response.render = function(filename,templateData){
        fs.readFile(filename,(err,data)=>{
            if(err){
                response.writeHead(404,'Not Found',{
                    'Content-Type':'text/html'
                });
                response.end('404 not Found');
                //console.log(request.url);
                return;
            }
            if(templateData){//用户传递了模板数据表示需要替换

              var fn =  _.template(data.toString('utf-8')); //将读到的数据转为字符串
                data =fn(templateData);       //进行数据渲染
            }

            response.setHeader('Content-Type',mime.getType(filename));

            response.end(data);
        });
    };



if(Obj.pathname === '/' || Obj.pathname ==='/index.html' ){

    //模板渲染调用实例

    response.render(path.join(__dirname,'index.html'),{list:list_news});    //第一个参数是要渲染的html页面,第二个参数是数据值,表示成了js对象。        list 是HTML页面所使用的js对象,名称必须一致。list_news是从其他数据文件取到的json对象,转为了js对象



}else{         //静态文件调用实例    .css  .jpeg

    response.render(path.join(__dirname,request.url));            //静态文件请求是get方式,所以  request.url == /css/index.css //拼接起来就可以找到      //服务器端请求的静态文件路径是相对当前js文件来说的。所以,例如:当前js文件为index.js  那么同目录下必然有 css文件夹 ,文件夹下必有index.css文件,或者将静态文件放到public下,那么就是 response.render(path.join(__dirname,'public',request.url)); 
}



猜你喜欢

转载自blog.csdn.net/qq_38340601/article/details/81381576