nodejs(三)上之express
- express
- 简介
- Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
- 使用 Express 可以快速地搭建一个完整功能的网站
- 安装并运行
- sudo npm install express
- var express = require(“express”);
var app = express();//初始化 - 核心功能
- 路由
- get方法 — 根据请求路径来处理客户端发出的GET请求
- app.get(path,cb);
* path:为请求的路径
* cb :第二个参数为处理函数的回调,有两个参数request和response,代表请求信息和响应信息 - 前端页面代码
- <!DOCTYPE html>
<html lang=“en”>
<head>
<meta charset=“UTF-8”>
<title>Title</title>
</head>
<body>
<form action=“/list” method=“post”>
用户名:<input type=“text” name=“user”><br>
密码: <input type=“password”><br>
<input type=“submit” value=“发送”>
</form>
</body>
</html> - 服务端
- //处理get方式发送的请求
app.get(“/“, function (req,res) {
//返回一个静态文件
res.sendFile(__dirname+”/post.html”);
});
app.get(“/list”, function (req,res) {
//返回一个字符串
res.send(“get”+req.url);
});
app.post(“/list”, function (req,res) {res.send(“post”+req.url);
});
//all就是处理不管是任何方式发送的请求,*为任意路径
app.all(“*”, function (req,res) {
res.send(“Welcome to Express”);
});
//设置端口号
app.listen(8080); - 获取请求的参数
- 获取请求参数
* req.host:返回请求头里取的主机名(不含端口号)
* req.path:返回请求的url的路径名
* req.query:是一个可获取客户端get请求路径参数的对象属性,包含着被解析过的请求参数对象,默认为{}
* req.params:获取路由的parameters - 获取返回的参数
- 4.返回参数
* res.send();返回数据,默认会转为字符串,编码为utf8
* res.sendFile();返回文件
* res.sendStatus();返回状态码 - 例子
- //http://localhost:8080/query?user=tangcaiye
app.get(“/query”, function (req,res) {res.send(req.query);
});
//http://localhost:8080/article/2/tangcaiye
app.get(“/article/:id/:name”, function (req,res) {
res.send(req.params);
});app.all(‘/*’, function(req,res){
console.log(req.path);
console.log(req.host);
res.send(“没找到页面”);
});app.listen(8080);
- 中间件
- 概念
- 中间件就是处理HTTP请求的函数,用来完成各种特定的任务,比如检测用户是否登录,分析数据,以及其他在需要最终将数据发送给用户之前完成的任务
* 特点:
* 1.每个中间件都可以控制流程是否继续执行
* 2.每个中间件的req res都是用的同一个对象
* 3.如果出错了,转交错误处理中间件进行处理
* 4.最大的特点是,一个中间件处理完,可以把相应数据再传递给下一个中间件
* 5.如果调用回调函数的next参数表示将请求数据传递给下一个中间件 - 例子:
- //中央发了100快钱
app.use(function (req,res,next) {
req.money = 100;
next();
});
//市政府
app.use(function (req,res,next) {
req.money -= 20;
//如果next传了一个不为null的参数,说明有错,会中止其他中间件并执行错误处理中间件
next(“钱丢了”);
});
//村
app.use(function (req,res,next) {
req.money -= 50;
next();
});
//错误处理中间件
app.use(function (err,req,res,next) {
console.error(err);
res.end(err);
});app.all(‘/*’, function(req,res){
res.send(“”+req.money);
});app.listen(8080);
- 模板引擎
- 模板引擎-首先需要先安装才能用
* nam install ejs
* 1.指定渲染模板引擎
* app.set(“view engine”,”ejs”);
* 2.设置放模板文件的目录
* add.set(“views”,path.join(__dirname,”/“));
* 3.rander函数,对网页模板进行渲染,在渲染模板时locals可谓其模板传入变量值,在模板中就可以条用所传变量了
* res.rander(view,[local],callback); - 前端代码
- <!DOCTYPE html>
<html lang=“en”>
<head>
<meta charset=“UTF-8”>
<title>Title</title>
</head>
<body>
姓名:<%=name%><br>
年龄:<%=age%>
哪谁的年龄也是:<%=age%>岁
</body>
</html> - 服务器端代码
- app.set(“view engine”,”ejs”);
app.set(“views”,__dirname);//放在当前目录下
app.get(“/“, function (req,res) {
//默认模板文件后缀格式是pjs
res.render(“muban”,{
name:”tangcaiye”,
age:18
});
}); - cookie
- 安装cookie-parser模块
- npm install cookie-parser
- 代码
- var express = require(“express”);
var cookieParser = require(“cookie-parser”);var app = express();
app.use(cookieParser());app.get(“/“, function (req,res) {
//如果请求中cookie存在visited,则输出cookie
//否则,设置cookie字段visited,并设置过期时间
if (req.cookies.visited){
res.send(“已访问过”);
}else {
res.cookie(“visited”,”1”,{maxAge: 10*60*1000});
res.send(“第一次访问”);
}
});app.listen(8080);
- 参数说明
- expires:cookie的过期时间,GMT格式。如果没有指定或者设置为0,则产生新的cookie。
- maxAge:是设置过去时间的方便选项,其为过期时间到当前时间的毫秒值。
- api网址:
- https://www.zybuluo.com/XiangZhou/note/208532
nodejs(三)上之express的更多相关文章
- 【转载】nodejs,npm,express分别什么?
很多刚刚接触nodejs的初学者,都会经历一个很繁冗的环境安装过程. 一般主要要安装nodejs,npm和express三样东西.那么这三样东西分别是干什么的呢? 本篇文章就大致介绍一下这三样东西分别 ...
- # nodejs模块学习: express 解析
# nodejs模块学习: express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子 ...
- nodejs-使用multer实现多张图片上传,express搭建脚手架
nodejs-使用multer实现多张图片上传,express搭建脚手架 在工作中,我们经常会看到用户有多张图片上传,并且预览展示的需求.那么在具体实现中又该怎么做呢? 本实例需要nodejs基础,本 ...
- Node.js 笔记(一) nodejs、npm、express安装
Windows平台下的node.js安装 直接去nodejs的官网http://nodejs.org/上下载nodejs安装程序,双击安装就可以了 测试安装是否成功: 在命令行输入 node –v 应 ...
- nodejs 接收上传的图片
1.nodejs接收上传的图片主要是使用formidable模块,服务器是使用的express搭建. 引入formidable var formidable = require('./node_mod ...
- Node.js 笔记(一) nodejs、npm、express安装(转)
转载地址:http://blog.csdn.net/haidaochen/article/details/7257655 Windows平台下的node.js安装 直接去nodejs的官网http:/ ...
- Windows 7 搭建 nodejs、npm、express 环境
准备工作: 下载nodejs (exe format)(http://nodejs.org/) 下载npm(zip format)(http://nodejs.org/dist/npm/) 开始安装 ...
- 此文记录了我从研二下学期到研三上学期的找工历程,包括百度、腾讯、网易、移动、电信、华为、中兴、IBM八家企业的面试总结和心得--转
感谢电子通讯工程的研究生学长为大家整理了这么全面的求职总结,希望进入通信公司和互联网公司做非技术类岗位的学弟学妹们千万不要错过哦~ ---------------------------原文分割线-- ...
- Nodejs进阶:基于express+multer的文件上传
关于作者 程序猿小卡,前腾讯IMWEB团队成员,阿里云栖社区专家博主.欢迎加入 Express前端交流群(197339705). 正在填坑:<Nodejs学习笔记> / <Expre ...
随机推荐
- 图解Sysprep封装系统
图解Sysprep封装系统 一.使用安装管理器工具创建 Sysprep.inf 应答文件 要安装“安装管理器”工具并创建应答文件,请按照下列步骤操作: 1)打开“我的电脑”,然后打开 Wind ...
- Eclipse 最有用的快捷键
Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升. ...
- [Spring Framework]学习笔记--@Component等stereotype的基础
在继续讲解Spring MVC之前,需要说一下常用的几个用来标记stereotype的annotation. @Component,@Controller,@Repository,@Service. ...
- FMC—扩展外部 SDRAM
本章参考资料:< STM32F4xx 参考手册 2>.< STM32F4xx 规格书>.库帮助文档< stm32f4xx_dsp_stdperiph_lib_um.chm ...
- pycharm设置安装python第三方插件
pycharm设置安装python第三方插件 转载于:https://www.mindg.cn/?p=80 今天下了一个pycharm,设置用它来安装python插件,以下是安装步骤,与大家分享,我的 ...
- CentOS下安装网卡驱动
前言最近,一台机器从FreeBSD换为CentOS,一路安装顺利.完事之后发现,网卡没有启用,dmesg | grep eth 命令确定网卡没有驱动导致的.于是开始了一路艰辛的安装过程. 安装过程1. ...
- 纯CSS炫酷3D旋转立方体进度条特效
在网站制作中,提高用户体验度是一项非常重要的任务.一个创意设计不但能吸引用户的眼球,还能大大的提高用户的体验.在这篇文章中,我们将大胆的将前面所学的3D立方体和进度条结合起来,制作一款纯CSS3的3D ...
- Linux 新增一个用户命令 adduser
这几天新增用户老是会用 useradd , 这条命令比较复杂,记录 adduser 这条超级简单的命令. Full name 最后和用户差不多,不然登录的时候不好辨别 附: 新增用户无法 sudo 请 ...
- oozie调度hive脚本demo
1. 环境配置 2. 脚本配置 3. 执行job 4. 查看结果 待发布 ..
- div允许用户输入
主要是用到contenteditable属性,就可以用div让用户输入了 <div id="guo" style="width:500px; height:200p ...