npm 安装 express

express 是一个在 npm registry 里可获得的一个 Node.js 模块,在安装之前需要下载和安装 Node.js,这里推荐用 nvm 去管理 Node.js 的版本

安装 express 需要 Node.js 0.10 版本以上,在安装之后不清楚 node 版本时可以命令行运行 node -v 命令查看 node 版本。
在这里插入图片描述

选择目标文件夹,进行 npm 初始化

cd myapp
npm init

一般在安装时我们会将模块依赖写到 dependencies 节点,也可以按照实际需求采取其他命令参数,详见 [npm install 的 --save、--save-dev 等相关参数](https://blog.youkuaiyun.com/wzp20092009/article/details/98850521)理解。
npm install express --save-dev

在这里插入图片描述

来写个例子试一试

const express = require('express');	//	版本4.17.1
const app = express();
const port = 3000;

app.get('/', (req, res) => res.send('Hello World!'));

app.listen(port, () => console.log(`Example app listening on port ${port}!`));

在命令行中用 node 运行该文件

node express-helloWorld.js

在这里插入图片描述
浏览器打开地址 127.0.0.1:3000
在这里插入图片描述

PS: express 不同的版本可能会影响代码的执行

问题一:

好多 node 的学习资料上在安装 express 之后运行例子的 js 代码可能会有如下报错
在这里插入图片描述
例子代码如下:

var express = require('express');

var app = express.createServer();	//	报错处,这里改就好了

app.get('/', function(req, res){
	res.send('Welcome to Node Test');
});

app.listen(9000, function(){
	console.log('App has running at the 127.0.0.1:9000!');
});

因为我们安装的 express 版本比这些例子上的 express 上的版本比较新,所以我们将原来创建服务器的方法 express.createServer() 改成 express() 执行就好了,这样我们就用 express() 创建了服务器 。

var express = require('express');

var app = express();	//	这么改就好了

app.get('/', function(req, res){
	res.send('Welcome to Node Test');
});

app.listen(9000, function(){
	console.log('App has running at the 127.0.0.1:9000!');
});

在这里插入图片描述
在这里插入图片描述

问题二:

Most middleware (like bodyParser) is no longer bundled with Express
在这里插入图片描述
例子代码如下:

var express = require('express');

var app = express();
app.listen(9000);

var tweets = [];

app.get('/', function(req, res){
	res.send('Welcome to Node Twitter');
});

//	express.bodyParser() 报错
app.post('/send', express.bodyParser(), function(req, res){
	if(req.body && req.body.tweet){
		tweets.push(req.body.tweet);
		res.send({status: 'ok', message: 'Tweet received'});
	}else{
		//	没有tweet?
		res.send({status: "nok", message: "No tweet received"});
	}
});

app.get('/tweets', function(req, res){
	res.send(tweets);
})

原因很简单,后来版本的 express 剥离了原来集成的一些组件,需要另外手动安装这些组件,并引用到项目里使用。

npm install body-parser --save-dev

在这里插入图片描述
在代码里通过 require 引用 body-parser 模块,使用时直接 bodyParser.urlencoded({ extended: false }) 作为中间件替换原来的 express.bodyParser()
在这里插入图片描述
修改后代码如下:

var express = require('express');

var bodyParser = require('body-parser');

//	var app = express.createServer();
var app = express();

app.listen(9000, function(){
	console.log('App running at 127.0.0.1:9000');
});

var tweets = [];

app.get('/', function(req, res){
	res.send('Welcome to Node Twitter');
});

//	app.post('/send', express.bodyParser(), function(req, res){
app.post('/send', bodyParser.urlencoded({ extended: false }), function(req, res){
	if(req.body && req.body.tweet){
		tweets.push(req.body.tweet);
		res.send({status:"ok", message:"Tweet received"});
	}else{
		//	没有tweet?
		res.send({status:"nok", message:"No tweet received"});
	}
})

app.get('/tweets', function(req, res){
	res.send(tweets);
})

Post 请求的 HTTP 头的 content-type 属性是 application/x-www-form-urlencodedapplication/json,这两种数据格式可以解析成 key/value 值,bodyParser.urlencoded(options) 方法接受一个 options 对象作为参数,可以包含参数 extended,如果值为 false 则值可以是字符串或数组,如果值为 true 则可以是任何类型。
通过将 extended 设置为 true 可以允许对象或者数组编码成 URL-encoded 格式,从而实现类似 json 的 url 编码体验。




扫码我们一起交流前端知识哈
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值