Express 框架的使用(详细)

12 篇文章 18 订阅
订阅专栏

Express 框架

1.1 Express框架是什么

Express 是一个基于 Node平台的Web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web应用。

  • 下载
npm install express

1.2 Express 框架特性

  • 提供了简洁的路由定义方式
  • 对获取 http 请求参数进行了简化处理
  • 模板引擎支持程度高,方便渲染动态HTML页面
  • 拥有中间件机制有效控制 HTTP 请求
  • 拥有大量第三方中间件对功能进行扩展

1.3 原生 node.js 与 Express 框架对比

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

1.4 基本使用(入门代码)

// 引入 express 框架
const express = require('express')
// 创建网站服务器
const app = express();

app.get('/', (req, res) => {
    // send()
    // 1. send 方法内部会检测响应内容的类型
    // 2. send 方法会自动设置 http 状态码
    // 3. send 方法还会帮我们自动设置响应的内容类型以及编码
    res.send('Hello Express');
})

app.get('/list', (req, res)=> {
    // 向客户端直接响应一个对象 
    res.send({name: 'zhangsan', age: 20});
})

// 监听端口
app.listen(3000);
console.log('网站服务器启动成功');

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

2. 中间件

2.1 什么是中间件

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

2.2 中间件的基本使用

// 引入 express 框架
const express = require('express')

// 创建网站服务器
const app = express();

app.get('/request', (req, res, next) => {
    req.name = 'zhangsan';
    next(); // 向下执行
})

app.get('/request', (req, res)=> {
    res.send(req.name);
})

// 监听端口
app.listen(3000);
console.log('网站服务器启动成功');

2.3 app.use 中间件用法

app.use 匹配所有的请求方式,可以直接传入请求处理函数,代表接收所有的请求。

// 引入 express 框架
const express = require('express')

// 创建网站服务器
const app = express();

// 接收所有的请求的中间件
app.use((req, res, next) => {
    console.log('请求走了 app.use 中间件');
})

// 当客户端访问 /request 请求的时候走当前中间件
app.use('/request', (req, res, next) => {
    console.log('请求走了 app.use /request 中间件 ');
})

app.get('/request', (req, res, next) => {
    req.name = 'zhangsan';
    next();
})

app.get('/request', (req, res)=> {
    res.send(req.name);
})

// 监听端口
app.listen(3000);
console.log('网站服务器启动成功');

在这里插入图片描述
可以发现网页在转圈
在这里插入图片描述
控制台输出结果见上图,说明后面的中间件没有走。

  • 修改程序,在程序中加入 next()
// 引入 express 框架
const express = require('express')

// 创建网站服务器
const app = express();

// 接收所有的请求的中间件
app.use((req, res, next) => {
    console.log('请求走了 app.use 中间件');
    next();
})

// 当客户端访问 /request 请求的时候走当前中间件
app.use('/request', (req, res, next) => {
    console.log('请求走了 app.use /request 中间件 ');
    next();
})

app.get('/request', (req, res, next) => {
    req.name = 'zhangsan';
    next();
})

app.get('/request', (req, res)=> {
    res.send(req.name);
})

// 监听端口
app.listen(3000);
console.log('网站服务器启动成功');

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

  • 再加入 /list 路由
// 引入 express 框架
const express = require('express');

// 创建网站服务器
const app = express();

// 接收所有的请求的中间件
app.use((req, res, next) => {
    console.log('请求走了 app.use 中间件');
    next();
})

// 当客户端访问 /request 请求的时候走当前中间件
app.use('/request', (req, res, next) => {
    console.log('请求走了 app.use /request 中间件 ');
    next();
})

app.get('/list', (req, res) => {
    res.send('/list');
})

app.get('/request', (req, res, next) => {
    req.name = 'zhangsan';
    next();
})

app.get('/request', (req, res)=> {
    res.send(req.name);
})

// 监听端口
app.listen(3000);
console.log('网站服务器启动成功');

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

2.4 中间件应用

  1. 路由保护:
    客户端在访问需要登录的页面时,可以先使用中间件判断用户登录状态,用户如果未登录,则拦截请求,直接响应,禁止用户进入需要登录的页面。
// 引入 express 框架
const express = require('express')

// 创建网站服务器
const app = express();

app.use('/admin', (req, res, next) => {
    // 用户没有登录
    let isLogin = false;
    // 如果用户登录
    if (isLogin) {
        // 让请求继续向下执行
        next();
    } else {
        // 如果用户没有登录,直接对客户端作出响应
        res.send('您还没有登录,无法访问当前页面');
    }
})


app.get('/admin', (req, res) => {
    res.send('您已登录 可以访问当前页面')
})

// 监听端口
app.listen(3000);
console.log('网站服务器启动成功');

在这里插入图片描述
如果将 let isLogin = false 改为:

let isLogin = true;

在这里插入图片描述

  1. 网站维护公告
    在所有路由最上面定义接收所有请求的中间件,直接为客户端做出响应,网站正在维护中。
// 引入 express 框架
const express = require('express')

// 创建网站服务器
const app = express();

app.use((req, res, next) => {
    res.send('当前网站正在维护...');
})

app.use('/admin', (req, res, next) => {
    // 用户没有登录
    let isLogin = true;
    // 如果用户登录
    if (isLogin) {
        // 让请求继续向下执行
        next();
    } else {
        // 如果用户没有登录,直接对客户端作出响应
        res.send('您还没有登录,无法访问当前页面');
    }
})


app.get('/admin', (req, res) => {
    res.send('您已登录 可以访问当前页面')
})

// 监听端口
app.listen(3000);
console.log('网站服务器启动成功');

在这里插入图片描述

  1. 自定义404页面
// 引入 express 框架
const express = require('express')

// 创建网站服务器
const app = express();

app.use('/admin', (req, res, next) => {
    // 用户没有登录
    let isLogin = true;
    // 如果用户登录
    if (isLogin) {
        // 让请求继续向下执行
        next();
    } else {
        // 如果用户没有登录,直接对客户端作出响应
        res.send('您还没有登录,无法访问当前页面');
    }
})


app.get('/admin', (req, res) => {
    res.send('您已登录 可以访问当前页面')
})


app.use((req, res, next) => {
    // 为客户端响应404状态码以及提示信息
    res.status(404).send('当前访问的页面是不存在的');
})
// 监听端口
app.listen(3000);
console.log('网站服务器启动成功');

在这里插入图片描述

2.5 错误处理中间件

在程序执行的过程中,不可避免的会出现一些无法预料的错误,比如读取文件失败,数据库连接失败。

错误处理中间件是一个集中处理错误的地方

  • 例如显示服务器错误:
app.use((err, req, res, next) => {
    res.status(500).send('服务器发生错误');
})
  • 基本实例
// 引入 express 框架
const express = require('express')

// 创建网站服务器
const app = express();

app.get('/index', (req, res) => {
    // 创建一个错误实例并抛出
    throw new Error('程序发生了未知错误');
})

// 错误处理中间件
app.use((err, req, res, next) => {
    res.status(500).send(err.message);
})

// 监听端口
app.listen(3000);
console.log('网站服务器启动成功');

在这里插入图片描述
当程序出现错误时,调用 next()方法,并且将错误信息通过参数的形式传递给 next()方法,即可触发错误处理中间件。
在这里插入图片描述

  • 基本实例
// 引入 express 框架
const express = require('express')

// 引入文件模块
const fs = require('fs');

// 创建网站服务器
const app = express();

app.get('/index', (req, res, next) => {
    // 创建一个错误实例并抛出
    // throw new Error('程序发生了未知错误');
    fs.readFile('./demo.txt', 'utf8', (err, result) => {
        if (err != null) {
            // 文件读取失败 向下传递错误对象
            next(err);
        } else {
            // 文件读取成功
            res.send(result);
        }
    })
    // res.send('程序正常')
})

// 错误处理中间件
app.use((err, req, res, next) => {
    res.status(500).send(err.message);
})

// 监听端口
app.listen(3000);
console.log('网站服务器启动成功');

demo.txt 的文件时不存在的,读取失败后会将错误对象通过 next ()方法传递给错误处理中间件,显示相应的错误信息。

在这里插入图片描述

2.6 捕获错误

在 node.js中,异步API的错误信息都是通过回调函数获取的,支持 Promise 对象的异步API发生错误可以通过catch方法捕获。

try catch 可以捕获异步函数以及其他同步代码执行过程中发生的错误,但是不能捕获其他类型的错误(回调函数的错误、Promise对象的错误)。
在这里插入图片描述

  • 基本实例
// 引入 express 框架
const express = require('express')

// 引入文件模块
const fs = require('fs');

const promisify = require('util').promisify;
const readFile = promisify(fs.readFile);

// 创建网站服务器
const app = express();

app.get('/index', async (req, res, next) => {
    try {
        await readFile('./aaa.js');
    } catch (ex) {
        // 传递错误信息
        next(ex);
    }
})

// 错误处理中间件
app.use((err, req, res, next) => {
    res.status(500).send(err.message);
})

// 监听端口
app.listen(3000);
console.log('网站服务器启动成功');

在这里插入图片描述

3. express 请求处理

3.1 构建模块化路由

在这里插入图片描述

  1. 构建模块化路由的基础语法
// 引入 express 框架
const express = require('express');
// 创建网站服务器
const app = express();
// 创建路由对象
const home = express.Router();
// 为路由对象匹配请求路径
app.use('/home', home);
// 创建二级路由
home.get('/index', (req, res) => {
    res.send('欢迎来到博客首页');
})

// 监听端口
app.listen(3000);
console.log('服务器开启成功');

在这里插入图片描述

  • 如何构建模块化路由
    在这里插入图片描述

  • 基础案例

    在 入口文件 app.js 文件的同级目录新建 route 文件夹
    在 route 文件夹下 新建 home.js 文件 以及 admin.js 文件

    home.js:

const express = require('express');

const home = express.Router();

home.get('/index', (req, res) => {
    res.send('欢迎来到博客首页页面');
});

// 导出 home 这个路由对象
module.exports = home;

admin.js:

const express = require('express');

const admin = express.Router();

admin.get('/index', (req, res) => {
    res.send('欢迎来到博客管理页面');
});

// 导出 admin 这个路由对象
module.exports = admin;

app.js:

// 引入 express 框架
const express = require('express');

// 创建网站服务器
const app = express();

const home = require('./route/home');
const admin = require('./route/admin');

app.use('/home', home);
app.use('/admin', admin);

// 监听端口
app.listen(3000);
console.log('服务器开启成功');

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

  1. 在 route 文件夹中构建不同的路由模块,放在不同的文件中
  2. 通过module.exports 将不同路由模块的路由对象导出
  3. 在 app.js 文件中通过 require 将不同路由模块的路由对象导入,同时对导入的路由进行路由匹配

3.2 GET参数的获取

Express 框架中使用 req.query 即可 获取GET参数 ,框架内部会将GET参数转换为对象并返回。
在这里插入图片描述

// 引入 express 框架
const express = require('express');
// 创建网站服务器
const app = express();

app.get('/index', (req, res) => {
    // req.query 获取请求参数
    res.send(req.query)
})

// 监听端口
app.listen(3000);
console.log('服务器开启成功');

在浏览器的地址栏中输入:

 http://localhost:3000/index

浏览器页面显示的是一个空对象,这是因为我们没有给GET请求地址传参数.
在这里插入图片描述
在浏览器的地址栏中输入:

 http://localhost:3000/index?name=zhangbing&age=20&gender=男

可以看到请求参数为对象:
在这里插入图片描述

3.3 POST参数的请求

Express 中接收 POST请求参数 需要借助第三方包 body-parser
在这里插入图片描述
app.js:


// 引入 express 框架
const express = require('express');
const bodyParser = require('body-parser');
// 创建网站服务器
const app = express();
// 拦截所有请求
// extended: false  方法内部使用 querystring 模块处理请求参数的格式
// extended: true   方法内部使用第三方模块 qs 来处理请求参数的格式
app.use(bodyParser.urlencoded({extended: false}));

app.post('/add', (req, res) => {
    res.send(req.body);
})

// 监听端口
app.listen(3000);
console.log('服务器开启成功');

post.html 表单数据通过post方法提交

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="http://localhost:3000/add" method="post">
        <input type="text" name="username">
        <input type="password" name="password">
        <input type="submit">
    </form>
</body>
</html>

打开 post.html 文件,在表单中输入数据:
在这里插入图片描述
点击表单中的提交按钮,可以看到页面跳转到了 http://localhost:3000/add 页面,同时以对象的形式显示了提交的数据:
在这里插入图片描述

3.4 app.use()方法的进一步理解

在上面获取post请求参数的方法中,我们使用了以下的代码:

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

这行代码应该如何理解呢?且看我细细到来!

  • app.use()调用外部定义的函数的小例子
// 引入 express 框架
const express = require('express');
const bodyParser = require('body-parser');
// 创建网站服务器
const app = express();

// 拦截所有的请求
app.use(fn ());

function fn () {
    return function (req, res, next) {
        console.log(req.method);
        next();
    }
}

app.get('/', (req, res) => {
    // 接收 post 请求参数
    res.send('ok');
})

app.post('/add', (req, res) => {
    res.send(req.body);
})

// 监听端口
app.listen(3000);
console.log('服务器开启成功');

在这里插入图片描述
在这里插入图片描述
可以看到返回的函数被调用了,这些做有什么好处呢?
好处就是我们可以在调用 fn 函数的同时,向 fn 内部传递一些额外的参数,在请求处理函数内部可以根据这个参数改变请求处理函数的行为。可以看一下下面的例子:

// 引入 express 框架
const express = require('express');
const bodyParser = require('body-parser');
// 创建网站服务器
const app = express();

app.use(fn ({a: 1}));

function fn (obj) {
    return function (req, res, next) {
        if (obj.a == 1) {
            console.log(req.url);
        } else {
            console.log(req.method);
        }
        next();
    }
}

app.get('/', (req, res) => {
    // 接收 post 请求参数
    res.send('ok');
})

app.post('/add', (req, res) => {
    res.send(req.body);
})


// 监听端口
app.listen(3000);
console.log('服务器开启成功');

fn 的形参为一个对象,我们给 fn 函数传递了一个实参 {a: 1},可以看到:

在这里插入图片描述
在这里插入图片描述
很显然,控制台打印出了请求地址中的 ‘/’
现在如果将fn 的实参修改为 {a: 2}
则请求处理函数的行为也发生了改变
在这里插入图片描述
在这里插入图片描述
此时控制台打印的结果不是‘/’,而是请求的方式 GET。

Express框架使用
01-07
使用npm安装express npm install express -S 命令如下: C:\Users\Administrator>cd /d E:/node E:\node>mkdir express E:\node>cd express E:\node\express>npm install express -S npm WARN node@1.0.0 No description npm WARN node@1.0.0 No repository field. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.
Express框架
就是记笔记用的
04-16 1755
官方定义:路由确定了应用程序如何响应客户端对特定端点的请求中间件(MiddleWare)本质是一个回调函数中间件可以像路由回调一样访问请求对象,响应对象(response)每一个请求到达服务端之后,都会执行全局中间件函数// 记录每个请求的url 与 IP地址 const express = require("express");// 声明中间件函数 function recordMiddleware(req , res , next) {// 获取url,ip let {
express使用ES6 - dtdxrk - 博客园
最新发布
m0_60635035的博客
03-16 838
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】大厂面试问深度,小厂面试问广度,如果有同学想进大厂深造一定要有一个方向精通的惊艳到面试官,还要平时遇到问题后思考一下问题的本质,找方法解决是一个方面,看到问题本质是另一个方面。还有大家一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。6371)**
Node.jsExpress框架的基本使用
m0_62360527的博客
03-17 5435
官方给出的概念:Express是基于Node.js平台,快捷,开放,极简的Web开发框架通俗的理解,Express的作用和Node.js内置的http模块类似,是专门用来创建Web服务器的。Express的本质:就是一个npm上的第三包,提供了快速创建Web服务器的便捷方法。express官网广义上来讲,路由就是映射关系。中间件,特指业务流程的中间处理环节。可以通过如下的方式,定义一个最简单的中间件函数//定义一个简单的中间件函数console.log('这是最简单的中间件函数');
express框架实例源码
06-16
express框架实例源码,不涉及数据库
使用 Express 框架搭建小程序后端服务器
03-29
摘自好奇猫使用Express框架搭建小程序后端服务器,专门为小程序提供 RESTful API 服务开发环境需要的软件包版本:Node.js版本 v7.2.0npm版本 v3.10.9MongoDB版本 v3.0.6安装和启动 MongoDB 数据库MongoDB 数据库的安 ...       摘自好奇猫 使用 Express 框架搭建小程序后端服务器, 专门为小程序提供 RESTful API 服务 开发环境需要的软件包版本: Node.js 版本 v7.2.0 npm 版本 v3.10.9 MongoDB 版本 v3.0.6 安装和启动 MongoDB 数据库 MongoDB 数据库的安
express框架
lxllxl211的博客
04-03 1058
可以使用 app.use0 连续定义多个全局中间件。客户端请求到达服务器之后,会按照中间件。
01-express框架使用
zyq的博客
04-18 476
例 记录每个请求的url,ip,将信息保存 access.log中。相当于服务器的访问日志,便于查看请求的来源,可以精准的定位问题。例 针对/admin /setting 的请求,要求携带 code=2023 参数,如未携带则提示 目标错误。简而言之,即使将路由规则拆分到不同文件,最后在总文件require,并use,这与使用中间件函数一样。//主要通过判断请求头中的refefer的host是否为 当前的地址。//检测请求头中的referer是否为127.0.0.1。的一种技术,分离html和js的。
第三方数据采集卡在LabVIEW中使用Express VI简化编程范例
ewb_topic的博客
11-30 4158
什么是Express VI? Express VI是NI LabVIEW中提供的快捷的编程方法,用很少量的操作替代复杂、底层的代码,常见的如:DAQ助手ExpressVI和仿真信号Express VI。 DAQ助手是干什么用的? 在NI的数据采集中,DAQ助手是简洁入门的数据采集编程工具。DAQ助手的Express VI确切的说不是编程,而是通过用户设置一些与数据采集硬件、编程需求相关的参数,又L...
使用基础node.jsexpress框架在连接数据库的过程中,出现Error: Cannot enqueue Handshake after invoking quit.的解决方案
田螺姑娘的博客
08-03 559
使用基础node.jsexpress框架在连接数据库的过程中,出现Error: Cannot enqueue Handshake after invoking quit.的解决方案 情形如下: 在第一次连接数据库的时候,没有问题。第二次连接时候直接断开连接,并报以上错误。 原因是:在请求数据库时,发出connection.connect(),且每次都会connection.end()。但是mysql.createConnection却仅仅只创建了一次。下一次请求的时候并未创建新的连接。 解决方案 最简
node.js express框架简介与实现
10-16
主要介绍了node.js express框架简介与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Node.js Express 框架
01-03
Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。 使用 Express 可以快速地搭建一个完整功能的网站。 Express 框架核心特性: 可以设置中间件来响应 HTTP 请求。 定义了路由表用于执行不同的 HTTP 请求动作。 可以通过向模板传递参数来动态渲染 HTML 页面。 安装 Express 安装 Express 并将其保存到依赖列表中: $ cnpm install express --save 以上命令会将 Expre
node.js express框架
02-04
express框架使用PM2部署后台项目
express框架使用jwt实现验证的方法
10-16
主要给大家介绍了关于express框架使用jwt实现验证的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用express具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
node+express框架中连接使用mysql(经验总结)
01-20
最近在学习node.js,做了一个练手项目,使用node.js+express框架,配合mysql数据库和前端vue框架开发一个多人文档编辑系统。 node.js环境下express+mysql的服务端项目示例 首先是环境搭建: node环境下 $ npm install -g express-generator $ express -e project 进入项目文件根目录安装依赖模块 $ npm install $ DEBUG=node-blog:* npm start 看看项目目录都有什么 看看生成的工程目录里面都有什么, bin:存放可执行文件 node_modules:存放 pa
Express框架.docx
07-09
Express框架简介 Express中间件 Express框架请求处理 express-art-template模板引擎 ​​​​
express框架使用session的方法
10-16
主要介绍了express框架使用session的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
express框架使用
07-14
Express 是一个基于 Node.js 平台的 Web 应用开发框架,它提供了一系列强大的功能,使得构建 Web 应用变得更加容易。 下面是一个简单的 Express 应用的例子: ```javascript const express = require('express') const app = express() app.get('/', function(req, res) { res.send('Hello World!') }) app.listen(3000, function() { console.log('Example app listening on port 3000!') }) ``` 上面的代码创建了一个 Express 应用,并在根路径上定义了一个 GET 请求处理函数,当用户在浏览器中访问 http://localhost:3000 时,会返回 "Hello World!" 字符串。 使用 Express 开发 Web 应用的一般步骤如下: 1. 安装 Express:可以使用 npm 进行安装: ``` npm install express ``` 2. 引入 Express 模块:在代码中引入 Express 模块,可以使用 `require('express')` 来引入。 3. 创建应用对象:通过调用 `express()` 函数来创建一个 Express 应用对象。 4. 定义路由:使用 `app.get()`、`app.post()`、`app.put()`、`app.delete()` 等函数来定义路由,这些函数接受两个参数,第一个参数是路由路径,第二个参数是请求处理函数,请求处理函数会在对应的路由被请求时被调用。 5. 启动服务器:使用 `app.listen()` 函数来启动服务器,该函数接受两个参数,第一个参数是监听的端口号,第二个参数是一个回调函数,用于在服务器启动时执行一些操作。 这些是 Express 的基本使用方法,当然还有很多高级功能,需要根据实际需求进行学习和使用

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
113
原创
266
点赞
1271
收藏
201
粉丝
关注
私信
写文章

热门文章

  • Express 框架的使用(详细) 35647
  • 获取POST请求的参数 5773
  • 第八讲:类数组 4482
  • CSS实现0.5px边框 2225
  • 第六讲:JSON.stringify 方法 1933

分类专栏

  • Vue3 1篇
  • Python 2篇
  • 文本分类 1篇
  • Leetcode 3篇
  • javascript核心原理 10篇
  • JS面试 24篇
  • 前端性能优化 7篇
  • 计算机网络(HTTP) 6篇
  • 数据结构与算法 13篇
  • JavaScript 28篇
  • Node.js 12篇
  • React 2篇
  • 笔记 3篇
  • Vue.js 5篇
  • CSS面试 3篇
  • Webpack 6篇
  • HTML面试 4篇
  • Ajax 7篇
  • 转载 1篇

最新评论

  • 构造函数和原型(结合例子,详细!)

    happygirl_pp: 讲的很好,一下就明白了,楼主给力

  • Express 框架的使用(详细)

    妖王辣妹儿: 斯巴拉西

  • Express 框架的使用(详细)

    迷途羔羊xfl: 学习express的第一篇文章 写的太棒了

  • 构造函数和原型(结合例子,详细!)

    Spidermam: 好美丽的文章,那我就华丽的点个赞吧!

  • Express 框架的使用(详细)

    WuZhenXingZhe: express解析boundary,方便指点一下吗?

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 将jupyter下的文件全部压缩成一个压缩包
  • 文本分类之textCNN的原理
  • conda的使用
2021年70篇
2020年53篇

目录

目录

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司汉中网络推广公司枣庄推广网站推荐丹东设计公司网站公司霍邱网络推广报价梧州网络广告推广哪家好咸阳设计公司网站报价喀什百度爱采购多少钱杭州百度竞价包年推广公司坑梓网络营销多少钱邵阳企业网站改版价格泸州企业网站建设价格黔南优秀网站设计宿迁百度爱采购公司开封SEO按效果付费哈密关键词按天计费推荐商洛百度seo太原SEO按效果付费公司沧州企业网站建设推荐海南网站设计模板哪家好大理建设网站哪家好德宏百度网站优化报价果洛网站排名优化公司广州企业网站设计哪家好山南阿里店铺运营呼和浩特高端网站设计报价东营百姓网标王报价中山企业网站制作公司漳州建网站多少钱通化营销型网站建设公司湘西企业网站建设推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化