我在做新闻页面时,需要将之前存好点的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(,'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的对象 }); }

node——underscore的使用的更多相关文章

  1. babeljs源码

    babel.min.js!function(e,t){"object"==typeof exports&&"object"==typeof mo ...

  2. Underscore.js

    概述 Underscore.js是一个很精干的库,压缩后只有4KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程.MVC框架Backbone.js就将这个库 ...

  3. 新手入门Underscore.js 中文(template)

    Underscore.js是一个很精干的库,压缩后只有4KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了javaScript的编程.MVC框架Backbone.js就将这个库作为自 ...

  4. 如何在Node.js中合并两个复杂对象

    通常情况下,在Node.js中我们可以通过underscore的extend或者lodash的merge来合并两个对象,但是对于像下面这种复杂的对象,要如何来应对呢? 例如我有以下两个object: ...

  5. Node实践之一

    大家都知道JavaScript的专长就是处理客户端也就是与浏览器打交道了,所有的与服务器端的交互必须交给后台语言处理程序去做,基于JavaScript不能与服务器进行直接交互这样一个现状,Ryan D ...

  6. Node.js 学习资源

    这篇文章编译整理自Stack Overflow的一个如何开始学习Node.js的Wiki帖,这份资源列表在SO上面浏览接近60万次,数千个收藏和顶.特意整理发布到这里,其中添加了部分中文参考资料. 学 ...

  7. Node.js开发利器

    开发工具 WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢. 做些小型项目用Sublime Text. Browserify:将你 ...

  8. underscore源码解析 (转载)

    转载出自http://www.cnblogs.com/human/p/3273616.html (function() { // 创建一个全局对象, 在浏览器中表示为window对象, 在Node.j ...

  9. Node.JS 学习路线图

    转载自:http://www.admin10000.com/document/4624.html 从零开始nodejs系列文章, 将介绍如何利Javascript做为服务端脚本,通过Nodejs框架w ...

随机推荐

  1. uva 11992 Fast Matrix Operations 线段树模板

    注意 setsetset 和 addvaddvaddv 标记的下传. 我们可以控制懒惰标记的优先级. 由于 setsetset 操作的优先级高于 addaddadd 操作,当下传 setsetset ...

  2. 「BZOJ3339」Rmq Problem(5366)

    题目描述 输入 输出 样例输入 7 5 0 2 1 0 1 3 2 1 3 2 3 1 4 3 6 2 7 提示 这个题说来也挺有意思的 当时集训的时候遇到了一道类似的题,但是题意与此不同,我太菜了, ...

  3. Performance Co-Pilot

    Install Performance Co-Pilot 提前安装依赖 [root@iZrj97j6t7ih9hgz1me35hZ ~]# cat install.sh yum install -y ...

  4. webpack学习笔记(4)--webpack.config.js

    devtool参数 这个参数控制是否生成,以及如何生成source map,已经在官网的doc说明总结了. 下表总结了各个参数和使用的情况 devtool 构建速度 重新构建速度 生产环境 品质(qu ...

  5. Problem 14

    Problem 14 # Problem_14.py """ The following iterative sequence is defined for the se ...

  6. Vue接口日常学习

    最近使用uni.app 进行app的开发  页面搭完之后,发现不会调接口,今天学习了下 各个程序运行时,都会发起网络请求,网络相关的API在使用之前都会在使用前配置域名白名单 首先   现在中间件上一 ...

  7. springMVC入门截图

    mvc在bs系统下的应用 ---------------------------------------------------- 在web.xml中配置前端控制器(系统提供的一个servlet类   ...

  8. BA-siemens-BA模块特性

    PXC24(包含UEC24的模块特性) DO点可以接220vac的电压,渠道人员告知电流不要超过2A AO点只能输出0-10V的电压,不能输出4-20ma的电流,说明书上是错误的 AO点输出10v失败 ...

  9. 数据库-mongodb有哪些命令工具

    MongoDB                  系统文件说明 1.mongo.exe              命令行客户端工具 2.mongod.exe            数据库服务程序 3. ...

  10. Mybatis分页插件2.0版本号公布

    项目地址:http://git.oschina.net/free/Mybatis_PageHelper 软件介绍:http://www.oschina.net/p/mybatis_pagehelper ...