Express 快速使用

Express 中文网:expressjs.com.cn   
 在这里插入图片描述

一、什么是 Express?

维基百科摘要: 
  Express.js或简称Express,是针对Node.js的web应用框架,在MIT许可证下作为自由及开放源代码软件发行。它设计用来建造web应用和API。它已经被称为针对Node.js的服务器框架的事实标准。
  最初作者TJ Holowaychuk,将它描述为受Sinatra启发的服务器,意味着它是相对极小化的,带有以插件形式获得的很多特征。Express是MEAN软件栈的后端部件,其他部件是MongoDB数据库软件和AngularJS前端框架。

下面是个人对Expres的理解

  1. Express与Node的关系:
      - Expres框架是后台的Node框架,其作用相当于JS的jQuery框架
      - Express的哲学是在你的想法和服务器之间充当薄薄的一层。
  2. 原生Node开发有那些问题?
      - 呈现静态页面不方便,需要处理每个HTTP请求,还要考虑304问题
      - 路由处理代码不直观清晰,需要写很多正则表达式和字符串函数
      - 不能集中精力写业务,要考虑很多其它的东西如模块
  3. Express整体感知
      - 惊艳的路由能力,正则提取数据能力足够一般工作使用
      - 静态文件处理能力,一句话解决
      - 模板引擎的配合,直观清晰

二、快速搭建一个Express框架下的Node.js服务器

NPM 安装
	//通常的安装模式都是使用npm,Node.js的安装方式据说不介绍了(官网下载下一步即可)
	$ npm install express --save

	// 安装完成后基本目录结构
	.
	├── app.js
	├── node_modules
	│   ├── ...
	│	├── express
	│   └── ...
	├── package-lock.json
	└── package.json

$ node app.js 运行Node服务器
	const express = require('express');		// express 模块引入
	const app = express();
	const port = 3000;		// 设置端口号
	
	app.get('/', (req, res) => res.send('Hello Express'));
	
	app.listen(port);		// 监听端口3000

浏览器访问 http://127.0.0.1:3000
在这里插入图片描述

三、Express 路由

学习路由使用前,可以先了解下 URL 字符串与 URL 对象

URL 字符串是结构化的字符串,包含多个含义不同的组成部分。 解析字符串后返回的 URL 对象,每个属性对应字符串的各个组成部分。
在这里插入图片描述

1)app.get(URL, callback) 接收GET数据
  • 使用指定的回调函数将 HTTP GET请求路由到指定的路径。
  • GET请求的参数在URL中,在原生Node中,GET请求需要使用url模块来识别参数字符串。在Express中,则不需要使用url模块,可以直接使用req.query对象
	const express = require('express');
	const app = express();
	app.get('/', (req, res, next) => {
		let GET = req.query;		// 查询字符串 search
	    console.log(GET);
	    res.send("Hello Express");
	});
	app.listen(3000);

浏览器访问 http://127.0.0.1:3000/?username=“code”&userpwd=“123456”
在这里插入图片描述
终端:
在这里插入图片描述

2)app.post(“URL”,callback)
  • 使用指定的回调函数将HTTP POST请求路由到指定的路径
  • POST请求在Express中无法直接获取,必须使用body-parser模块。使用后,将可以用req.body得到参数。如果表单中含有文件上传,则还需要使用formidable模块。
	const express = require('express');
	const app = express();
	let fs = require("fs");
	const bodyParser = require("body-parser");
	app.use(bodyParser.urlencoded({ extended: false }));
	app.get('/index', (req, res) => fs.readFile("./index.html", (err,data) => res.end(data)));	// 读取表单页面
	app.post('/insert', (req, res, next) => {
		 let POST = req.body
    	console.log(POST)
	    res.send("Hello Express");
	})
	app.listen(3000)

浏览器访问 http://127.0.0.1:3000/index
  表单输入数据 请求为<form action="/insert" method="POST">
在这里插入图片描述
在这里插入图片描述
终端:
在这里插入图片描述

3)app.use()
  • 也是一个中间件 与getpost不同的是它的网址不是精确匹配的,use能够无限拓展
  • 不写路径的时候,实际上就相当于"/",即所有网址
	let express = require("express");
	let app = express();
	
	// 指定一级路径
	app.use("/public", (req, res) => {
	    // 'http://127.0.0.1:3000/public/xxx/new.html?user=json&age=12#1d=3'
	    res.write(req.originalUrl + "\n");   // 原始路径 '/public/xxx/new.html?user=json&age=12'
	    res.write(req.baseUrl + "\n");       // 一级路径 '/public'
	    res.write(req.path + "\n");          // 追加路径 '/xxx/ccc/new.html'
	});
	
	app.listen(3000);
4)app.use("/url", express.static("./fileName"));
  • app.use(express.static()) 提供一个静态服务
  • app.use(express.static("./fileName"))就是给我们增加一些特定功能的遍历场所
  • 不写详细路由,可直接访问到static("./fileName") fileName文件下的index.html
  • 对路由拓展,可访问拓展路径下的文件(未指明详细文件则访问index.html),文件不存在则返回 Cannot …
	let express = require("express");
	let app = express();
	app.use(express.static("./public"));
	// app.use("/pub", express.static("./public"));
	app.listen(3000);
5)Express 内容渲染
  • 多数情况下,渲染内容用res.render(),将会根据views中的模板文件进行渲染,如果不想使用views文件夹,想自定义文件夹,则app.set(“views”, “xxx”)
  • 快速测试网页,可以使用res.send(),这个函数会根据内容自动帮我们设置content-type头部和200状态码
  • 想使用不同的状态码:res.status(404).send(“Sorry, We Cannot Find That !”);
  • 想使用不同的content-type:res.set(“content-type”,“text/html”);
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值