页面跳转流程图/seo外链专员工作要求

页面跳转流程图,seo外链专员工作要求,做网站联系客服按钮代码,鞍山58路公交车路线文章目录 🌍一. ES6 新特性❄️1. ES6 基本介绍❄️2. 基本使用2.1 let 声明变量2.2 const 声明常量/只读变量2.3 解构赋值2.4 模板字符串2.5 对象拓展运算符2.6 箭头函数 🌍二. Promise❄️1. 基本使用❄️2. 如何解决回调地狱问题2.1回调地狱问题2.2 使…

在这里插入图片描述

文章目录

    • 🌍一. ES6 新特性
      • ❄️1. ES6 基本介绍
      • ❄️2. 基本使用
        • 2.1 let 声明变量
        • 2.2 const 声明常量/只读变量
        • 2.3 解构赋值
        • 2.4 模板字符串
        • 2.5 对象拓展运算符
        • 2.6 箭头函数
    • 🌍二. Promise
      • ❄️1. 基本使用
      • ❄️2. 如何解决回调地狱问题
        • 2.1回调地狱问题
        • 2.2 使用 Promise
        • 2.3Promise 的优势
    • 🌍三. 模块化编程
      • ❄️1. 基本介绍
      • ❄️2. CommonJS 模块编程
      • ❄️3. ES6 模块编程
        • 1. ES6模块的关键特性
        • 2. 实践中的注意事项


🙋‍♂️ 作者:@whisperrr.🙋‍♂️

👀 专栏:JavaWeb👀

💥 标题:【JavaWeb13】了解ES6的核心特性,对于提高JavaScript编程效率有哪些潜在影响?💥

❣️ 寄语:比较是偷走幸福的小偷❣️

🌍一. ES6 新特性

首先给大家推荐俩个学习ES6的网址。

ECMA International 官方网站:这个网站提供了 ES6 的官方文档,详细介绍了 ES6 的所有特性和规范。这是一个权威且详尽的学习资源,适合那些希望深入了解语言规范的开发者。

  • 网址:https://262.ecma-international.org/6.0/

阮一峰的 ES6 教程:这是由阮一峰编写的一本关于 ES6 的入门书籍,广受前端开发者欢迎。这本书以简单易懂的方式介绍了 ES6 的各种特性,非常适合初学者和希望快速掌握 ES6 的开发者。

  • 网址:https://es6.ruanyifeng.com/#docs/let

❄️1. ES6 基本介绍

1.ES6 是什么?

  1. ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准, 2015 年 6 月发布。
  2. ES6 设计目标:达到 JavaScript 语言可以用来编写复杂的大型程序,成为企业级开发语言
  3. ECMAScript 和 JavaScript 的关系:ECMAScript 是 JavaScript 的规范/规则,JavaScript 是ECMAScript 的一种实现

❄️2. 基本使用

2.1 let 声明变量

在ES6(ECMAScript 2015)中,let 关键字被引入用来声明变量,它的用法与 var 类似,但有以下几个重要的区别:

  1. 块级作用域let 声明的变量只在它所在的代码块内有效。
  2. 不存在变量提升let 声明的变量不会被提升到作用域的顶部。
  3. 暂时性死区:在声明之前就使用 let 声明的变量会导致ReferenceError错误。

下面是 let 声明变量的几种基本用法:

基本声明

let a;
let b = 10;

块级作用域示例

if (true) {let message = "Hello, World!";console.log(message); // "Hello, World!"
}
// 在这里访问 message 会报错,因为 message 是在 if 块中声明的

不存在变量提升

console.log(a); // 报错:ReferenceError: a is not defined
let a = 'I am not hoisted';

只能声明一次,

let num2 = 600;
let num2 = 900;

num2已经声明过了,再次使用let声明会报错
Uncaught SyntaxError: redeclaration of let num2

暂时性死区示例

var tmp = 123;
if (true) {tmp = 'abc'; // ReferenceError: Cannot access 'tmp' before initializationlet tmp;
}

在这个例子中,尽管 tmplet tmp; 声明之前已经被声明为一个全局变量,但在 let 声明之前访问 tmp 会导致错误,因为在 if 块中的 tmp 的暂时性死区内,它还未被声明。
使用 let 可以帮助避免JavaScript中常见的一些错误,并且使得代码更加安全和易于理解。

2.2 const 声明常量/只读变量

在ES6(ECMAScript 2015)中,const 关键字用于声明一个只读的常量。这意味着一旦一个变量被声明为常量,它的值就不能再被改变。下面是 const 声明常量的一些基本用法和规则:

基本声明

const PI = 3.14159;

常量规则

  1. 必须初始化:声明一个常量时,必须同时初始化它的值,否则会报错。
    const FOO; // SyntaxError: Missing initializer in const declaration
    
  2. 不可重新赋值:一旦声明,常量的值就不能再被改变。
    const MAX_SIZE = 100;
    MAX_SIZE = 200; // TypeError: Assignment to constant variable.
    
2.3 解构赋值

1.基本介绍

  1. 解构赋值是对赋值运算符的扩展
  2. 是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值
  3. 主要有两种形式: 数组解构和对象解构

2.数组解构

ES6(ECMAScript 2016)引入了数组解构(Array Destructuring),它是一种表达式,可以方便地从数组中提取值并赋给变量。数组解构的语法形式是在一个赋值操作符的左侧使用一个数组字面量。

以下是数组解构的一些基本用法:

//第一种方式
let arr = [1, 2, 3];
let [a, b, c] = arr;
//第二种方式
let [num1, num2, num3] = [100, 200, 300];

3.对象解构

ES6(ECMAScript 2015)同样引入了对象解构(Object Destructuring),它允许你将对象中的属性直接赋值给变量。对象解构的语法是在赋值操作符的左侧使用一个对象字面量。

以下是对象解构的一些基本用法:

//第一种方式
let monster = {name: '牛魔王', age: 800};
let {name, age} = monster;
//第二种方式
let {name, age} = {name: '牛魔王', age: 800};//也可以当做形参
function f1({name, age}) {
console.log("f1-name=", name, " ", "f1-age=", age)
}
f1(monster);

1.把 monster 对象的属性, 赋值给{name,age}
2.{name,age} 的取名 name 和 age 要和 monster 对象的属性名保持一致
3.使用{} 包括, 不要使用[]
4.{name,age} 顺序是无所谓

2.4 模板字符串
  • 模板字符串使用反引号 ` 字符串包裹
  • 可作为普通字符串
  • 可用来定义多行字符串,即可以将换行字符串原生输出
  • 字符串插入变量和表达式, 使用 ${}
  • 字符串中调用函数
let str1 = `for(int i = 0;i < 10;i++){
System.out.println("i="+i);
}`;let str2 = `教育名称=${name}`;
let str3 = `1+2=${1 + 2}`;
2.5 对象拓展运算符

对象扩展运算符(Spread Operator),用三个点(…)表示,允许你将一个对象的可枚举属性复制到另一个对象中。这在合并对象、传递参数等场景中非常有用。

合并对象,你可以使用扩展运算符来合并两个或多个对象。

const obj1 = { a: 1, b: 2 }; 
const obj2 = { b: 3, c: 4 }; 
const mergedObj = { …obj1, …obj2 }; 
console.log(mergedObj); // { a: 1, b: 3, c: 4 }

在这个例子中,obj2 的属性 b 覆盖了 obj1 中的 b 属性。

2.6 箭头函数

1.基本介绍

  1. 箭头函数提供更加简洁的函数书写方式。
  2. 基本语法是:(参数列表) => { 函数体 }
  3. 箭头函数没有参数或有多个参数,要用 () 括起来,箭头函数只有一个参数, 可以省略()
  4. 箭头函数函数体有多行语句,用 {} 包裹起来,表示代码块
  5. 函数体只有一行语句,并且需要返回结果时,可以省略 {}, 结果会自动返回
  6. 箭头函数多用于匿名函数的定义
let f2 = (n, m) => {
var res = 0
for (var i = n; i <= m; i++) {
res += i
}
return res
};

🌍二. Promise

❄️1. 基本使用

1.Promise 基本介绍

  1. 传统的 Ajax 异步调用在需要多个操作的时候,会导致多个回调函数嵌套,导致代码不够直观,就是常说的 Callback Hell
  2. 为了解决上述的问题,Promise 对象应运而生,在 EMCAScript 2015 当中已经成为标准
  3. Promise 是异步编程的一种解决方案。
  4. 从语法上说,Promise 是一个对象,从它可以获取异步操作的消息
  5. 一句话: Promise 是异步编程的一种解决方案, 可以解决传统 Ajax 回调函数嵌套问题

2.需求分析/图解

在这里插入图片描述3.执行效果在这里插入图片描述

❄️2. 如何解决回调地狱问题

下面让我们详细探讨一下如何使用 Promise 来解决传统 Ajax 请求中的嵌套回调问题。

2.1回调地狱问题

在传统的异步编程模式中,如果需要按顺序执行多个异步操作(比如多个 Ajax 请求),通常会写出如下嵌套回调的代码:

// 假设我们使用的是 jQuery 的 $.ajax 方法
$.ajax({url: 'url1',success: function(response1) {// 处理 response1$.ajax({url: 'url2',success: function(response2) {// 处理 response2$.ajax({url: 'url3',success: function(response3) {// 处理 response3// 如果还有更多操作,继续嵌套...},error: function(error3) {// 处理 error3}});},error: function(error2) {// 处理 error2}});},error: function(error1) {// 处理 error1}
});

这种代码结构被称为“回调地狱”,因为随着异步操作数量的增加,代码变得越来越难以阅读和维护。

2.2 使用 Promise

Promise 提供了一种更加优雅的方式来处理异步操作。以下是使用 Promise 改写上述代码的步骤:

  1. 创建 Promise 对象:对于每个异步操作,创建一个返回 Promise 对象的函数。
function fetchUrl(url) {return new Promise((resolve, reject) => {$.ajax({url: url,success: function(response) {resolve(response);},error: function(error) {reject(error);}});});
}
  1. 链式调用 .then() 方法:使用 .then() 方法来处理每个 Promise 的成功结果,并在每个 .then() 方法中返回一个新的 Promise,以便链式调用。
fetchUrl('url1').then(response1 => {// 处理 response1// 可以返回新的 Promise 或值return fetchUrl('url2');}).then(response2 => {// 处理 response2// 继续返回新的 Promisereturn fetchUrl('url3');}).then(response3 => {// 处理 response3}).catch(error => {// 处理任何在执行过程中出现的错误});

在上面的代码中,每个 fetchUrl 函数调用都返回一个新的 Promise 对象。当这个 Promise 成功解决(resolved)时,.then() 方法会被调用,并传入解决值。如果 Promise 被拒绝(rejected),.catch() 方法会被调用,并传入拒绝的原因。

2.3Promise 的优势
  • 代码扁平化:Promise 通过链式调用来避免嵌套回调,使代码更加扁平化。
  • 更好的错误处理.catch() 方法可以捕获链中任何 Promise 的错误,而不是在每个回调中分别处理。
  • 可读性和可维护性:链式调用使得异步代码的流程更加清晰,易于理解和维护。
    通过使用 Promise,我们可以编写更加清晰和结构化的异步代码,避免了回调地狱,并提供了更强大的错误处理机制。

🌍三. 模块化编程

❄️1. 基本介绍

  1. 传统非模块化开发有如下的缺点:(1)命名冲突 (2)文件依赖
  2. Javascript 代码越来越庞大,Javascript 引入模块化编程,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块
  3. Javascript 使用"模块"(module)的概念来实现模块化编程, 解决非模块化编程问题

2.模块化编程原理示意图
在这里插入图片描述

❄️2. CommonJS 模块编程

  • 每个 js 文件就是一个模块,有自己的作用域。在文件中定义的变量、函数、类/对象,都是私有的,对其他 js 文件不可见
  • CommonJS 使用 module.exports={} / exports={}导出 模块 , 使用 let/const 名称 =require("xx.js")导入模块
    在这里插入图片描述

CommonJS 是一种模块规范,最初被用于服务器端的 JavaScript 环境,尤其是 Node.js。它定义了一种简单的方式来创建和消费模块。以下是 CommonJS 模块编程的基本概念和用法:

1.模块定义

在 CommonJS 中,一个模块是一个文件。模块可以通过 module.exports 对象来导出值,也可以通过 exports 变量来导出多个成员。以下是导出一个函数的例子:

// myModule.js
function myFunction() {// ...
}
module.exports = myFunction;

或者,如果你想要导出多个函数或对象:

// myModule.js
function myFunction() {// ...
}
function anotherFunction() {// ...
}
exports.myFunction = myFunction;
exports.anotherFunction = anotherFunction;

2.模块引用
要使用一个模块,你可以使用 require 函数来引入它。require 函数会返回模块导出的对象。

// main.js
const myModule = require('./myModule');
myModule.myFunction();

如果模块导出的是一个函数或单个值,你可以直接使用它:

// main.js
const myFunction = require('./myModule');
myFunction();

3.模块缓存
Node.js 会缓存通过 require 加载的模块。这意味着每次调用 require 时,如果模块已经被加载过,它会返回缓存的模块,而不是重新加载。

特点

  • 同步加载:CommonJS 模块是同步加载的,这意味着模块加载时会阻塞后续代码的执行,直到模块加载完成。
  • 循环依赖:CommonJS 可以处理模块间的循环依赖,但是需要小心处理,因为可能会出现只部分加载的情况。

以下是一个简单的 CommonJS 模块化编程的例子:

// math.js
exports.add = function(a, b) {return a + b;
};
exports.subtract = function(a, b) {return a - b;
};
// main.js
const math = require('./math');
console.log(math.add(1, 2)); // 输出 3
console.log(math.subtract(5, 2)); // 输出 3

在这个例子中,math.js 模块导出了两个函数,main.js 通过 require 引入了这个模块,并使用了它的功能。
CommonJS 模块规范在 Node.js 和一些浏览器环境中得到了广泛的支持,但是在浏览器环境中,通常使用 ES6 Modules 或 AMD 作为模块化的解决方案。

❄️3. ES6 模块编程

  • ES6 使用
    (1)export {名称/对象/函数/变量/常量}
    (2) export 定义=
    (3) export default {}导出模块
  • 使用 import {} from "xx.js" / import名称 form "xx.js" 导入模块
    在这里插入图片描述
    ES6模块化编程是JavaScript语言的一个重要进步,它为开发者提供了一种官方的、标准化的方式来组织和重用代码。在此之前,JavaScript社区已经尝试了多种模块化方案,如AMD、CommonJS等,但它们都是非标准的,或者在某些环境中有限制。ES6模块的引入,标志着JavaScript在语言层面上对模块化的正式支持。
1. ES6模块的关键特性
  1. 导出(Export)与导入(Import)
    ES6模块通过exportimport关键字来管理模块的对外接口和依赖关系。这使得模块之间的交互变得直观且易于理解。你可以导出单个变量、函数、类或者整个模块对象,也可以导入一个模块中的特定部分或者整个模块。
  2. 默认导出(Default Export)
    默认导出允许一个模块导出一个没有名字的值,这在使用模块时提供了更大的灵活性。每个模块只能有一个默认导出,但可以与多个命名导出共存。
  3. 编译时加载
    与CommonJS的运行时加载不同,ES6模块是在编译时进行加载的。这意味着模块的依赖关系在代码执行之前就已经确定,这有助于提高性能并允许进行更多的编译时优化。
  4. 树摇(Tree Shaking)
    由于ES6模块的静态结构,未使用的导出可以在打包过程中被移除,这个过程被称为“树摇”。这有助于减少最终打包文件的体积,提高应用的加载速度。
  5. 命名空间导出(Namespace Export)
    ES6模块还支持命名空间导出,允许你将多个导出聚合到一个对象中。这对于组织大量导出非常有用,可以避免命名冲突。
2. 实践中的注意事项
  • 浏览器支持:虽然现代浏览器支持ES6模块,但在使用时可能需要设置正确的MIME类型,并在<script>标签中使用type="module"
  • 服务器端渲染:在Node.js等服务器端环境中,可能需要使用特定的模块解析策略或转换工具,如Babel,来兼容ES6模块。
  • 打包工具:在实际开发中,通常会使用Webpack、Rollup等打包工具来处理模块依赖,优化生产环境下的代码。
    ES6模块化编程不仅提升了代码的可维护性和可重用性,也为JavaScript的生态系统带来了标准化和一致性。随着现代前端框架和工具链的发展,ES6模块已经成为编写现代JavaScript应用程序的基石。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/70993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《几何原本》命题I.2

《几何原本》命题I.2 从一个给定的点可以引一条线段等于已知的线段。 设 A A A 为给定点&#xff0c; B C BC BC 为给定线段 连接 A B AB AB&#xff0c;作等边 △ A B D \triangle ABD △ABD 以 B B B 为圆心&#xff0c; B C BC BC 为半径作小圆 延长 D B DB DB 交小圆…

java数据结构_Map和Set_9.1

1. 搜索树 1.1 概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有的结点都小于根结点的值若它的右子树不为空&#xff0c;则右子树上所有的结点都大于根结点的值…

蓝桥杯 路径之谜

路径之谜 题目描述 小明冒充 XX 星球的骑士&#xff0c;进入了一个奇怪的城堡。 城堡里边什么都没有&#xff0c;只有方形石头铺成的地面。 假设城堡地面是 nnnn 个方格。如下图所示。 按习俗&#xff0c;骑士要从西北角走到东南角。可以横向或纵向移动&#xff0c;但不能斜着走…

langchain4j+local-ai小试牛刀

序 本文主要研究一下如何本地运行local-ai并通过langchain4j集成调用。 步骤 curl安装 curl https://localai.io/install.sh | sh% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed 100 21509 …

Milvus高性能向量数据库与大模型结合

Milvus | 高性能向量数据库&#xff0c;为规模而构建Milvus 是一个为 GenAI 应用构建的开源向量数据库。使用 pip 安装&#xff0c;执行高速搜索&#xff0c;并扩展到数十亿个向量。https://milvus.io/zh Milvus 是什么&#xff1f; Milvus 是一种高性能、高扩展性的向量数据…

kettle插件-自定义函数-数据脱敏

平常我们在使用kettle抽取数据的时候会涉及到敏感数据邀请脱敏或者进行掩码的需求&#xff0c;今天我们使用自定义函数插件来实现这些需求。 1、将自定义函数插件&#xff08;kettle-func-plugin.zip&#xff09;解压后放到kettle的plugins目录下面&#xff0c;然后重启服务。…

探秘《矩阵之美》:解锁矩阵的无限魅力

在这个数据驱动的时代&#xff0c;矩阵作为数学中的瑰宝&#xff0c;不仅在理论研究中占据核心地位&#xff0c;更在工程技术、计算机科学、物理学、经济学等众多领域发挥着不可替代的作用。今天&#xff0c;让我们通过中科院大学耿修瑞老师&#xff08;中科院空天信息研究院研…

【MySQL】(2) 库的操作

SQL 关键字&#xff0c;大小写不敏感。 一、查询数据库 show databases; 注意加分号&#xff0c;才算一句结束。 二、创建数据库 {} 表示必选项&#xff0c;[] 表示可选项&#xff0c;| 表示任选其一。 示例&#xff1a;建议加上 if not exists 选项。 三、字符集编码和排序…

Vue3实现文件上传、下载及预览全流程详解(含完整接口调用)

文章目录 一、环境准备1.1 创建Vue3项目1.2 安装依赖1.3 配置Element Plus 二、文件上传实现2.1 基础上传组件2.2 自定义上传逻辑&#xff08;Axios实现&#xff09; 三、文件下载实现3.1 直接下载&#xff08;已知文件URL&#xff09;3.2 后端接口下载&#xff08;二进制流&am…

免费使用 DeepSeek API 教程及资源汇总

免费使用 DeepSeek API 教程及资源汇总 一、DeepSeek API 资源汇总1.1 火山引擎1.2 百度千帆1.3 阿里百炼1.4 腾讯云 二、其他平台2.1 华为云2.2 硅基流动 三、总结 DeepSeek-R1 作为 2025 年初发布的推理大模型&#xff0c;凭借其卓越的逻辑推理能力和成本优势&#xff0c;迅速…

千峰React:案例二

完成对html文档还有css的引入&#xff0c;引入一下数据&#xff1a; import { func } from prop-types import ./购物车样式.css import axios from axios import { useImmer } from use-immer import { useEffect } from reactfunction Item() {return (<li classNameacti…

redis的下载和安装详解

一、下载redis安装包 进入redis官网查看当前稳定版本&#xff1a; https://redis.io/download/发现此时的稳定版本是6.2.4&#xff0c; 此时可以去这个网站下载6.2.4稳定版本的tar包。 暂时不考虑不在windows上使用redis&#xff0c;那样将无法发挥redis的性能 二、上传tar…

Python基于Django的网络课程在线学习平台【附源码】

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

第四届大数据、区块链与经济管理国际学术会议

重要信息 官网&#xff1a;www.icbbem.com 时间&#xff1a;2025年3月14-16日 地点&#xff1a;中国-武汉 &#xff08;线上召开&#xff09; 简介 第四届大数据、区块链与经济管理国际学术会议(ICBBEM 2025)&#xff0c;将于2025年3月14-16日在中国湖北省武汉市召开。…

使用Docker Compose部署 MySQL8

MySQL 8 是一个功能强大的关系型数据库管理系统,而 Docker 则是一个流行的容器化平台。结合使用它们可以极大地简化 MySQL 8 的部署过程,并且确保开发环境和生产环境的一致性。 安装 Docker 和 Docker Compose 首先,确保你的机器上已经安装了 Docker 和 Docker Compose。 …

mamba_ssm和causal-conv1d详细安装教程

1.前言 Mamba是近年来在深度学习领域出现的一种新型结构&#xff0c;特别是在处理长序列数据方面表现优异。在本文中&#xff0c;我将介绍如何在 Linux 系统上安装并配置 mamba_ssm 虚拟环境。由于官方指定mamba_ssm适用于 PyTorch 版本高于 1.12 且 CUDA 版本大于 11.6 的环境…

利用 Python 爬虫进行跨境电商数据采集

1 引言2 代理IP的优势3 获取代理IP账号4 爬取实战案例---&#xff08;某电商网站爬取&#xff09;4.1 网站分析4.2 编写代码4.3 优化代码 5 总结 1 引言 在数字化时代&#xff0c;数据作为核心资源蕴含重要价值&#xff0c;网络爬虫成为企业洞察市场趋势、学术研究探索未知领域…

HONOR荣耀MagicBook 15 2021款 独显(BOD-WXX9,BDR-WFH9HN)原厂Win10系统

适用型号&#xff1a;【BOD-WXX9】 MagicBook 15 2021款 i7 独显 MX450 16GB512GB (BDR-WFE9HN) MagicBook 15 2021款 i5 独显 MX450 16GB512GB (BDR-WFH9HN) MagicBook 15 2021款 i5 集显 16GB512GB (BDR-WFH9HN) 链接&#xff1a;https://pan.baidu.com/s/1S6L57ADS18fnJZ1…

c语言实现三子棋小游戏(涉及二维数组、函数、循环、常量、动态取地址等知识点)

使用C语言实现一个三子棋小游戏 涉及知识点&#xff1a;二维数组、自定义函数、自带函数库、循环、常量、动态取地址等等 一些细节点&#xff1a; 1、引入自定义头文件&#xff0c;需要用""双引号包裹文件名&#xff0c;目的是为了和官方头文件的<>区分开。…

Web自动化之Selenium添加网站Cookies实现免登录

在使用Selenium进行Web自动化时&#xff0c;添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为&#xff0c;我们可以将已登录状态的Cookies存储起来&#xff0c;并在下次自动化测试或爬虫任务中直接加载这些Cookies&#xff0c;从而跳过登录步骤。 Cookies简介 …