zoukankan      html  css  js  c++  java
  • node——underscore的使用

    我在做新闻页面时,需要将之前存好点的data.json里的数据显示在首页上,而首页的每条新闻数据不能直接写定在上面,所以我们要将data里面的数据传递进去。我们需要使用underscore的template函数。

    之前在underscore的简单了解中已经讲过template了,接下来就直接用

    1.首先我们要在首页的响应代码里面找到data.json,将它存进list_news数组里面

    fs.readFile(path.join(__dirname,'data','data.json'),'utf8',function(err,data){
            //因为第一次访问网站,data.json文件本身就不存在,所以会有异常
            //这种错误,我们不认为是网站出错了,所以不需要抛出异常
            if(err&&err.code!=='ENOENT'){
                throw err;
            }
            //如果data没有读取到,则data为空,转换为数组
            var list_news=JSON.parse(data||'[]');
            
        });

    这段代码之前写过了

    2.然后我们需要渲染html文件,在以前写过一个res.render函数,渲染时传入html文件路径

    fs.readFile(path.join(__dirname,'data','data.json'),'utf8',function(err,data){
    
            if(err&&err.code!=='ENOENT'){
                throw err;
            }
            var list_news=JSON.parse(data||'[]');
    
            res.render(path.join(__dirname,'views','home.html'));
            
        });

    但是现在还需要传入list_news,就需要在修改res,render函数

    res.render=function(filename,tqData){
        fs.readFile(filename,function(err,data){
            if(err)
            {
                res.writeHead(404,'Not Found',{'Content-Type':'text/html;charset=utf-8'});
                res.end('44,not found');
                return;
            }
            if(tqData){
                //如果用户传递了模板数据,表示模板要替换,否则不替换
                //因为data是二进制,模板是字符串,所以要将data转换为字符串
                // data=_.template(data.toString('utf8'))(tqData);
                //上面的代码和下面的代码等价
                var fn=_.template(data.toString('utf8'));
                data=fn(tqData);
    
            }
            res.end(data);
        })
    
    }

    在使用时:

    if(req.url==='/'||req.url==='/index'&&req.method==='get')
    {
        //1.读取data.json文件中的数据,并将读取到的数据转化为list_news数组
        fs.readFile(path.join(__dirname,'data','data.json'),'utf8',function(err,data){
           
            if(err&&err.code!=='ENOENT'){
                throw err;
            }
            
            var list_news=JSON.parse(data||'[]');
    
            //2.在服务器端使用模板引擎,将list中的数据和index.html文件中的内容结合,渲染给客户端
            res.render(path.join(__dirname,'views','home.html'),{list:list_news});//这里要传一个叫list的对象
            
        });
    
    
    }
  • 相关阅读:
    进度条2
    VW
    SET和MAP
    解构赋值、
    Symbol
    箭头函数
    正则的补充
    java 面向对象(三十五):泛型在继承上的体现
    java 面向对象(三十六):泛型五 通配符
    java IO流 (一) File类的使用
  • 原文地址:https://www.cnblogs.com/ellen-mylife/p/10932972.html
Copyright © 2011-2022 走看看