Node.js入门教程 第五篇 (Express框架)
Express框架
Express是适用于Node.js web的框架,提供了大量实用功能,例如路由功能及http功能。
Express 框架核心特性:
- 可以设置中间件来响应 HTTP 请求。
- 定义了路由表用于执行不同的 HTTP 请求动作。
- 可以通过向模板传递参数来动态渲染 HTML 页面。
安装:
npm install express --save
可能需要的中间件:
body-parser - Node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。
cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。
multer - Node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。
cors - Node.js跨域解决方案,当需要跨域访问时使用。
npm install body-parser --save
npm install cookie-parser --save
npm install multer --save
npm install cors --save
使用express创建服务端:
var express = require('express');
var app = express();
//分配路由
app.get('/', function (req, res) {
res.send('Hello World');
})
app.get('/about', function (req, res) {
res.send('about web');
})
app.post('/user', function (req, res) {
res.send('user data');
})
//创建服务器并监听8080端口
var server = app.listen(8080)
访问 http://127.0.0.1:8080:
界面输出'Hello World'
访问 http://127.0.0.1:8080/about:
界面输出'about web'
访问 http://127.0.0.1:8080/user:
界面输出'user data'
Express的路由分为get和post两种。两者用法类似,但post支持的参数长度更大。
express+axios实现vue前后端跨域访问(拓展)
axios是对ajax封装后的模块,使用更简单,可以与express搭配使用,实现前后端分离跨域访问。
安装axios:
npm install axios --save
使用express创建路由:
//router.js
const express = require('express');
const router = express.Router(); router.get('/login', (req, res, next) => {
//to do login
});
创建跨域访问:
const routerApi = require('./router');
const bodyParser = require('body-parser'); // post 数据需要
const express = require('express');
const cors = require('cors');//跨域访问依赖的中间件
const app = express(); // 允许请求的域名,如果是*则允许所有域名访问本服务端(必须写在所有注册路由前)
app.use(cors({ origin: 'http://127.0.0.1:8080' }));
//解析Json
app.use(bodyParser.json());
//注册路由
app.use('/api', routerApi);
//创建服务端,监听端口
app.listen(3000, '0.0.0.0');
console.log('success listen at port:3000......');
前端main.js(前端以Vue为例):
import Vue from 'vue'
import axios from 'axios' //使用ElementUI为PC前端框架
Vue.use(ElementUI)
// 请求服务器的Url
axios.defaults.baseURL = 'http://127.0.0.1:3000/';
//设置post默认类型为json
axios.defaults.headers.post['Content-Type'] = 'application/json';
Vue.prototype.axios = axios
前端UI请求:
this.axios.get("/api/login", {
params: {
userName: 'Jimmy',
password: '123456'
}
})
.then(res => {
//登录结果...
})
.catch(error => {
console.log(error.response);
});
Node.js入门教程 第五篇 (Express框架)的更多相关文章
- Node.js入门教程 第三篇 (模块及路由)
Node.js的模块 Node.js的模块与传统面向对象的类(class)不完全相同.Node.js认为文件即模块,即一个文件是一个模块.单一文件一般只专注做一件事情,保证了代码的简洁性. 创建模块: ...
- Node.js入门教程 第四篇 (流及文件操作)
流 Stream是Node.js中的抽象接口,有不少Node.js对象实现自Stream. 所有的Stream对象都是EventEmitter 的实例. 例如:fs模块(用于读写操作文件的模块) fs ...
- Node.js入门教程 第六篇 (连接使用MySql)
连接使用MySql 安装MySql模块: npm install mysql 创建连接: const mysql = require('mysql') // 连接 mysql 服务器 const co ...
- 【特别推荐】Node.js 入门教程和学习资源汇总
这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...
- Node.js 入门教程和学习资源汇总
这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...
- node.js 入门教程(beginnder guide
非常好的教程: node入门: JavaScript与Node.js JavaScript与你 简短申明 服务器端JavaScript “Hello World” 一个完整的基于Node.js的web ...
- Node.js入门教程:Node.js如何安装配置并部署第一个网站
前言:作为一个资深的前端开发人员,不懂的Node.js 那你绝对是不能跟别人说你是资深的前端程序猿滴! 今天洋哥就来和大家一起学习被大牛称之为前端必学的技能之一Node! 那么Node到底是什么呢? ...
- node.js入门学习(五)--Demo模块化改造
1.node.js中模块的分类 1)node.js内置模块(核心,原生) 所有内置模块在安装node.js时就已经编译成二进制文件,可以直接加载运行(速度较快),部分内置模块,在node.exe这个进 ...
- 【Node.js】一、搭建基于Express框架运行环境+更换HTML视图引擎
1)安装express generator生成器 这个express generator生成器类似于vue-cli脚手架工具,用来创建一个后端项目,首先我们要对生成器进行全局安装,在cmd中输入下 ...
随机推荐
- C#开发BIMFACE系列24 服务端API之获取模型数据9:获取单个房间信息
系列目录 [已更新最新开发文章,点击查看详细] 大厦建筑模型中,基本上包含多个楼层,每个楼层包含多个房间等信息.在<C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模 ...
- 【Offer】[43] 【1~n整数中1出现的次数】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数.例如,输入12, 1~12这些整数中包含1的数字有1.10.11和12,1 ...
- 机器学习Label Encoder和One Hot Encoder
标签编码(Label Encoder) 在本例中第一列是Country, 如果我们要运行任何模型, 数据中不能包含文本 所以要对文本进行处理 接下来,我们从sklearn库中导入LabelEncode ...
- 获取mysql自主生成的主键
一.sql语句 CREATE TABLE `testgeneratedkeys` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) ...
- 14个Linux系统安全小妙招,总有一招用的上!
对于互联网IT从业人员来说,越来越多的工作会逐渐转移到Linux系统之上,这一点,无论是开发.运维.测试都应该是深有体会.曾有技术调查网站W3Techs于2018年11月就发布一个调查报告,报告显示L ...
- ACM团队周赛题解(3)
940和822两套div.2 老规矩 #define MAXN 1000000+5#define MOD 1000000007#define PI (acos(-1.0))#define EPS 1e ...
- Python 开发植物大战僵尸游戏
作者:楷楷 链接:https://segmentfault.com/a/1190000019418065 开发思路 完整项目地址: https://github.com/371854496/pygam ...
- 跟我学SpringCloud | 第十八篇:微服务 Docker 化之基础环境
1. 容器化 Docker 的横空出世,给了容器技术带来了质的飞跃,Docker 标准化了服务的基础设施,统一了应用的打包分发,部署以及操作系统相关类库等,解决了测试生产部署时环境差异的问题.对于运维 ...
- JRebel 破解最简单的使用
### 前提提示 JRebel是一款JVM插件,它使得Java代码修改后不用重启系统,立即生效.IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效, ...
- Session和Cookie的用法及区别
1. Session.Cookie是什么 1.1 概念理解 要了解session和cookie是什么,先要了解以下几个概念. 1.1.1 无状态的HTTP协议 协议:是指计算机通信网络中两台计算机之间 ...