这里不再用ejs模版,只用Node去发送json数据,用Express静态化public文件,content.html引用underscore模版,引用jQuery,用jQuery向服务器发送AJAX请求,把json的数据读取到underscore的template模版内容里。
这种写法,网页是看不到main模块里的代码,这样是前后端更加分离,比直接用Node+ejs更分离一些。这里新闻的news路由和json数据是后台提供,静态页面向远程服务器拉了一个json,由于内部有模版引擎,方便了组装。最终是用户运行了这段程序,是你的机器在运行,运行的时候发现了几个AJAX请求,发起了get请求,在本地进行了DOM操作。
而用Node和ejs的话,Node充当了大管家,后端做的事更多,分离性不好。
app.js:
var express = require("express");var app = express();app.use(express.static("./public"));var shujuku = [ { "biaoti":"我是1号新闻啊!我很开心啊", "shijian":"2017年11月14日09:21:03", "zuozhe":"考拉", "neirong":"内容啊内容啊内容啊内容啊
" }, { "biaoti":"我是2号新闻啊!我很开心啊", "shijian":"2017年11月14日09:21:03", "zuozhe":"Bob", "neirong":"内容啊内容啊内容啊内容啊" }, { "biaoti":"我是3号新闻啊!我很开心啊", "shijian":"2017年11月14日09:21:03", "zuozhe":"Jack", "neirong":"内容啊内容啊内容啊内容啊" }, { "biaoti":"我是4号新闻啊!我很开心啊", "shijian":"2017年11月14日09:21:03", "zuozhe":"hehe", "neirong":"内容啊内容啊内容啊内容啊" } ]; app.get("/news",function (req,res) { //相当于send的时候发的是json数据 res.json(shujuku); }); app.listen(3000);
content.html:
Document
template用法:http://www.bootcss.com/p/underscore/#template
结构:
结果:
在线预览: