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(,'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的使用的更多相关文章
- babeljs源码
babel.min.js!function(e,t){"object"==typeof exports&&"object"==typeof mo ...
- Underscore.js
概述 Underscore.js是一个很精干的库,压缩后只有4KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程.MVC框架Backbone.js就将这个库 ...
- 新手入门Underscore.js 中文(template)
Underscore.js是一个很精干的库,压缩后只有4KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了javaScript的编程.MVC框架Backbone.js就将这个库作为自 ...
- 如何在Node.js中合并两个复杂对象
通常情况下,在Node.js中我们可以通过underscore的extend或者lodash的merge来合并两个对象,但是对于像下面这种复杂的对象,要如何来应对呢? 例如我有以下两个object: ...
- Node实践之一
大家都知道JavaScript的专长就是处理客户端也就是与浏览器打交道了,所有的与服务器端的交互必须交给后台语言处理程序去做,基于JavaScript不能与服务器进行直接交互这样一个现状,Ryan D ...
- Node.js 学习资源
这篇文章编译整理自Stack Overflow的一个如何开始学习Node.js的Wiki帖,这份资源列表在SO上面浏览接近60万次,数千个收藏和顶.特意整理发布到这里,其中添加了部分中文参考资料. 学 ...
- Node.js开发利器
开发工具 WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢. 做些小型项目用Sublime Text. Browserify:将你 ...
- underscore源码解析 (转载)
转载出自http://www.cnblogs.com/human/p/3273616.html (function() { // 创建一个全局对象, 在浏览器中表示为window对象, 在Node.j ...
- Node.JS 学习路线图
转载自:http://www.admin10000.com/document/4624.html 从零开始nodejs系列文章, 将介绍如何利Javascript做为服务端脚本,通过Nodejs框架w ...
随机推荐
- 商品的CRUD操作
(1)新增商品:新增文档,建立索引 PUT /index/type/id{ "json数据"} PUT /ecommerce/product/1{ "name" ...
- wamp的安装配置
WAMP是指在Windows服务器上使用Apache.MySQL和PHP的集成安装环境,可以快速安装配置Web服务器. 一.下载安装包 进入官网下载:http://www.wampserver.com ...
- 网上的CSS例子编写都不太严谨,如*{ margin:0;padding:0;}
margin:0;padding:0; 一般情况下不可以用 *{margin:0;padding:0;} 来适配. 保证自己的严谨代码编写风格.
- 当li设置为line-block时,元素之间出现间隙的原因和解决方法
原因 因为浏览器默认把inline元素之间的空白符(Tab.空格.换行)渲染成一个空格.而如下述代码,两个li元素之间的换行符被渲染成一个空格,则元素之间产生了间隙. 用Chrome浏览器将场景模拟出 ...
- 简单JavaScript小程序
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- 中国电信线CTF线下选拨writeup
[盟军密码|30分] 二战时盟军截获德军一段密码,密文为:0000011000000000101010110111000011000111100011110001001100111000111001( ...
- Mysql 忘记数据库密码
windows下忘记MySQL密码的修改方法 1.关闭正在运行的Mysql服务: A.命令下运行 net stop mysql B.找到mysql服务停止mysql的服务 C.在任务管理器中结束M ...
- 【hihocoder 1304】搜索一·24点
[题目链接]:http://hihocoder.com/problemset/problem/1304 [题意] [题解] 按照题目给的方法搜索就好; 那个方法很棒啊. 注意除0; 然后是浮点数的比较 ...
- 【codeforces 799B】T-shirt buying
[题目链接]:http://codeforces.com/contest/799/problem/B [题意] 告诉你每个人喜欢的衣服的颜色; 然后告诉你每件衣服的正面和背面的颜色以及它的价格; 只要 ...
- PHP学习总结(7)——PHP入门篇之PHP注释
注释 在PHP中也有注释语句:用双斜杠(//)来表示.其它语言中,Html中使用<!--注释语句-->,CSS中使用/*注释语句*/.如下面代码: <?php//输出hi,imooc ...