渲染 index 页面新闻列表数据02|学习笔记

简介: 快速学习渲染 index 页面新闻列表数据02

开发者课程【Node.js 入门与实战:渲染 index 页面新闻列表数据01】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/588/detail/8287


渲染index页面新闻列表数据02

 

目录:

一、index简介

二、应用

一、index简介

render函数与 template 函数源码 。render 声明函数内部变量,Function为方法,source为源代码,声明变量对字符串进行截取操作,复制给source全部进行动态生成,用生成的代码构建一个函数,调动其动态生成的函数

 

二、应用

1.代码示例

//Demo:

Var_ =require(underscore);

//声明了一段代码模板代码的HTML文档

Var heml =<h2><%=·name·%><h2>

//template()函数的返回依然是一个函数

Var fn=_·template(html);

//调用template()返回的这个函数fn

//fn接收一个数据对象,并用该数据对象,将html中的模板内容替换,生成最终的HTML 代码

Html=fn({name:达达})

console.log(html);

Console.log(fn.toString());

//fn函数的源代码

Function(data)

{

return render.call(this,data,_);

}

render是一个变量,template内部的一个变量,最终指向一个方法,new·Function是一个声明函数,这个函数的源代码即为source变量里面的源代码,这个源代码是动态生成的。

2.安装underscore

//将用户请求的url和method转换为小写字母

Req.url=req.url.toLowerCase();

Req.method=req.method.toLowerCase();

//通过url模块,调用url.parse()方法解析用户请求的url(req.url)

Var urlobj =url.parse(req.url,true);

//先根据用户请求的路径(路由),将对应的HTML页面显示出来

If (req.url===/||/index&& req.method===get)

{

//读取data.json文件中的数据,并将读取到的数据转换为list数组

fs.resdFile(path.join(_ _ dirname,data ,data.json),utf8,functtion(err,data){

Throw err;

}

Var list= JSON.parse(data||[]);

//2.在服务器端使用模块引擎,将list中的数据和index.html 文件中的内容结合 渲染给客户端

//读取index.html

res,render(path.join(_ _dirname,·viewsindex.html))

)};

3.创建服务

先安装,在index6里面直接加载这个模块。现在渲染同样的内容,先传数据过来,传数据之前找到index.html。用for循环开始小于传过来数据所有的长度,中间的内容循环显示第一条新闻显示1.第二条新闻显示2,输出一个表达式时 ><%= 。先找到新闻的标题,点击到新闻的时候用到List数组,循环时用list数组即可和模板数组区分开来。现在的render函数没有第二个参数,希望render函数渲染,加上第二个参数,调动的时候就可以传一个数据进来,index需要List,传一个对象,对象内有List后续为List赋值。在reder函数里面用这个数据,如果是图片文件或者CSS文件不需要进行替换。读取静态资源文件不会传模板数据,所以在里面进行判断。

http.createServer(function(req.res){

//要在这里写大量的代

//为 res 对象添加一个render函数,方便后续使用

//因为现在要渲染的index.html中要用到模板数据,所以给render函数增加了第二个参数

//第二个参数的作用就是用来传递 html 页面中要使用的模板数据

 res.render = function(filename,tplData)({

fs.readFile(filename,function(err,data){

if(err){

 res.writeHead(404,Not Found,{Content-Type:         text/html ;charsetutf=8});

res.end('404,not found.);

}

//如果用户传递了模板数据,那么就使用underscore的template方法进行替换

//如果用户没有传递模板敷据,那么就不进行替换

if (tplData){

//如果用户传递了模板数据,表示要进行板替换

 var fn=_.template(data.toString('utf8));

data = fn(tplDate);

}

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

res.end(data);

//将用户请求url和method转换为小写字母

req.url = req.url.toLowerCase();

Req.method = req.method.toLowerCase();

//通过ur1模块,调用url.parse()方法解析用户请求的  ur1(req.url)

var urlobj = url.parse(req.url,true);

//先根据用户请求的路径(路由),将对应的HTML页面显示出来

if(req.url === /|| req.url/index&& req.method ===‘get){

//读取data.json文件中的数据,并将读取到的据转换为list数组

fs.readFile(path.join(_dirnamedata,data.json'),'utf8,function(err,data){

1f(err&&err.code !==ENOENT){

throw err;

}

//读取到的新闻数据

var list_news = JSON.parse(deta ||[]');\

//2.在服务器端使用模板引擎,将list中的数据和index.html文件中的内容结合渲染给客户端

res.render(path.join(_dirnameviews,‘index.html'),{lis: list _news});

});

相关文章
|
9月前
|
索引
antd a-table表格添加序号和分页总数——基础积累
antd a-table表格添加序号和分页总数——基础积累
243 0
|
2月前
|
JSON 开发框架 前端开发
利用bootstraptable展示数据,对数据进行排序分页等操作
利用bootstraptable展示数据,对数据进行排序分页等操作
11 0
|
6月前
在阿里云RPA中,你可以使用"表格控件"来处理网页上的table数据
在阿里云RPA中,你可以使用"表格控件"来处理网页上的table数据
69 1
|
6月前
|
JavaScript BI
el-table 多表格弹窗嵌套数据显示异常错乱问题
## 1、业务背景 使用vue+element开发报表功能时,需要列表上某列的超链接按钮弹窗展示,在弹窗的el-table列表某列中再次使用超链接按钮点开弹窗,以此类推多表格弹窗嵌套,本文以弹窗两次为例 最终效果如下示例页面 ![微信截图_20231110143638.png](https://ucc.alicdn.com/pic/developer-ecology/j2ygdazy447va_6eb0201441bc40a4b5bda9a7e573f0d2.png)
100 0
|
10月前
|
JavaScript 前端开发 测试技术
Datatables展示数据(表格合并、日期计算、异步加载数据、分页显示、筛选过滤)
Datatables展示数据(表格合并、日期计算、异步加载数据、分页显示、筛选过滤)
107 0
Datatables展示数据(表格合并、日期计算、异步加载数据、分页显示、筛选过滤)
|
11月前
|
存储 API
【ElementUI】Table表格动态合并
【ElementUI】Table表格动态合并
147 0
|
JSON JavaScript 前端开发
VUE element-ui之table表格前端自动过滤(筛选),不调用数据接口筛选表格,方法
VUE element-ui之table表格前端自动过滤(筛选),不调用数据接口筛选表格,方法
579 0
VUE element-ui之table表格前端自动过滤(筛选),不调用数据接口筛选表格,方法
|
11月前
|
前端开发
前端列表页+element-puls实现列表数据弹窗功能
前端列表页+element-puls实现列表数据弹窗功能
290 0
|
JavaScript 测试技术
Easyui 实现点击不同树节点打开不同tab页展示不同datagrid表数据设计
Easyui 实现点击不同树节点打开不同tab页展示不同datagrid表数据设计
82 0
|
JavaScript API
快速搞定,查询 + 表格,这种页面
快速搞定,查询 + 表格,这种页面
179 0