模板引擎:art-template
安装:
使用npm安装,切换到要安装的目录下,语法:npm install art-tempalte 就可以安装了
使用:
1.先安装art-template
2.引用lib\template-web文件
3.插入一个type类型非js的要输出在html界面上的文件,同时给上id
4.根据所给的id,引用模板方法给变量赋值,并且返回对象
语法:
输出:
{{value}}
{{data.key}}
{{data[‘key’]}}
{{a?b:c}}
{{a+b}}
模板一级特殊变量可以使用$data加下标的方式访问:
{{$data[‘user list’]}}
原文输出:不会对html内容进行转义处理
{{@value}}
条件
{{if value}}{{/if}}
{{if v1}}….{{else if v2}}…..{{/if}}
循环
{{each target}}
{{$index}}{{$value}}
{{/each}}
变量
{{set temp = data.sub.content}}
模板继承
{{extend ‘./layout.atr’}}
{{block}}
其他:https://aui.github.io/art-template/zh-cn/docs/syntax.html
客户端渲染和服务端渲染
次数
服务端:只请求了一次
客户端:请求了两次
爬虫
客户端渲染,不利于搜索引擎优化(seo),很难被爬虫抓取到
服务端渲染,是可以被爬虫抓取到的
真正的网站,既不是纯异步,也不是纯服务端渲染出来的
留言本案例
把当前文件所有的 依赖项 都声明在 文件模块 的最前面
当浏览器收到html响应的时候,会从上到下的进行执行
在解析过程中,如果发现:
img
audio
vidio
link
script
frame
等带有src和link的属性的时候,浏览器会自动对这些资源发送请求
我们为了统一处理这些静态资源,我们约定把所有的静态资源都存放在public目录中
哪些资源能被用户访问,哪些资源不能被用户访问,我们可以非常灵活的通过代码控制,但是apache很难做到
服务端处理表单提交
var url = require('url')
var parseObj = url.parse(url,true)// parse方法将url解析成为一个方便操作的对象,第二个参数为true时,直接将查询字符串转化为可以查询的对象
var pathname = parseObj.pathname //单独获取,url中不包括查询字符串的路径部分(?后面的内容)
JSON.stringIfy(parseObj.query) //把查询字符串拆分成一个对象
重定向
1.状态码 302 临时重定向 ,浏览器不记住
2.响应头中 通过 location 告诉客户端 往哪儿重定向
客户端只要收到的服务端响应的状态码是302,就会自动去响应头中去找location,然后对该地址发起新的请求
res.statusCode = 302;
res.setHeader('location','/')
res.end()
301 : 永久重定向 , 浏览器会记住