Node.js Express框架

2023-11-15

node.js express框架知识点详细解析,如下:

express框架特性:

可以设置中间件来响应 HTTP 请求。

定义了路由表用于执行不同的 HTTP 请求动作。

可以通过向模板传递参数来动态渲染 HTML 页面。

安装 express 并将其保存到依赖列表中: npm install express --save

安装重要模块:

npm install body-parser --save

npm install cookie-parser --save

npm install multer --save

查看express版本:npm list express

使用express框架输出hello world:

//请求express

var express = require('express');

//创建express对象

var app = express();

//创建路由

app.get('/', function (req, res) {

//输出hello world

res.send('Hello World');

})

//创建服务器

var server = app.listen(8081, function () {

console.log("访问地址为 http://127.0.0.1:8081")

})

express 使用回调函数的参数request 和 response 对象来处理请求和响应的数据:

app.get('/', function (req, res) {

// --

})

路由详解:

var express = require('express');

var app = express();

// 主页输出 "Hello World,访问http://127.0.0.1:8081

app.get('/', function (req, res) {

console.log("主页 GET 请求");

res.send('Hello GET');

})

// POST 请求

app.post('/', function (req, res) {

console.log("主页 POST 请求");

res.send('Hello POST');

})

// 页面响应,访问http://127.0.0.1:8081/del_user

app.get('/del_user', function (req, res) {

console.log("/del_user 响应 DELETE 请求");

res.send('删除页面');

})

// 页面 GET 请求,访问http://127.0.0.1:8081/list_user

app.get('/list_user', function (req, res) {

console.log("/list_user GET 请求");

res.send('用户列表页面');

})

// 对页面 abcd, abxcd, ab123cd, 等响应 GET 请求,访问http://127.0.0.1:8081/ab*cd

app.get('/ab*cd', function(req, res) {

console.log("/ab*cd GET 请求");

res.send('正则匹配');

})

var server = app.listen(8081, function () {

console.log("访问地址为 http://127.0.0.1:8081")

})

在项目目录下创建public/images目录,并且在images目录中放入1.jpg文件 

设置静态文件路径:app.use('/public', express.static('public'));

查看静态文件中的图片,创建3.js文件:

var express = require('express');

var app = express();

app.use('/public', express.static('public'));

app.get('/', function (req, res) {

res.send('Hello World');

})

var server = app.listen(8081, function () {

console.log("访问地址为 http://127.0.0.1:8081")

})

执行程序:node 3.js 

在浏览器中访问http://127.0.0.1:8081/public/images/1.jpg

get方法详解:

创建4.html文件:


<html>
<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>

创建4.js文件:

var express = require('express');

var app = express();

app.use('/public', express.static('public'));

app.get('/4.html', function (req, res) {

res.sendFile( __dirname + "/" + "4.html" );

})

app.get('/process_get', function (req, res) {

// 输出 JSON 格式

var response = {

"first_name":req.query.first_name,

"last_name":req.query.last_name

};

console.log(response);

res.end(JSON.stringify(response));

})

var server = app.listen(8081, function () {

console.log("访问地址为 http://127.0.0.1:8081/4.html")

})

post方法详解:

创建5.html文件:

<html>
<body>
<form action="http://127.0.0.1:8081/process_post" method="POST">
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>

创建5.js文件:

var express = require('express');

var app = express();

//请求body-parser

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

// 创建 application/x-www-form-urlencoded 编码解析

var urlencodedParser = bodyParser.urlencoded({ extended: false })

app.use('/public', express.static('public'));

app.get('/5.html', function (req, res) {

res.sendFile( __dirname + "/" + "5.html" );

})

app.post('/process_post', urlencodedParser, function (req, res) {

// 输出 JSON 格式

var response = {

"first_name":req.body.first_name,

"last_name":req.body.last_name

};

console.log(response);

res.end(JSON.stringify(response));

})

var server = app.listen(8081, function () {

console.log("访问地址为 http://127.0.0.1:8081/5.html")

})

文件上传详解:

创建6.html文件:

<html>
<head>
<title>文件上传表单</title>
</head>
<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>
</html>

创建6.js文件:

var express = require('express');

var app = express();

//请求fs

var fs = require("fs");

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

//请求multer

var multer = require('multer');

app.use('/public', express.static('public'));

app.use(bodyParser.urlencoded({ extended: false }));

//设置保存图片的位置

app.use(multer({ dest: '/tmp/'}).array('image'));

app.get('/6.html', function (req, res) {

res.sendFile( __dirname + "/" + "6.html" );

})

app.post('/file_upload', function (req, res) {

// 上传的文件信息

console.log(req.files[0]);

var des_file = __dirname + "/" + req.files[0].originalname;

fs.readFile( req.files[0].path, function (err, data) {

fs.writeFile(des_file, data, function (err) {

if( err ){

console.log( err );

}else{

response = {

message:'File uploaded successfully',

filename:req.files[0].originalname

};

}

console.log( response );

res.end( JSON.stringify( response ) );

});

});

})

var server = app.listen(8081, function () {

console.log("访问地址为 http://127.0.0.1:8081/6.html")

})

cookie管理详解:

var express = require('express')

var cookieParser = require('cookie-parser')

var util = require('util');

var app = express()

app.use(cookieParser())

app.get('/', function(req, res) {

console.log("Cookies: " + util.inspect(req.cookies));

})

app.listen(8081)

以上为node.js express框架知识点。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js Express框架 的相关文章

  • getElementsByClassName & IE8:对象不支持此属性或方法[重复]

    这个问题在这里已经有答案了 I know getElementsByClassName 不支持IE8 你知道我可以用什么来代替吗 我因错误而变得烦人 对象不支持此属性或方法 HTML 代码是 function sumar var elems
  • 新BFC“清”浮箱

    如示例所示 应用display inline block 到包含块似乎 清除 了其中的浮动框 wrapper inline block display inline block left column background color te
  • 禁用整个站点的 IE8 加速器

    是的 我知道有类似的问题 https stackoverflow com questions 499565 is it possible to disable ie8 accelerators on my website在 SO 上 但它已
  • 如何删除从 javascript var 转义的反斜杠?

    我有这个变量 var x div class Which is div class 但是我需要 div class abcdef 我怎样才能 unes cape 这个变量来删除所有转义字符 您可以通过正则表达式将反斜杠后跟引号替换为仅引号
  • FormData 中的 Blob 为 null

    我正在尝试通过远程 API 通过 ajax 在 android 中发送创建的照片 我在用着相机图片背景 https github com an rahulpandey cordova plugin camerapicturebackgrou
  • AngularJS - 服务、工厂、过滤器等中的依赖注入

    因此 我想在我的 Angular 应用程序中使用一些插件和库 目前 我只是引用这些函数 方法 因为它们是在 99 的应用程序中以完全忽略依赖注入的方式使用的 我有 例如 javascript 库 MomentJS 它处理格式化和验证日期 并
  • 添加选项以选择框而不用 Internet Explorer 关闭该框?

    我正在尝试构建一个包含多个下拉选择框的网页 这些下拉选择框在首次打开时异步加载其选项 这在 Firefox 下工作得很好 但在 Internet Explorer 下则不然 下面是我想要实现的目标的一个小例子 基本上 有一个选择框 ID 为
  • 如何正确删除动画集中引用的 Raphael SVG 元素?

    我有一组动画 Raphael SVG 元素 我正在通过用户发起的 ajax 调用添加新元素并删除旧元素 我 set push 新元素 但因为我需要删除的元素通常不是集合中的最后一个元素 所以我使用 element remove 而不是 se
  • 全局未在 ../node_modules/socket.io-parser/is-buffer.js 中定义

    预先感谢您帮助我 我正在尝试在我的一个角度组件中连接套接字 但在浏览器的控制台中它会抛出一个错误 指出 Global 未在 Object node modules socket io parser is buffer js 中定义 这是我的
  • 如何上传文件 - sails.js

    我可以下载图像和 pdf 但无法下载文档文件 doc pptx odt 下载文档 doc pptx odt 时 仅将其下载为 ZIP XML 文件 我可以做什么 我在用着 填写上传文件文档 https github com balderda
  • 阻止通过 GET 传递“提交”按钮值?

    我正在尝试通过 GET 传递表单信息 这很重要 这样人们就可以将表单选择中过滤后的数据发送给其他人 问题是 使用下面的代码 它不仅传递过滤器信息 还传递提交表单值 如下所示 index php month filter Feb year f
  • 不可见的 reCAPTCHA - 缺少必需的参数:sitekey

    我正在为每个带有具有类的按钮的表单动态加载不可见的 reCAPTCHAg recaptcha 我遇到的问题是验证码未正确加载 我不知道为什么 我按照验证码网站上的文档进行操作 但我不确定如何以及为什么会出现此错误 Uncaught Erro
  • 当选项卡重新加载(chrome 扩展)时,如何运行此脚本?

    所以我想在指定 URL 中重新加载选项卡时运行脚本 它几乎可以工作 但实际上 id 不能 这是我的清单文件 manifest version 2 name Sample Extension description Sample Chrome
  • 如何仅突出显示嵌套表的最里面的表行?

    我有几个嵌套表 我想突出显示鼠标指针下方的最里面的行 我怎样才能做到这一点 一些提示 我使用嵌套表来显示递归表格数据 表可以嵌套 10 层 嵌套正如您所期望的那样 table tr td table tr td table tr td 可能
  • tr 元素周围的边框不显示?

    Chrome Firefox 似乎不渲染边框tr 但如果选择器是 它会渲染边框table tr td 如何在 tr 上设置边框 我的尝试 不起作用 table tr border 1px solid black table tbody tr
  • 无法从 JSON 请求获取数据,尽管我知道它已返回

    我试图获取从 getJSON 返回的数据 但我无法让它工作 我已经在 search twitter API 上尝试了相同的代码 效果很好 但它不适用于其他网站 我知道数据已返回 因为我在使用检查器时可以找到它 我通过检查器找到的值是 id
  • 角度 ng-repeat 根据条件添加样式

    我在 div 列表上使用 ng repeat 并且在渲染此 div 的 json 中手动添加项目 我需要定位我在 json 中添加的最后一个 div 它会自动在屏幕上渲染 即 couse 光标所在的位置 其余部分保持在相同位置 但没有给出渲
  • Node.js - 生成的进程正在生成错误“execvp():没有这样的文件或目录”

    我有以下代码 旨在生成并分离子进程 它只是同一目录中的另一个 node js 脚本 这是我正在运行的确切代码 var fs require fs var child require child process var out fs open
  • 如何从react-bootstrap复选框获取值/属性?

    我正在尝试使用反应引导复选框 https react bootstrap github io components html forms controls https react bootstrap github io components
  • 如何制作过期/签名视频嵌入网址

    我是新来的 正在学习网络开发等等 我只知道如何将我的视频嵌入网站中 任何菜鸟都可以轻松获得源代码 他们也可以嵌入它 但在许多网站中 视频 src 均使用重定向器链接进行编码 例如 它会在一段时间后过期 在本例中是一天 我了解到这是一个签名网

随机推荐

  • Mysql查询数据库容量大小

    记录一下 好东西 防止忘了 select table schema as 数据库 table name as 表名 table rows as 记录数 truncate data length 1024 1024 2 as 数据容量 MB
  • 常见的几种手机传感器

    传感器Sensor就是手机里那些可以被测量并且能按照一定的规律转换成可用输出信号的器件或装置 一般这类传感器都是由敏感元件以及转换元件组成 手机上的那些能够通过芯片来感应的元器件 如反应距离值 光线值 温度值 亮度值和压力值等 那手机常见的
  • 2-2. 然后是几点(15)

    有时候人们用四位数字表示一个时间 比如1106表示11点零6分 现在 你的程序要根据起始时间和流逝的时间计算出终止时间 读入两个数字 第一个数字以这样的四位数字表示当前时间 第二个数字表示分钟数 计算当前时间经过那么多分钟后是几点 结果也表
  • java中异常总结-值得一看

    本文要点 1 Throwable把错误进一步划分为 java lang Exception 和 java lang Error java lang Error 用来处理系统错误 2 所有继承自RuntimeException的异常都被称为非
  • vue3+pinia的使用,刷新后不丢数据

    前言 好用的状态管理器 vue3中出来的pinia 相比较vuex来说 更加轻便 使用也更方便 官方文档 点我 github地址 点我 pinia与vuex相比较优点 pinia 是轻量级状态管理工具 大小只有1KB pinia 模块化设计
  • 深入理解Spring的事务传播行为

    前言 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为 事务传播行为是Spring框架独有的事务增强特性 它不属于的事务实际提供方数据库行为 这是Spring为我们提供的强大的工具箱 使用事务传播行
  • JAVA练习(3)

    模拟双色球生成案例 需求 体彩中有一项是双色球 要求在1 33号共33个红色球里选出6个 1 16号共16个蓝色球中选出一个作为中奖号码 请实现这个需求 分析 1 定义两个方法来输出红色球和蓝色球 2 需要从33个红色球中选出6个 所以不能
  • element ui 弹出组件的遮罩层以及多层遮罩解决办法

    做项目中遇到几次弹出框遮罩层的问题 有嵌套的 弹出框 还有单页面中tabs标签页的弹出框 今天就说一下tabs中的弹出框遮罩层的问题 这个页面有五个tabs页签 每一个都有弹出框组件 也就是说每一个都有遮罩层 很有趣的问题 我在第五个tab
  • 神经网络学习小记录71——Tensorflow2 使用Google Colab进行深度学习

    神经网络学习小记录71 Tensorflow2 使用Google Colab进行深度学习 注意事项 学习前言 什么是Google Colab Colab官网 利用Colab进行训练 一 数据集与预训练权重的上传 1 数据集的上传 2 预训练
  • 相机的运动

    using UnityEngine using System Collections using System Collections Generic using DG Tweening using UnityEngine EventSys
  • 数字基带信号(单极性归零、单极性不归零、双极性归零和双极性不归零)波形仿真设计(matlab)

    一 实验目的 了解数字基带信号 单极性归零 单极性不归零 双极性归零和双极性不归零 波形的特点 掌握利用matlab产生数字基带信号的方法 二 实验任务 产生1000个随机信号序列 分别用单极性归零 单极性不归零 双极性归零和双极性不归零码
  • javascript中关键字in以及循环for...in的使用和注意事项

    写这篇文章 是因为在学习prototypejs库中方法Object extend 和Class create 看这篇指导 tutorial on classes and inheritance 的时候 对于什么能够继承 什么不能继承产生了一
  • 在ubuntu下搭建Qt Creator的arm交叉编译环境

    Qt Creator是跨平台的 Qt IDE Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境 IDE 此 IDE 能够跨平台运行 支持的系统包括 Linux 32 位及 64 位 Mac OS X 以
  • Python2.7 安装教程

    Python安装过程 1 下载安装程序 我们安装Python的一个重要目的是为了用IAR编译CC2640 OAD文件时执行合并文件的脚本 所以我们一起来看看Python2 7版本的安装方法 该版本安装程序的下载连接如下 https www
  • Conda/pip常用命令

    目录 1 管理与查看 1 1 查看conda版本 1 2 查看cuda driver的版本 2 虚拟环境 2 1 查看虚拟环境 2 2 创建虚拟环境 2 3 激活虚拟环境 2 4 删除虚拟环境 2 5 导出环境 导入环境 3 Package
  • docker上安装nacos

    文章目录 一 docker安装nacos简单版 1 拉取镜像 2 挂载目录 用于映射到容器 目录按自己的情况创建 3 mysql新建nacos config的数据库 并执行脚本 sql脚本地址如下 4 修改配置文件custom proper
  • 这5个很“哇塞”的不收费Python学习网站,说不定很适合现在的你

    作为一个现时代的程序员初学者 除了看书之外 互联网的学习手段也是断不能少的 给大家推荐几个比收费网站还要 香 的免费学习Python的网站 虽说不上全方位的满足你的需求 但是大部分也都能 1 菜鸟教程 http www runoob com
  • 怎么查看网页ajax发送的数据,如何查看我使用JQuery AJAX发送的SOAP请求数据

    userpass
  • C语言_输出字符串和获取字符串

    输出字符串和获取字符串 01 输出字符串 使用puts函数来输出字符串 使用printf函数来输出字符串 通过puts函数和printf函数都能够实现字符串输出 02 获取字符串 使用scanf函数来获取字符串 使用gets 函数来获取字符
  • Node.js Express框架

    node js express框架知识点详细解析 如下 express框架特性 可以设置中间件来响应 HTTP 请求 定义了路由表用于执行不同的 HTTP 请求动作 可以通过向模板传递参数来动态渲染 HTML 页面 安装 express 并