【JavaWeb】HTMLCSSJavaScript

news2024/12/24 21:40:09

HTML&CSS&JavaScript

文章目录

  • HTML&CSS&JavaScript
  • 一、开发工具及在线帮助文档
  • 二、 HTML
    • 2.1 HTML&CSS&JavaScript的作用
    • 2.2 HTML基础结构
    • 2.3 HTML概念词汇解释
    • 2.4 HTML的语法规则
    • 2.5 常用标签
  • 三、CSS
    • 3.1 引入方式
    • 3.2 CSS选择器
    • 3.3 CSS浮动
    • 3.4 CSS定位
    • 3.5 CSS盒子模型
  • 四、JavaScript
    • 4.1 引入方式
    • 4.2 JS 组成部分
    • 4.3 BOM编程
    • 4.4 DOM编程
      • 4.4.1 获取页面元素的几种方式
      • 4.4.2 操作元素属性值
      • 4.4.3 增删元素
    • 4.5 注意事项及细节
  • 五、注册页面案例

一、开发工具及在线帮助文档

前端工程师比较推崇的一款开发工具就是visual studio code,下载地址为:https://code.visualstudio.com/

插件:

  • Auto Rename Tag 自动修改标签对插件
  • Chinese Language Pack 汉化包
  • HTML CSS Support HTML CSS 支持
  • Intellij IDEA Keybindings IDEA快捷键支持
  • Live Server 实时加载功能的小型服务器
  • open in browser 通过浏览器打开当前文件的插件
  • Prettier-Code formatter 代码美化格式化插件
  • Vetur VScode中的Vue工具插件
  • vscode-icons 文件显示图标插件
  • Vue 3 snipptes 生成VUE模板插件
  • Vue language Features Vue3语言特征插件

在线帮助文档:

http://www.w3school.com.cn

二、 HTML

HTML是Hyper Text Markup Language的缩写。意思是超文本标记语言。它的作用是搭建网页结构,在网页上展示内容

2.1 HTML&CSS&JavaScript的作用

  • HTML 主要用于网页主体结构的搭建
  • CSS 主要用于页面元素美化
  • JavaScript 主要用于页面元素的动态处理

2.2 HTML基础结构

VSCode中创建html文件,输入 ! ,默认补全h5代码

<!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>
    
</body>
</html>

2.3 HTML概念词汇解释

  • 标签:代码中的一个 <> 叫做一个标签,有些标签成对出现,称之为双标签,有些标签单独出现,称之为单标签
  • 属性:一般在开始标签中,用于定义标签的一些特征

  • 文本:双标签中间的文字,包含空格换行等结构

  • 元素:经过浏览器解析后,每一个完整的标签(标签+属性+文本)可以称之为一个元素

2.4 HTML的语法规则

  1. 无论是双标签还是单标签都需要正确关闭
  2. 属性必须有值,值必须加引号,H5中属性名和值相同时可以省略属性值
  3. HTML中不允许自定义标签名,强行自定义则无效
  4. HTML标签不严格区分大小写,但是不能大小写混用

2.5 常用标签

如需参考,强烈推荐看在线文档,参考一些标签中存在的最佳实践来开发。

https://www.w3school.com.cn/html/html5_intro.asp

三、CSS

CSS 层叠样式表(英文全称:(Cascading Style Sheets) 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,简单来说,美化页面

3.1 引入方式

  • 行内式:通过元素开始标签的style属性引入, 样式语法为 样式名:样式值; 样式名:样式值;
  • 内嵌式:写在html中,用 style 标签包裹
  • 连接式/外部样式表:在项目单独创建css样式文件,在head标签中,通过link标签引入外部CSS样式文件
<link href="css/index.css" rel="stylesheet" type="text/css"/>

3.2 CSS选择器

  1. 简单选择器(根据名称、id、类来选取元素)
    • 元素选择器:元素名 ;ID选择器:#id ;类选择器:.class
    • 选择器之间可以组合,如:p.center 表示只有 class=“center” 的 p 元素才会被选中
    • 选择时还可以以 , 分隔,表示元素都选取
  2. 组合选择器(根据它们之间的特定关系来选取元素)
    • 后代选择器:空格 ;子选择器:> ;相邻兄弟选择器:+;通用兄弟选择器:~
  3. 伪类选择器(根据特定状态选取元素)
    • 语法:selector:pseudo-class ,伪类有很多,可参考在线文档看,一般主要用于鼠标悬停提示等
  4. 伪元素选择器(选取元素的一部分并设置其样式)
    • 语法:selector::pseudo-element ,具体使用参考在线文档
  5. 属性选择器(根据属性或属性值来选取元素)
    • 语法:[attribute="value"] ,如 a[target="value"] 表示选择带有 target 属性等于 valuea 标签,还可以将符号换成 |= 表示 value 开头的元素,具体参考在线文档

3.3 CSS浮动

CSS 的 Float(浮动)使元素脱离文档流,按照指定的方向(左或右发生移动),直到它的外边缘碰到包含框或另一个浮动框的边框为止

  • 浮动设计的初衷为了解决文字环绕图片问题,浮动后一定不会将文字挡住,这是设计初衷;故使用浮动时会把浮动框外的文字挤出去
  • 文档流是文档中可显示对象在排列时所占用的位置/空间,而脱离文档流就是在页面中不占位置了

浮动原理:

  1. 当把框 1 向右浮动时,它脱离文档流并且向右移动,直到它的右边缘碰到包含框的右边缘

在这里插入图片描述

  1. 当框 1 向左浮动时,它脱离文档流并且向左移动,直到它的左边缘碰到包含框的左边缘。因为它不再处于文档流中,所以它不占据空间,实际上覆盖住了框 2,使框 2 从视图中消失。如果把所有三个框都向左移动,那么框 1 向左浮动直到碰到包含框,另外两个框向左浮动直到碰到前一个浮动框

在这里插入图片描述

  1. 如果包含框太窄,无法容纳水平排列的三个浮动元素,那么其它浮动块向下移动,直到有足够的空间。如果浮动元素的高度不同,那么当它们向下移动时可能被其它浮动元素“卡住”

在这里插入图片描述

3.4 CSS定位

position 属性规定应用于元素的定位方法的类型(static、relative、fixed、absolute 或 sticky)

  • 这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移
  • 元素可以使用的 topbottomleftright 属性定位。然而,这些属性无法单独工作,必须依赖于上面设置
  1. static:默认值,静态定位,即没有定位,元素出现在该出现的位置,块级元素垂直排列,行内元素水平排列
  2. absolute:绝对定位,通过方向属性指定元素相对页面窗口的页面位置;定位后元素会让出原来位置
  3. relative:相对定位,相对原来位置通过方向属性定位;定位后保留原来的站位
  4. fixed:固定定位,在浏览器窗口固定位置,且不会随着页面的上下移动而移动;元素定位后会让出原来的位置
  5. sticky:粘性定位,根据用户的滚动位置进行定位,可参考在线文档

z-index 属性指定元素的堆栈顺序(哪个元素应放置在其他元素的前面或后面),具有较高堆叠顺序的元素始终位于具有较低堆叠顺序的元素之前。

注意:如果两个定位的元素重叠而未指定 z-index,则位于 HTML 代码中最后的元素将显示在顶部。

3.5 CSS盒子模型

所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。

  • CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距(margin),边框(border),填充(padding),和实际内容(content)

在这里插入图片描述

  • 说明:
    • Margin(外边距) - 清除边框外的区域,外边距是透明的。
    • Border(边框) - 围绕在内边距和内容外的边框。
    • Padding(内边距) - 清除内容周围的区域,内边距是透明的。
    • Content(内容) - 盒子的内容,显示文本和图像。

在这里插入图片描述

四、JavaScript

JS是一种运行于浏览器端上的小脚本语句,可以实现网页如文本内容动,数据动态变化和动画特效等。

4.1 引入方式

  • 内部脚本:script 标签内嵌js代码
  • 外部脚本:<script src="js/index.js" type="text/javascript"></script>

4.2 JS 组成部分

在这里插入图片描述

  1. BOM编程:BOM是Browser Object Model的简写,即浏览器对象模型
  2. DOM编程:DOM编程其实就是用window对象的document属性的相关API完成对页面元素的控制的编程
  3. ECMAScript:JS 实现了 ES 的语言标准。JS 还在此基础上新增了一些拓展。ES即ECMAScript语法规则。

4.3 BOM编程

BOM是Browser Object Model的简写,即浏览器对象模型

  • window 顶级对象,代表整个浏览器窗口
    • location对象 window对象的属性之一,代表浏览器的地址栏
    • history对象 window对象的属性之一,代表浏览器的访问历史
    • screen对象 window对象的属性之一,代表屏幕
    • navigator对象 window对象的属性之一,代表浏览器软件本身
    • document对象 window对象的属性之一,代表浏览器窗口目前解析的html文档
    • console对象 window对象的属性之一,代表浏览器开发者工具的控制台
    • localStorage对象 window对象的属性之一,代表浏览器的本地数据持久化存储
    • sessionStorage对象 window对象的属性之一,代表浏览器的本地数据会话级存储

通过BOM编程实现会话级和持久级数据存储

  • 会话级数据 : 内存型数据,是浏览器在内存上临时存储的数据,浏览器关闭后,数据失去,通过window的sessionStorge属性实现
  • 持久级数据 : 磁盘型数据,是浏览器在磁盘上持久存储的数据,浏览器关闭后,数据仍在,通过window的localStorge实现
  • 可以用于存储一些服务端响应回来的数据,比如:token令牌,或者一些其他功能数据
// 会话级数据
window.sessionStorage.setItem("sessionMsg","sessionValue");
// 持久级数据
window.localStorage.setItem("localMsg","localValue");

4.4 DOM编程

DOM(Document Object Model)编程就是使用document对象的API完成对网页HTML文档进行动态修改,以实现网页数据和样式动态变化效果的编程

dom树中节点的类型

  • node 节点,所有结点的父类型
    • element 元素节点,node的子类型之一,代表一个完整标签
    • attribute 属性节点,node的子类型之一,代表元素的属性
    • text 文本节点,node的子类型之一,代表双标签中间的文本

4.4.1 获取页面元素的几种方式

  1. 在整个文档范围内查找元素结点
功能API返回值
根据id值查询document.getElementById(“id值”)一个具体的元素节
根据标签名查询document.getElementsByTagName(“标签名”)元素节点数组
根据name属性值查询document.getElementsByName(“name值”)元素节点数组
根据类名查询document.getElementsByClassName(“类名”)元素节点数组
  1. 在具体元素节点范围内查找子节点
功能API返回值
查找子标签element.children返回子标签数组
查找第一个子标签element.firstElementChild标签对象
查找最后一个子标签element.lastElementChild节点对象
  1. 查找指定子元素节点的父节点
功能API返回值
查找指定元素节点的父标签element.parentElement标签对象
  1. 查找指定元素节点的兄弟节点
功能API返回值
查找前一个兄弟标签node.previousElementSibling标签对象
查找后一个兄弟标签node.nextElementSibling标签对象

4.4.2 操作元素属性值

  1. 属性操作
需求操作方式
读取属性值元素对象.属性名
修改属性值元素对象.属性名=新的属性值
  1. 内部文本操作
需求操作方式
获取或者设置标签体的文本内容element.innerText
获取或者设置标签体的内容element.innerHTML

4.4.3 增删元素

API功能
document.createElement(“标签名”)创建元素节点并返回,但不会自动添加到文档中
document.createTextNode(“文本值”)创建文本节点并返回,但不会自动添加到文档中
element.appendChild(ele)将ele添加到element所有子节点后面
parentEle.insertBefore(newEle,targetEle)将newEle插入到targetEle前面
parentEle.replaceChild(newEle, oldEle)用新节点替换原有的旧子节点
element.remove()删除某个标签

4.5 注意事项及细节

  • ===== 的差别:对于 == 符号,如果两端的数据类型不一致,会先进行类型转换再比较,故最好使用 ===
  • 小数 Number 类型会存在精度问题,优先考虑使用decimal,高精度要求情况下,前后端数字类型交互可考虑用字符串

五、注册页面案例

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登陆页面</title>
        <style>
            html {
                margin-top: 15%;
            }
            .ht{
                text-align: center;
                color: cadetblue;
                font-family: 幼圆;
            }
            .tab{
                width: 500px;
                border: 5px solid cadetblue;
                margin: 0px auto;
                border-radius: 5px;
                font-family: 幼圆;
            }
            .ltr td{
                border: 1px solid  powderblue;

            }
            .ipt{
                border: 0px;
                width: 50%;

            }
            .btn1{
                border: 2px solid powderblue;
                border-radius: 4px;
                width:60px;
                background-color: antiquewhite;

            }
            .msg {
                color: gold;
            }
            .buttonContainer{
                text-align: center;
            }
        </style>

        <script>
            function checkUsername(){
                var usernameReg = /^[a-zA-Z0-9]{5,10}$/
                var usernameInput = document.getElementById("usernameInput")  
                var username = usernameInput.value  
                var usernameMsg = document.getElementById("usernameMsg")
                if(!usernameReg.test(username)){
                    usernameMsg.innerText="格式有误"
                    return false
                } 
                usernameMsg.innerText="OK"
                return true 
            }

            function checkUserPwd(){
                var userPwdReg = /^\d{6}$/
                var userPwdInput = document.getElementById("userPwdInput")  
                var userPwd = userPwdInput.value  
                var userPwdMsg = document.getElementById("userPwdMsg")
                if(!userPwdReg.test(userPwd)){
                    userPwdMsg.innerText="格式有误"
                    return false
                } 
                userPwdMsg.innerText="OK"
                return true 
            }

            function checkReUserPwd(){
                var userPwdReg = /^\d{6}$/
                // 再次输入的密码的格式
                var reUserPwdInput = document.getElementById("reUserPwdInput")  
                var reUserPwd = reUserPwdInput.value 
                var reUserPwdMsg = document.getElementById("reUserPwdMsg")
                if(!userPwdReg.test(reUserPwd)){
                    reUserPwdMsg.innerText="格式有误"
                    return false
                } 
                // 获得上次密码,对比两次密码是否一致
                var userPwdInput = document.getElementById("userPwdInput")  
                var userPwd = userPwdInput.value  
                if(reUserPwd != userPwd){
                    reUserPwdMsg.innerText="两次密码不一致"
                    return false
                } 
                reUserPwdMsg.innerText="OK"
                return true 
            }

            function checkForm(){
                var flag1 = checkUsername()
                var flag2 = checkUserPwd()
                var flag3 = checkReUserPwd()

                return flag1 && flag2 && flag3
            }
        </script>
    </head>
    <body>
        <h1 class="ht">欢迎使用XX管理系统</h1>
        <form method="post" action="/user/regist" onsubmit="return checkForm()">
            <table class="tab" cellspacing="0px">
                <tr class="ltr">
                    <td>请输入账号</td>
                    <td>
                        <input class="ipt" id="usernameInput" type="text" name="username" onblur="checkUsername()">
                        <span id="usernameMsg" class="msg"></span>
                    </td>
                </tr>
                <tr class="ltr">
                    <td>请输入密码</td>
                    <td>
                        <input class="ipt" id="userPwdInput" type="password" name="userPwd" onblur="checkUserPwd()">
                        <span id="userPwdMsg" class="msg"></span>
                    </td>
                </tr>
                <tr class="ltr">
                    <td>确认密码</td>
                    <td>
                        <input class="ipt" id="reUserPwdInput" type="password" onblur="checkReUserPwd()">
                        <span id="reUserPwdMsg" class="msg"></span>
                    </td>
                </tr>
                <tr class="ltr">
                    <td colspan="2" class="buttonContainer">
                        <input class="btn1" type="submit" value="注册">
                        <input class="btn1" type="reset" value="重置">
                        <button class="btn1"><a  href="login.html">去登录</a></button>
                    </td>
                </tr>
            </table>
        </form>
    </body>
</html>

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

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

相关文章

数据结构与算法【B树】的Java实现+图解

目录 B树 特性 实现 节点准备 大体框架 实现分裂 实现新增 实现删除 完整代码 B树 也是一种自平衡的树形数据结构&#xff0c;主要用于管理磁盘上的数据管理&#xff08;减少磁盘IO次数&#xff09;。而之前说的AVL树与红黑树适合用于内存数据管理。存储一个100w的数…

CTF PWN-攻防世界level3之libc动态库寻址

文章目录 前言动态链接Plt与Got简单例子延迟绑定 level3题目简析EXP构造Getshell 总结 前言 本题目 level3 延续了 CTF PWN-攻防世界XCTF新手区WriteUp 一文中的 PWN 题目训练&#xff0c;是 level2 题目的衍生。与 level2 不同的是&#xff0c;存在栈溢出漏洞的 level3&#…

【DevOps】Git 图文详解(九):工作中的 Git 实践

本系列包含&#xff1a; Git 图文详解&#xff08;一&#xff09;&#xff1a;简介及基础概念Git 图文详解&#xff08;二&#xff09;&#xff1a;Git 安装及配置Git 图文详解&#xff08;三&#xff09;&#xff1a;常用的 Git GUIGit 图文详解&#xff08;四&#xff09;&a…

2023年亚太地区数学建模大赛 问题A

采果机器人的图像识别技术 中国是世界上最大的苹果生产国&#xff0c;年产量约为3500万吨。与此同时&#xff0c;中国也是世界上最大的苹果出口国&#xff0c;全球每两个苹果中就有一个&#xff0c;全球超过六分之一的苹果出口自中国。中国提出了一带一路倡议&#xff08;BRI&…

Linux - 文件系统 - 理解目录 - 理解 软/硬链接

前言 在上篇博客当中&#xff0c;我们对 文件系统 和 inode 做了初步了解&#xff0c;本博客将在上篇博客的基础之上&#xff0c;对于 文件系统当中的目录进行进步一阐述。 Linux - 进一步理解 文件系统 - inode - 机械硬盘-CSDN博客 目录 一个文件有一个 inode&#xff0c;…

BUUCTF [WUSTCTF2020]find_me 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。 感谢 Iven Huang 师傅供题。 比赛平台&#xff1a;https://ctfgame.w-ais.cn/ 密文&#xff1a; 下载附件&#xff0c;得到一个.jpg图片。 解题思路&#xff1a; 1、得到一张图…

vue3-组件传参及计算属性

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3-组件传参及计算属性 目录 vue3中的组件传参 1、父传子 2、子传父 toRef 与 toRefs vue3中…

大数据系列15:lightgbm笔记

1. 安装 建议用conda安装。 首先安装miniconda&#xff0c;在官网下载对应的版本。 然后将系统的python和pip定位到miniconda文件夹下。 然后用conda安装lightgbm&#xff0c;在Mac m2芯片上测试可行。&#xff08;用pip直接安装通不过编译&#xff09;。 2. 简单case 将lig…

php xml数据转数组两种方式

目录 方法一、可以使用simplexml_load_string()函数将XML数据转换为数组。 方法二、使用PHP内置的DOMDocument类来将XML数据转换为数组的方法 方法一、可以使用simplexml_load_string()函数将XML数据转换为数组。 $xmlData <root><name>John Doe</name>&l…

Cesium 展示——地球以及渲染数据导出(下载)为图片或 pdf

文章目录 需求分析新加需求分析第一种方式第二种方式需求 将 Cesium 球体以及渲染数据导出为 jpg/png/pdf 分析 获取场景 scene 信息,转为image 的 octet-stream 流 进行下载为图片 /*** @todo canvas 导出图片* @param {string} dataurl - 地址* @return {Blob}*/ functio…

杭州银行连接解决方案:集成CRM、用户运营和广告推广系统

自动化与智能化是企业新的增长引擎。在数字化时代&#xff0c;企业需要通过数字化工具来提高效率和效益&#xff0c;这也是杭州银行推出的连接解决方案的初衷。该解决方案集成了CRM、用户运营和广告推广系统&#xff0c;为企业提供全方位的数字化转型支持。 杭州银行连接解决方…

「 高并发系统设计 」 如何提高系统性能

「 高并发系统设计 」 如何提高系统性能 参考&鸣谢 ⾼并发系统如何做性能优化&#xff1f; 玄明Hanko 高并发系统设计和优化的通用方法论 渝言家 文章目录 「 高并发系统设计 」 如何提高系统性能[toc]一、高并发系统设计三大目标高性能高可用可扩展 二、性能优化原则问题导…

【硬核HeyGen平替】在window平台上使用MyHeyGen

最近在研究HeyGen的平替开源项目&#xff0c;然后发现了MyHeyGen这个项目&#xff0c;但是文档上面并没有说明如果在window平台上使用&#xff0c;考虑到非window平台安装显卡驱动什么的比较繁琐&#xff0c;所以尝试硬着头皮干... 前提 开源项目中所需的环境准备要先准备好 1…

qgis添加xyz栅格瓦片

方式1&#xff1a;手动一个个添加 左侧浏览器-XYZ Tiles-右键-新建连接 例如添加高德瓦片地址 https://wprd01.is.autonavi.com/appmaptile?langzh_cn&size1&style7&x{x}&y{y}&z{z} 双击即可呈现 收集到的一些图源&#xff0c;仅供参考&#xff0c;其中一…

中断方式的数据接收

中断接收简介 回顾之前的代码 之前的代码是 等待标志位RXNE位为1才有数据 进而读取数据存放在变量c中 再根据c变量的数据是为0还是为1进而编写灯亮灭的代码 if语句 但这样的代码明显不符合裸机多任务的编程模型 因为在while中为进程 进程执行的时间不能大于5ms 但是while&…

Linux实验四:shell程序设计: shell控制语句

实验目的 进一步巩固shell程序设计语言基本语法&#xff0c;加深对所学知识理解。 实验内容 要求学生掌握以下内容 (1)条件表达式 (2)判断和分支语句 (3)循环语句 (4)函数 实验内容 1 条件表达式 $ test 10 -gt 5 // 算数表达式 10>5 $ echo $? //显示上述表达…

〔004〕虚幻 UE5 像素流部署

✨ 目录 ▷ 启用像素流插件▷ 打包项目▷ 下载环境包▷ 手动下载▷ 安装信令服务器环境▷ 启动信令服务器▷ 设置启动参数▷ 启动程序▷ 网页运行▷ 开启触控界面▷ 启用像素流插件 打开虚幻启动程序,选择 编辑 后点击 插件在插件列表中搜索 pixel streaming 关键字,勾选后重…

杨传辉:从一体化架构,到一体化产品,为关键业务负载打造一体化数据库

在刚刚结束的年度发布会上&#xff0c;OceanBase正式推出一体化数据库的首个长期支持版本 4.2.1 LTS&#xff0c;这是面向 OLTP 核心场景的全功能里程碑版本&#xff0c;相比上一个 3.2.4 LTS 版本&#xff0c;新版本能力全面提升&#xff0c;适应场景更加丰富&#xff0c;有更…

北邮22级信通院数电:Verilog-FPGA(11)第十一周实验(2)设计一个24秒倒计时器

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 1.1 counter_24.v 1.2 divid…

【Flink】Standalone运行模式

独立模式是独立运行的&#xff0c;不依赖任何外部的资源管理平台&#xff1b;当然独立也是有代价的&#xff1a;如果资源不足&#xff0c;或者出现故障&#xff0c;没有自动扩展或重分配资源的保证&#xff0c;必须手动处理。所以独立模式一般只用在开发测试或作业非常少的场景…