node.js Express框架学习笔记

2024-09-04 21:18

本文主要是介绍node.js Express框架学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

参考网址——点击打开链接

Express是一个简介而灵活的node.js应用框架,提供了一系列特性来帮助创建各种web应用和丰富的HTTP工具

使用Express可以快速地搭建一个完整功能的网站

Express框架核心特性:

  • 可以设置中间件来响应http请求
  • 定义了路由表用于执行不同的http请求动作
  • 可以通过模板传递参数来动态渲染HTML页面

安装

npm install express --save

查看当express版本号

npm list express

GET方法

这里直接到get方法的使用,中间一步一步解释好晕,用一段代码解释更清楚

先写用于表单提交的HTML代码

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><form action="http://127.0.0.1:8081/process_get" method="get">First Name: <input type="text" name="first_name">  <br>Last Name: <input type="text" name="last_name"><input type="submit" value="submit"/></form></body>
</html>
再写服务端代码server.js

var express=require('express');
var app=express();
app.use(express.static('public'));
/** express路由* app.get中第一个参数指定客户端访问路径(由谁去响应客户端请求),这里是127.0.0.1:8081/index.html */
app.get('/index.html', function (req, res) {res.sendFile( __dirname + "/" + "index.html" );//找到要传回到客户端显示的html,这里是index.html
})app.get('/process_get', function (req, res) {// 输出 JSON 格式response = {first_name:req.query.first_name,last_name:req.query.last_name};// console.log(response);/** 结束响应,告诉客户端所有消息已经发送。当所有要返回的内容发送完毕时,该函数必须被调用一次。* 如何不调用该函数,客户端将永远处于等待状态* end()的第一参数将会在页面输出* */res.end(JSON.stringify(response));
})
/** 监听8081端口* server.address()可获取服务器主机的地址和被监听的端口号*/
var server = app.listen(8081, function () {var host = server.address().address
var port = server.address().portconsole.log("应用实例,访问地址为 http://%s:%s", host, port)})
执行以上代码

node server.js

代码启动后,浏览器输入http://localhost:8081/index.html查看结果

POST方法

首先提一下一个nodejs中间件——body-parser

body-parser中间件用来解析http请求体(post方法传输的数据都放在http请求体中),它是express默认使用的中间件之一

本次用到body-parser下的urlencoded模块,该模块用于解析req.body(http请求体的一部分)的数据,解析成功后覆盖原来的req.body,解析失败为{ }。

有关body-parser的详细解释,推荐一篇文章——点击打开链接

安装body-parser也很简单 ——npm install body-parser

好,看Post方法下的server.js代码

var express=require('express');
var app=express();
var bodyParser=require('body-parser');var urlencodedParser=bodyParser.urlencoded({extended:false});app.use(express.static('public'));/** express路由* app.get中第一个参数指定客户端访问路径(由谁去响应客户端请求),这里是127.0.0.1:8081/index.html */
app.get('/index.html', function (req, res) {res.sendFile( __dirname + "/" + "index.html" );//找到要传回到客户端的html,这里是index.html
})app.post('/process_post',urlencodedParser,function (req, res) {// 输出 JSON 格式response = {first_name:req.body.first_name,last_name:req.body.last_name};/** 结束响应,告诉客户端所有消息已经发送。当所有要返回的内容发送完毕时,该函数必须被调用一次。* 如何不调用该函数,客户端将永远处于等待状态* end()的第一参数将会在页面输出* */
//console.log(req);res.end(JSON.stringify(response));
})
/** 监听8081端口* server.address()可获取服务器主机的地址和被监听的端口号*/
var server = app.listen(8081, function () {var host = server.address().address
var port = server.address().portconsole.log("应用实例,访问地址为 http://%s:%s", host, port)})

文件上传

首先来认识一个node中间件——multer用于处理enctype="multipart/form-data"(设置表单的MIME编码)的表单数据

安装——npm  install multer 

这里推荐一篇文章,里面有队multer的详细解释——http://www.jb51.net/article/95488.htm

特别提醒的是,multer在解析完请求体后,会向Request对象中添加一个body对象和一个file或files对象(上传多个文件时使用files对象 )。其中,body对象中包含所提交表单中的文本字段(如果有),而file(或files)对象中包含通过表单上传的文件。

node文件系统参考文档——点击打开链接

index.html

<body><h3>文件上传:</h3> 选择一个文件上传: <br /><form action="/file_upload" method="post" enctype="multipart/form-data"><input type="file" name="image" size="50" /><br /><input type="submit" value="上传文件" /></form></body>

server.js

var express = require('express');
var app = express();
var fs = require('fs');//node文件系统(file system)var bodyParser = require('body-parser');
var multer = require('multer');app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static('public'));
/** 为multer文件指定存储路径和文件名,如果不指定,文件将存储于内存中,永远不会存到硬盘上*/
app.use(multer({ dest: '/express/path/' }).array('image'));/** express路由* app.get中第一个参数指定客户端访问路径(由谁去响应客户端请求),这里是127.0.0.1:8081/index.html */
app.get('/index.html', function(req, res) {res.sendFile(__dirname + "/" + "index.html"); //找到要传回到客户端的html,这里是index.html
})app.post('/file_upload', function(req, res) {/** 指定传输路径,本次demo文件存储于项目下的files文件夹中*/var des_file = __dirname + "/files/" + req.files[0].originalname;console.log(des_file);fs.readFile(req.files[0].path, function(err, data) {fs.writeFile(des_file, data, function(err) {if(err) {console.log(err);} else {response = {message: '上传成功',filename: req.files[0].originalname};}console.log(response);res.end(JSON.stringify(response));});});})
/** 监听8081端口* server.address()可获取服务器主机的地址和被监听的端口号*/
var server = app.listen(8081, function() {var host = server.address().addressvar port = server.address().portconsole.log("应用实例,访问地址为 http://%s:%s", host, port)})







这篇关于node.js Express框架学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137057

相关文章

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统