node.js之用ajax获取数据和ejs获取数据
摘要:学了node之后有时候分不清前台和后台,今天用ajax和ejs来从后台获取数据,没有数据库,用json数据来进行模拟数据库;来区分前台和后台需要干什么?
一、用ejs获取数据
1、文件目录

2、app.js
var experss=require("express");
var app=experss();
var shujuku=[
{ "biaoti":"我是0号新闻啊!我很开心",
"shijian":"2015年9月23号",
"zuozhe":"考拉0",
"neirong":"<p>内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</p>"
},
{ "biaoti":"我是1号新闻啊!我很开心",
"shijian":"2015年9月23号",
"zuozhe":"考拉1",
"neirong":"<p>内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</p>"
},
{ "biaoti":"我是2号新闻啊!我很开心",
"shijian":"2015年9月23号",
"zuozhe":"考拉2",
"neirong":"<p>内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</p>"
},
{ "biaoti":"我是3号新闻啊!我很开心",
"shijian":"2015年9月23号",
"zuozhe":"考拉3",
"neirong":"<p>内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</p>"
}
];
app.set("view engine","ejs");
app.get("/news/:id",function (req,res) {
//新闻id
var id=parseInt(req.params.id);
res.render("content",shujuku[id]);
});
app.listen(3000);
3、content.ejs
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.header{
width:980px;
height: 100px;
margin: 0 auto;
background-color: #ccc;
margin-bottom: 20px;
}
.content{
width: 980px;
margin: 0 auto; }
h1{
text-align: center;
}
.main{
float:left;
width:599px;
margin-right:20px; }
.aside{
float:left;
width:360px;
height:400px;
background-color: #ccc;
} </style>
</head>
<body>
<div class="header"></div>
<div class="content">
<div class="main">
<h1><%=biaoti%></h1>
<p>时间:<%=shijian%> 作者:<%=zuozhe%></p>
<p><%=neirong%></p>
</div>
<div class="aside"></div>
</div> </body>
</html>
4、运行结果:通过输入http://127.0.0.1:3000/news/新闻id

二、通过ajax获取数据:要用到一个叫做underscore.js的模版,需要先下载下来
1、目录结构

2、app.js
var express=require("express");
var app=express();
var shujuku=[
{ "biaoti":"我是0号新闻啊!我很开心",
"shijian":"2015年9月23号",
"zuozhe":"考拉0",
"neirong":"<p>内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</p>"
},
{ "biaoti":"我是1号新闻啊!我很开心",
"shijian":"2015年9月23号",
"zuozhe":"考拉1",
"neirong":"<p>内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</p>"
},
{ "biaoti":"我是2号新闻啊!我很开心",
"shijian":"2015年9月23号",
"zuozhe":"考拉2",
"neirong":"<p>内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</p>"
},
{ "biaoti":"我是3号新闻啊!我很开心",
"shijian":"2015年9月23号",
"zuozhe":"考拉3",
"neirong":"<p>内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</p>"
}
];
app.use(express.static("./public"));
app.get("/news",function (req,res) {
res.json(shujuku); //将数据返回给前端页面
})
app.listen(3000);
3、content.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.header{
width:980px;
height: 100px;
margin: 0 auto;
background-color: #ccc;
margin-bottom: 20px;
}
.content{
width: 980px;
margin: 0 auto; }
h1{
text-align: center;
}
.main{
float:left;
width:599px;
margin-right:20px; }
.aside{
float:left;
width:360px;
height:400px;
background-color: #ccc;
}
.grid{
box-shadow: 1px 1px 1px #333;
border-bottom: 1px solid #333;
margin-bottom: 10px;
padding:10px;
box-sizing: border-box;
}
</style> </head>
<body>
<div class="header"></div>
<div class="content">
<div class="main"> </div>
<div class="aside"></div>
</div>
<script type="text/template" id="moban">
<div class="grid">
<h3><%=biaoti%></h3>
<p>发布时间:<%=shijian%> 作者:<%=zuozhe%></p>
<p><%=neirong%></p>
<p><a href="">详细信息</a></p>
</div>
</script>
<script type="text/javascript" src='jquery-1.11.3.min.js'></script>
<script type="text/javascript" src="underscore.js"></script>
<script type="text/javascript">
//得到模版内容
var mobanstring=$("#moban").html();
//模版函数
var compiled=_.template (mobanstring); $.get("/news",function (data,status) {
for (var i=0;i<data.length;i++){
var compiledString=compiled(data[i]);
$(".main").append($(compiledString));
}
}); </script>
</body>
</html>
4、运行结果:通过输入http://127.0.0.1:3000/content.html

node.js之用ajax获取数据和ejs获取数据的更多相关文章
- Node.js 从零开发 web server博客项目[数据存储]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- node.js爬取ajax接口数据
爬取页面数据与爬取接口数据,我还是觉得爬取接口数据更加简单一点,主要爬取一些分页的数据. 爬取步骤: 1.明确目标接口地址,举个例子 : https://www.vcg.com/api/common/ ...
- node.js使用免费的阿里云ip查询获取ip所在地
在项目过程中,我们常常需要获取IP的所在地.而这一功能一般都是通过一些数据网站的对外接口来实现,这些接口一般情况下都是付费使用的.在这篇文章中我将记录,基于node.js的阿里云免费IP地址查询接口的 ...
- node.js 微信开发2-消息回复、token获取、自定义菜单
项目结构 >config/wechat.json 微信公众号的配置文件 >controllers/oauth.js 微信网页授权接口(下一篇再细讲讲) >controllers/we ...
- node.js 使用 net 模块模拟 websocket 握手,进行数据传递。
websocket 是一种让浏览器与服务器之间建立持久的连接,并能进行双向数据传输的一种协议. websocket 属性应用层协议,基于tcp传输协议,并复用http的握手通道. 一.如何进行webs ...
- Node.js权威指南 (5) - 使用Buffer类处理二进制数据
5.1 创建Buffer对象 / 705.2 字符串的长度与缓存区的长度 / 725.3 Buffer对象与字符串对象之间的相互转换 / 74 5.3.1 Buffer对象的toString方法 / ...
- 《超实用的Node.js代码段》连载一:获取Buffer对象字节长度
我们知道Node.js框架下的Buffer对象能够对二进制数据提供很好的支持,那么获取一个Buffer对象真实的字节长度则是必须要用到的功能了.Node.js框架为开发人员提供了一个Buffer.by ...
- node.js 需要注意知识点
复习node.js 需要注意知识点--(重点) 2.1:参数传递获取造型 客户端脚手架(发) (参数传递) node.js(收) -发ajax this.axios.get(" ...
- Node.js核心模块API之文件操作
参考:https://www.runoob.com/nodejs/nodejs-fs.html 异步I/O 1,文件操作 2,网络操作 在浏览器中也存在异步操作 1,定时任务 2,事件处理 3,Aja ...
随机推荐
- Windows server2012如何运行Javaweb项目?
最近用java写了个小项目,想要部署到服务器,于是买了个Windows server2012,但是不知道怎么部署,后来才知道需要配置java运行环境.经过一番研究最终搞定了.下边是我的个人总结,由于是 ...
- AndroidStudio中各种常见快捷键记录
AndroidStudio中各种常用操作快捷键记录 简单方法 直接设置AS的快捷键与eclipse相同,方便直接从eclipse切到AS的人. 常用的AS的默认快捷键 ctrl + N 根据类名查找J ...
- Foundation基础框架
自己总结的 // // main.m // 01-结构体 // // Created by Mac-ZhangXiaoMeng on 14/12/29. // Copyright (c) 2014年 ...
- Less的模式匹配
Less的模式匹配 Less提供了一种机制,允许根据参数的值来改变 mixin的行为.比如,以下代码就可以让 .mixin 根据不同的 @switch 值而表现各异: .mixin (dark, @c ...
- 数据结构与算法(C/C++版)【绪论/线性表】
声明:数据结构与算法系列博文参考了<天勤高分笔记>.<王道复习指导>.C语言中文网.非商业用途,仅为学习笔记总结! 第一章<绪论> 一.基本概念及入门常识 /// ...
- sklearn 中 make_blobs模块使用
sklearn.datasets.make_blobs(n_samples=100, n_features=2, centers=3, cluster_std=1.0, center_box=(-10 ...
- node实现一个WEBSOCKET服务器
早点时候翻译了篇实现一个websocket服务器-理论篇,简单介绍了下理论基础,本来打算放在一起,但是感觉太长了大家可能都看不下去.不过发现如果拆开的话,还是不可避免的要提及理论部分.用到的地方就简要 ...
- codeforces 895B XK Segments 二分 思维
codeforces 895B XK Segments 题目大意: 寻找符合要求的\((i,j)\)对,有:\[a_i \le a_j \] 同时存在\(k\),且\(k\)能够被\(x\)整除,\( ...
- Linux Redis集群搭建与集群客户端实现
硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...
- macbookPro 搭建maven环境下载jar包
今天要用itext的jar包,去官网看发现好像只能用maven下载,而我之前又换了电话,没办法咯,重新搭一次maven环境吧,在此记录,已便分享或自己将来查找 首选确定自己环境上jdk装好了,如果没有 ...