您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页极简Node教程-七天从小白变大神(三:你所不知道的模板表单)_html/css_WEB-ITnose

极简Node教程-七天从小白变大神(三:你所不知道的模板表单)_html/css_WEB-ITnose

来源:欧得旅游网

选择模板引擎

事实上有大概十多种模板可供选择:

嗯,我们不选择Express默认的Jade,因为它的缩进及抽象会让新手感到非常Angry的,相当于重新学了一遍html难道不是吗??值得一提的是,Jade和Express是同一个人发明的。

更为简单的Handlebars

我们来看看Handlebars引擎是怎样使用上下文结合模板渲染HTML的:

 // res.render('admin/home',{ name:'Buttercup'})/************* admin / home.hbs **************/ 

the home

Welcome , {{name}}

/*************** entry HTML ********************/

the home

Welcome , Buttercup

模板的复用与包含

如果我们有一个头部文件包含很多公共的静态资源引用,我们叫它模板A,那么我们如果每一个页面都重写一个模板A确实是太烦了,因此我们这样在任意模板引用它:

 // 引用以>开头 {{>A.hbs}}

小提示: 如果你的文件包含"-"这个符号,是这样引用的:

 // xx-header.hbs {{>xx_header.hbs}}

还有更为详尽的hbs语法详见

表单处理

一个HTTP表单请求一般包括四部分的内容:HTTP方法(method),用来标识对资源的操作,对应上述的POST。路径(path),用来标识资源的位置,对应上述的/some/thing;URL参数(query),对应上述的guest=true;请求体(body),即请求附带的数据,对应上述的title=test&subtitle=somefinetitle。

请求体(body)往往是表单的主体。可能包括几个键值对,或者json数据,甚至可能是二进制文件。对于不同的内容我们需要请求体编码,否则服务器将很难知道我们提交的到底是什么东西。HTTP协议使用MIME框架来进行请求体编码,并在请求头的Content-Type字段指定编码类型。表单中常用的又如下3种内容编码(MIME类型):urlencoded:就像GET请求中的URL那样进行编码,例如title=test&subtitle=somefinetitle;multipart:使用定界符分隔的表单,一般用来包含二进制的文件;json:顾名思义,这时可以提交一个json对象到服务器。我们已经了解到了HTTP协议可以用来传输HTML文件给客户端。那么服务器如何接受用户的操作呢?这便需要HTTP POST方法,和Web表单的帮助。在继续开发之前,先来了解一下HTTP表单的基础知识。

HTTP 协议提供了6中方法,该方法名将作为HTTP请求头部字段,用来标识操作的类型:

GET:获取URI制定的信息。HEAD:同GET,但服务器不返回消息体。POST:请求服务器接受请求中包装的实体,将其作为URI标识的资源的附属信息。PUT:让服务器将请求中包装的实体存储为URI标识位置。DELETE:让服务器将URI标识的资源删除。TRACE:调用远程的应用层环回。最终服务器应将收到的消息包装为实体并返回状态码为200的应答。还记得吗?服务器传输HTML文件给客户端使用的是HTTP GET方法。客户端提交信息给服务器,常常采用POST方法。Web表单(form)是一种特殊的HTML标签,它负责产生一个POST请求给服务器,并拿回结果给浏览器。

 /*****************************以上来自互联网********************/

用户注册

/********************register.js ********************/var router = require('express').Router();、router.route('/register') // 返回注册页面 .get(function (req, res) { res.render('account/register', {title: '注册'}) // 接受用户表单 .post(function (req, res, next) { var username = req.body.username, password = req.body.password; console.log('Register post received!'); console.log('username:', username, 'password::', password); res.end('成功收到POST请求'); });module.exports = router;
我们逐步来分析上述代码做了什么?

首先实例化一个Router对象这样我们就能快捷方便的操作路由然后如果有人或者猫向/register这个路由发起get请求我们就扔给Ta一张account/resister的模板并把title渲染为注册。 如果有人或者猫这张表单发起post请求也就是提交表单 我们得到用户的账号密码并且在命令行打印出来相关信息。

小问题:本来如果没有安装body-parser第三方模块的话,我们是不能使用xxx.body.yyy这种形式的,一切都来自xxx.query.yyy ,query是用来表示参数的。如同这个req.body.username,是指属性name为username的值我们把它给提交给服务器来处理。

表单的验证这里不会涉及因为大多数前端代码与静态代码一样,或者参加拙作javascript策略模式

小结

很惭愧粗略的讲了一下表单与模板引擎

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务