一、在Node中使用模板引擎
js代码:
// art-template不仅可以在浏览器使用,也可以在node中使用 // 1.安装 npm install art-temlate模板引擎 // 2.在需要使用的文件模块中加载art-template // 只需要使用require方法加载就可以了:require('art-template') // 参数中的art-template就是你下载的包的名字 // 也就是说你install 的名字是什么,则你require中的就是什么 // 3.查文档,使用模板引擎的API var template = require('art-template') var fs = require('fs') fs.readFile('./tpl.html',function(err,data){ if(err){ return console.log('读取内容失败了') } // 默认读取到的data是二进制数据 //而模板引擎的render方法需要接收的是字符串 //所以这里需要把data二进制数据转换为字符串,才能供模板引擎使用 var ret = template.render(data.toString(),{ name:'Jack', age:18, province:'北京市', hobbies:[ '写代码', '唱歌', '打游戏' ], title:'个人信息' }) console.log(ret) })
html代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{{title}}</title> </head> <body> <p>大家好,我叫:{{ name }}</p> <p>我今年{{ age }}岁了</p> <h1>我来自{{ province }}<h1> <p>我喜欢:{{each hobbies}}{{ $value }}{{/each}}</p> <script> var foo = '{{title}}' </script> </body> </html>
结果:渲染成功
二、Nodejs中url模块的使用
var url = require('url') // parse方法将路径解析为一个方便操作的对象,第二个参数为 true 表示直接将查询字符串转为一个对象(通过query属性来访问) var obj = url.parse('/pinglun?name=火箭队&message=下赛季加油',true) console.log(obj) // 获取查询字符串对象 console.log(obj.query) // 单独获取不包含查询字符串的路径部分(该路径不包含 ? 之后的内容) console.log(obj.pathname)
结果:
三、通过服务器让客户端重定向
代码:
var http = require('http') http.createServer(function(req,res){ var url = req.url if(url === '/'){ res.setHeader('Content-Type','text/plain; charset=utf-8') res.end('起始页') }else if(url === '/next'){ res.setHeader('Content-Type','text/plain; charset=utf-8') res.end('成功跳转') console.log('成功跳转') }else if(url === '/tiaozhuan'){ //如何通过服务器让客户端重定向? // 1.状态码设置为 302 临时重定向(通过statusCode设置) // 2.在响应头中通过 Location告诉客户端往哪儿重定向(通过setHeader设置) // 如果客户端发现收到服务器的响应的状态码是 302 就会自动去响应头中找 Location,然后对改地址发起新的请求 // 所以你就能看到客户端自动跳转了 res.statusCode = 302 res.setHeader('Location', '/next') console.log('跳转请求') res.end() //注意: 一次请求对应一次响应,响应结束,这次请求也就结束了 // 301 永久重定向 浏览器会记住 // 302 临时重定向 浏览器不记忆 } }) .listen(3000,function(){ console.log('Server is running') })
结果:浏览器输入 http://127.0.0.1:3000/tiaozhuan 后会自动跳转到 http://127.0.0.1:3000/next
四、一些补充
1.
1.2服务端渲染:
1.3服务端渲染和客户端渲染的区别:
-
客户端渲染不利于SEO搜索引擎优化
-
服务端渲染是可以被爬虫抓取到的,客户端异步渲染是很难被爬虫抓取到的
-
你会发现真的网站既不纯异步也不是纯客户端渲染出来的,而是两者结合来做的
-
例如京东的商品列表就采用的是服务端渲染,目的是为了SEO搜索引擎优化。而它的商品列表评论为了用户体验,而且也不需要SEO优化,所以采用的是客户端渲染