PWA(Progressive Web App)入门系列:Fetch Request Headers Response Body

前言

在 WEB 中,对于网络请求一直使用的是 XMLHttpRequest API 来处理,XMLHttpRequest 也很强大,传统的 Ajax 也是基于此 API 的。那么为什么 W3C 标准中又加入了类似功能的 Fetch API 呢?他有何优势。


Fetch

什么是 Fetch

Fetch 提供了 Request 和 Response 对象的通用定义(以及与网络请求有关的其他内容)。这将允许 Fetch 在将来需要的任何地方使用,无论在 serviceWorker、Cache API以及处理或修改 Request 和 Response 的其他类似事物上,或者任何可能需要你以编程方式生成的 Response 的地方。

它还提供了相关概念的定义,例如 CORS 和 HTTP 原始头语义,在其他地方取代它们的单独定义。

要发出请求并获取资源,请使用 WindowOrWorkerGlobalScope.fetch() 方法。这使得它几乎可以在你想要获取资源的任何上下文中使用。

Fetch API 是 W3C 正式规范中加入的新的用于网络请求相关的功能 API,核心就是对于 HTTP 接口的抽象,包含 Request / Response / Headers / Body,通过这些抽象出来的模块,对于 HTTP 相关的操作变得更简单方便。Fetch API 是异步化的接口,所有的结果都是 Promise 化的,同样在 window 环境和 seviceWorker 环境下均可访问。在 ServiceWorker 中,Fetch 被大量使用。

对于使用过 XMLHttpRequest 的人来说,很容易上手。但 Fetch API 功能更强大和灵活。

模块与 fetch 的关系

接口

描述 Fetch 的接口,不是很单纯,它是以抽象出来的 HTTP 的那些模块来组合的。下面简单列一下,后面每个模块详细说明。

fetch

位于 WindowOrWorkerGlobalScope 这一个 mixin 中的 fetch() 方法用于发起获取资源的请求。它返回一个 promise,这个 promise 会在请求响应后被 resolve,并传回 Response 对象。

Window 和 WorkerGlobalScope 下均可访问 fetch() 方法。

fetch() 方法由 Content Security Policy 的 connect-src指令控制,而不是它请求的资源。

HTTP 404 状态并不被认为是网络错误。

语法

Promise<Response> fetch(input[, init]);

fetch() 的构造器和 Request 的构造器完全一样。

参数
resource:支持以下两种类型:

  • USVString:要获取资源的 URL 字符串。(有些浏览器也支持 blob:data:类型的 URL)
  • Request 对象。 (Request 这块在后面 Request 部分说)

init:可选。可设置任何需要应用到 Request 中的配置项。通常设置如下:

  • method:请求的方法。如 POSTGET等。注意在 Fetch 请求方法为 GET 或 HEAD 下不能设置 Origin 头。(Firefox 65 已修正此问题 - 参考:Bug1508661)
  • headers:在 Headers 对象或具有 ByteString 值的对象中的任何你想添加的头。注意某此名称是被禁止的。
  • body:任何你想添加到 Request 中的 body,它可以是 Blob、BufferSource、FormData、URLSearchParams 或者 USVString 对象。注意 GET 或者 HEAD 方法的 Request 没有 body。
  • mode:用于请求的模式。例如:cors, no-cors, 或者 same-origin
    • same-origin:如果设置了此模式,并向其他源发请求,则报错。此属性可强制始终从同一个源发请求。
    • no-cors:保证其对应的方法只有HEAD,GET或POST方法。serviceWorker 拦截的请求只能添加或修改一些简单的 header,且 JS 无法读取 Response 的任何属性。保证在跨域时不会发生安全和隐私泄露的问题。
    • cors:允许跨域请求。只有有限的 header 暴露在 Response 中,正文可以读取。
    • navigate:浏览器的页面切换请求。navigate 请求仅在浏览器切换页面时创建,该请求应该返回 HTML。
  • credentials:用于请求的受信类型,包括:omit, same-origin, 或者 include。要自动发送当前域的cookie,必须提供此选项。从Chrome 50开始,此属性还会使用FederatedCredential实例或PasswordCredential实例。
    • omit:不发送 cookies。
    • same-origin:同源环境下发送 cookies。
    • include: 任何情况都发送 cookies。
  • cache:要用于请求的缓存模式。
    • default:默认,走 HTTP 缓存模式。
    • reload:浏览器先从服务器获取资源,而不是先查找缓存,资源下载完后更新缓存。
    • no-store:浏览器从服务器获取资源,且不更新缓存。
    • no-cache:浏览器在HTTP缓存中查找匹配的请求。如果有新的或旧的匹配,浏览器将向远程服务器发出有条件的请求。如果服务器指示资源没有改变,它将从缓存中返回。否则,资源将从服务器下载,缓存将被更新。
    • force-cache:基于 HTTP 缓存。
    • only-if-cached:只走 HTTP 缓存,如果没有则报错。
  • redirect:要使用的重定向模式:follow(自动跟随重定向),error(如果发生重定向则中止错误),manual(手动处理重定向)。Chrome 默认follow(Chrome 47 以前默认 manual)。
  • referrer:指定no-referrerclientURLUSVString。默认为client
  • referrerPolicy:指定 referer HTTP 标头的值。 可以是 no-referrer, no-referrer-when-downgrade, origin, origin-when-cross-origin, unsafe-url
  • integrity:包含请求的子资源完整性值(例如:sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=)。
  • keepalivekeepalive选项可用于允许请求比页面长。带keepalive标志的 fetch 替代了navigator.sendboacon() API。
  • signal:AbortSignal实例。允许你与获取请求进行通信,并在需要时通过AbortController中止它。

返回值

Promise,resolve 时回传 Response 对象。

例外

类型描述
AbortError请求中断 (通过使用 AbortController.abort())
TypeError从Firefox 43开始,如果 URL 包含 credentials ,则 fetch() 将抛出 TypeError,例如 http:// user:password@example.com。

Request

Fetch API 的 Request 接口表示资源请求。

你可以使用 Request.Request() 构造函数创建新的 Request 对象,你也可以通过一个 API 操作返回 Request 对象,例如 serviceWorker 中的 FetchEvent.request。

构造器

Request.Request()

创建新的 Request 对象。

语法

var myRequest = new Request(input[, init]);

参数

input: 可用如下之一:

  • 要获取资源的 URL 字符串。
  • Request 对象,用于创建副本。请注意以下行为更新以保持安全性,同时使构造函数不太可能抛出异常:
    • 如果此对象存在于构造函数调用的另一个源上,则会剥离 Request.referrer。
    • 如果此对象具有navigate的 Request.mode,则mode值将转换为same-origin

init: 可选。同 fetch init。

属性

  • cache:包含请求的缓存模式,例如:default, reload, no-cache
  • credentials:包含请求的凭据,例如:omit, same-origin, include。默认same-origin
  • destination:返回RequestDestination枚举中的字符串,描述请求的目标。这是一个字符串,表示所请求内容的类型。
  • headers:包含请求的关联 Headers 对象。
  • integrity:包含请求的子资源完整性值。例如:sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=
  • method:包含请求的方法,GET/POST等。
  • mode:包含请求的模式。例如:cors, no-cors, same-origin, navigate
  • redirect:包含重定向处理方式。它可能是其中之一:follow, error, manual
  • referrer:包含请求的引用者。例如:client
  • referrerPolicy:包含请求的引用者策略。例如:no-referrer
  • url:包含请求中的 URL。
  • bodyUsed :存储一个布尔值,声明是否已在响应中使用过。

Request 实现 Body,所以 Body 的属性和方法在 Request 中依然有效。关于 Body,后面说。


Headers

Fetch API 的 Headers 接口允许你对 HTTP 请求和响应头执行各种操作。这些操作包括检索,设置,添加和删除。Headers 对象具有关联的标题列表,该列表最初为空,由零个或多个名称和值对组成。在此接口的所有方法中,标头名称由不区分大小写的字节序列匹配。

出于安全原因,某些标头只能由浏览器控制。这些标头包括禁止的标头名称和禁止的响应标头名称。

一个Headers对象也有一个相关的“门”,取值为immutable, request, request-no-cors, response, none。它会影响 set(), delete(), append() 是否会改变 header。

你也可以通过 Request.headers 和 Response.headers 属性取 Headers 对象。

构造器

Headers

创建一个 Header 对象。

语法:

var myHeaders = new Headers(init);

参数:

  • init:包含要使用其预填充 Headers 对象的任何HTTP标头的对象。这可以是具有 ByteString 值的简单对象值或现有的 Headers 对象(新的 Headers 对象从现有的Headers对象继承其数据)。

方法

  • append(name, value):将新值附加到 Headers 对象内的现有标头上,或者如果标头、不存在则添加标头。此方法用于一个属性对应多个值的添加方法。
  • delete(name):方法从当前 Headers 对象中删除指定标头。
  • entries():方法返回一个迭代器,允许遍历此对象中包含的所有键/值对。每对的键和值都是 ByteString 对象。
  • forEach():为每个数组元素执行一次提供的函数。
  • get(name):方法返回具有给定名称的 Headers 对象中标头的所有值的字节字符串。如果 Headers 对象中不存在请求的标头,则返回 null。
  • has(name):方法返回一个布尔值,表明Headers对象是否包含某个头。
  • keys():方法返回一个迭代器,允许遍历此对象中包含的所有键。键是 ByteString 对象。
  • set(name, value):方法为 Headers 对象内的现有标头设置新值,或者如果标头尚不存在则添加标头。(set 和 append 之间的区别在于,如果指定的头已经存在并接受多个值,则 set 将使用新值覆盖现有值,而 append将新值附加到值集的末尾)
  • values():返回一个迭代器,允许遍历此对象中包含的所有值。值是 ByteString 对象。

如果在 Header 中的方法中使用不在可用 HTTP 标头中的值,则会抛出 TypeError 错误。

可用 HTTP 表头

表头根据上下文有如下几类:

  • 常规标题:标题适用于请求和响应,但与最终在正文中传输的数据无关。
  • 请求标头:包含有关要提取的资源或客户端本身的更多信息的标头。
  • 响应标头:包含有关响应的其他信息的标头,例如其位置或服务器本身(名称和版本等)。
  • 实体标头:包含有关实体主体的更多信息的标头,例如其内容长度或MIME类型。

认证类:

  • WWW-Authenticate
  • Authorization
  • Proxy-Authenticate
  • Proxy-Authorization

缓存类:

  • Age
  • Cache-Control
  • Clear-Site-Data
  • Expires
  • Pragma
  • Warning

客户端提示类:

  • Accept-CH
  • Accept-CH-Lifetime
  • Early-Data
  • Content-DPR
  • DPR
  • Save-Data
  • Viewport-Width
  • Width

条件类:

  • Last-Modified
  • ETag
  • If-Match
  • If-None-Match
  • If-Modified-Since
  • If-Unmodified-Since
  • Vary

连接管理类:

  • Connection
  • Keep-Alive

内容判断类:

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language

控制类:

  • Expect
  • Max-Forwards

Cookie 类:

  • Cookie
  • Set-Cookie

CORS 类:

  • Access-Control-Allow-Origin
  • Access-Control-Allow-Credentials
  • Access-Control-Allow-Headers
  • Access-Control-Allow-Methods
  • Access-Control-Expose-Headers
  • Access-Control-Max-Age
  • Access-Control-Request-Headers
  • Access-Control-Request-Method
  • Origin
  • Timing-Allow-Origin
  • X-Permitted-Cross-Domain-Policies

不追踪类:

  • DNT
  • TK

下载类:

  • Content-Disposition

消息正文类:

  • Content-Length
  • Content-Type
  • Content-Encoding
  • Content-Language
  • Content-Location

代理类:

  • Forwarded
  • X-Forwarded-For
  • X-Forwarded-Host
  • X-Forwarded-Proto
  • Via

重定向类:

  • Location

请求上下文类:

  • From
  • Host
  • Referer
  • Referrer-Policy
  • User-Agent

响应上下文类:

  • Allow
  • Server

范围请求类:

  • Accept-Ranges
  • Range
  • If-Range
  • Content-Range

安全类:

  • Cross-Origin-Resource-Policy
  • Content-Security-Policy
  • Content-Security-Policy-Report-Only
  • Expect-CT
  • Feature-Policy
  • Public-Key-Pins
  • Public-Key-Pins-Report-Only
  • Strict-Transport-Security
  • Upgrade-Insecure-Requests
  • X-Content-Type-Options
  • X-Download-Options
  • X-Frame-Options
  • X-Powered-By
  • X-XSS-Protection

服务器发送事件类:

  • Last-Event-ID
  • NEL
  • Ping-From
  • Ping-To
  • Report-To

转移编码类:

  • Transfer-Encoding
  • TE
  • Trailer

WebSockets 类:

  • Sec-WebSocket-Key
  • Sec-WebSocket-Extensions
  • Sec-WebSocket-Accept
  • Sec-WebSocket-Protocol
  • Sec-WebSocket-Version

其他:

  • Accept-Push-Policy
  • Accept-Signature
  • Alt-Svc
  • Date
  • Large-Allocation
  • Link
  • Push-Policy
  • Retry-After
  • Signature
  • Signed-Headers
  • Server-Timing
  • SourceMap
  • Upgrade
  • X-DNS-Prefetch-Control
  • X-Firefox-Spdy
  • X-Pingback
  • X-Requested-With
  • X-Robots-Tag
  • X-UA-Compatible

Response

Response 接口表示请求的响应。

构造器

Response()

语法:

var myResponse = new Response(body, init);

参数:

body:(可选)

定义响应主体的对象。这可以是null,或者是:

  • Blob
  • BufferSource
  • FormData
  • ReadableStream
  • URLSearchParams
  • USVString

init:(可选)

包含要应用于响应的任何自定义设置的选项对象。可选:

  • status:响应的状态代码,例如:200
  • statusText:与状态代码关联的状态消息,例如,OK
  • headers:要添加到响应的任何标头,包含在 Headers 对象或 ByteString 键/值对的对象文本。(可参考 HTTP Headers)

属性

  • headers:接口的头只读属性包含与响应关联的 Headers 对象。
  • ok:接口的 ok 只读属性包含一个布尔值,表明响应是否成功(状态在200-299范围内)
  • redirected :属性指示响应是否是您重定向的请求的结果。依靠 redirected 来过滤掉重定向,可以轻松进行伪造重定向,以防止你的内容按预期工作。相反,你应该在调用 fetch() 时执行过滤。
  • status:响应的状态代码。
  • statusText:相应状态文字。
  • type:响应类型:
    • basic:正常情况下同域响应,除Set-CookieSet-Cookie2外,所有标题都被暴露。
    • cors:从有效的跨源请求收到响应。
    • error:网络错误。 没有描述错误的有用信息。响应的状态为 0,标头为空且不可变。 这是从Response.error()获取的响应的类型。
    • opaque:响应“no-cors”请求到跨源资源。
    • opaqueredirect:获取请求是使用重定向manual进行的。 响应的状态为 0,标题为空,正文为空。
  • url:包含响应的 URL。 url 属性的值将是重定向后获得的最终 URL。
  • bodyUsed :布尔值,声明是否已在响应中使用了正文。

方法

  • clone():方法创建响应对象的克隆,在各方面都相同,但存储在不同的变量中。
  • error():方法返回与网络错误关联的新Response对象。
  • redirect(url, status):方法返回一个 Response,导致重定向到指定的 URL。

Request 实现 Body,所以 Body 的属性和方法在 Request 中依然有效。关于 Body,后面说。


Body

Body 表示响应 / 请求的主体,允许你声明其内容类型以及应如何处理它。

Body 由 Request 和 Response 实现。这为这些对象提供了关联的主体(流),使用过的标志(最初未设置)和MIME类型(最初是空字节序列)。

属性

  • body:是一个简单的getter,用于公开body内容的ReadableStream。
  • bodyUsed:布尔值,指示是否已读取 body。

方法

  • arrayBuffer():方法接受一个 Response 流并将其读取完成。它返回一个使用 ArrayBuffer 解析的 promise。
  • blob():方法接受一个 Response 流并将其读取完成。它返回一个用 Blob 解析的 promise。(注意 如果 Response 的 Response.type 为opaque,则生成的 Blob 将具有 0 的 Blob.size 和空字符串“”的 Blob.type,这使得它对 URL.createObjectURL 等方法无效。)
  • formData():方法接受一个 Response 流并将其读取完成。它返回一个使用 FormData 对象解析的 promise。(这主要与 serviceWorker 有关。 如果用户提交表单并且 serviceWorker 截获请求,你可以在其上调用 formData() 以获取键值映射,修改某些字段,然后将表单向前发送到服务器)
  • json():方法接受一个 Response 流并将其读取完成。它返回一个 promise,它以将正文解析为 JSON 的结果解析。
  • text(): 方法接受一个 Response 流并将其读取完成。 它返回一个使用 USVString 对象(文本)解析的 promise。 始终使用 UTF-8 解码响应。

浏览器兼容性


博客名称:王乐平博客

CSDN博客地址:http://blog.csdn.net/lecepin

知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

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

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

相关文章

CSS3开发总结(圆角、盒阴影、边界图片)

CSS3开发总结&#xff08;圆角&#xff09; 12/100 发布文章 qq_41913971 CSS31&#xff09;圆角 border-radius2&#xff09;盒阴影 box-shadow3&#xff09;边界图片 border-image-source1&#xff09;圆角 border-radius border-radius属性&#xff0c;复合属性。一个最多可…

深入理解Android的startservice和bindservice

一、首先&#xff0c;让我们确认下什么是service&#xff1f; service就是android系统中的服务&#xff0c;它有这么几个特点&#xff1a;它无法与用户直接进行交互、它必须由用户或者其他程序显式的启动、它的优先级比较高&#xff0c; 它比处于前台的应用优先级低&am…

PWA(Progressive Web App)入门系列:Notification

前言 在很多场景下&#xff0c;需要一种通知的交互方式来提醒用户&#xff0c;传统方式下可以在页面实现一个 Dialog&#xff0c;或通过修改网页的 title 来实现消息的通知。然而传统的实现存在着一定的不足&#xff0c;在网页最小化的情况下&#xff0c;无法查看任何通知&…

PWA(Progressive Web App)入门系列:Push

前言 很多时候&#xff0c;原生应用会通过一些消息推送来唤起用户的关注&#xff0c;增加驻留率。网页该怎么做呢&#xff1f;有没有类似原生应用的推送机制&#xff1f;推送功能又能玩出什么花样呢&#xff1f; Push API Push API 给与了 Web 应用程序接收从服务器发出的推送…

Dom学习笔记

DOM document object model 文档 对象 模型 文档&#xff1a;html页面 文档对象&#xff1a;页面中的元素 文档对象模型: 文档对象模型是w3c 为了能够让js去操作页面中的元素&#xff0c;定义的一套标准 DOM会把当前文档看作一棵树 树种的每一个元素就是文档树 的一个节点 同…

PWA(Progressive Web App)入门系列:消息通讯

前言 serviceWorker 的能力决定它要处理的事情&#xff0c;网站页面的部分逻辑处理会转移到 serviceWorker 层进行处理&#xff0c;这里就要页面层和 serviceWorker 层进行交互来实现消息通讯。 下面就说一下两个环境下的消息通讯。 窗口向 serviceWorker 通讯 这里列举出窗…

查看Linux上程序或进程用到的库

为什么80%的码农都做不了架构师&#xff1f;>>> ldd /path/to/program 要找出某个特定可执行依赖的库&#xff0c;可以使用ldd命令。这个命令调用动态链接器去找到程序的库文件依赖关系。 objdump -p /path/to/program | grep NEEDED 注意&#xff01;并不推荐为任…

超方便的 IndexDB 库

前言 做为 Web 浏览器层的本地存储&#xff0c;IndexDB 做为一个很好的选择&#xff0c;几乎可以存储任意类型的数据&#xff0c;且是异步的。但是正常使用方式下需要在监听各种事件来处理结果&#xff0c;不是很方便&#xff0c;下面就对这一层进行了包装&#xff0c;使用方便…

BP网络识别26个英文字母matlab

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;字母识别 获取完整源码源工程文件 一、 设计思想 字符识别在现代日常生活的应用越来越广泛&#xff0c;比如车辆牌照自动识别系统&#xff0c;手写识别系统&#xff0c;办公自动化等等。本文采用BP网络对26个英文字母进行…

PWA(Progressive Web App)入门系列:Sync 后台同步

前言 当我们在一些地下停车场&#xff0c;或者在火车上、电梯等无法避免的信号不稳定的场所&#xff0c;使用网站应用处理一些表单操作或者上传数据的操作时&#xff0c;面临的将是网络连接错误的响应&#xff0c;使用户的操作白费。 而此刻 PWA 的 Sync API 就很好的解决了这…

PWA(Progressive Web App)入门系列:安装 Web 应用

前言 在传统的 Web 应用中&#xff0c;通常只能通过在浏览器的地址栏里输入相应的网址才能进行访问&#xff0c;或者把网页地址创建到桌面上通过点击&#xff0c;然后在浏览器里打开。 传统模式下&#xff0c;图标、启动画面、主题色、视图模式、屏幕方向等等都无法去自定义和…

「工具」IndexDB 版备忘录

前言 工作日常需要做一些备忘录&#xff0c;记录一些要做的事。在 Mac 上有使用系统的备忘录&#xff0c;但功能偏弱且文本格式调整不方便。再就是使用浏览器找专门的备忘录网站&#xff0c;功能是满足了&#xff0c;但是链路长&#xff0c;没有桌面软件直接。 所以最后干脆自…

「工具」PWA Manifest图标及 favicon.ico 生成工具

PWA 其中有一个能力就是把网站安装到系统桌面&#xff0c;以原生应用的体验来运行网站&#xff0c;使用户无需再找开浏览器输入网址进入网站&#xff0c;而是可以直接点击安装好的应用直接运行&#xff0c;给使网站访问缩短路径及增加网站的曝光度。 其中有一个问题就是需要生…

各种浏览器缓存浅析

前言 目前浏览器的缓存类型众多&#xff0c;HTTP Cache、Disk Cache、Memory Cache、ServiceWorker Cache、Push Cache 等等&#xff0c;这些缓存是如何产生的&#xff1f;命中优先级是怎么样&#xff1f;又该如何去使用它们&#xff1f; Disk Cache、Memory Cache Disk Cac…

[工具]TS 视频合并工具

简介 当下载 m3u8 资源时&#xff0c;通常产生的是多个 ts 视频文件&#xff0c;所以需要借助某些工具来将这些 ts 视频片段整合为一个视频文件。 本软件主要解决的就是这个问题&#xff0c;底层基于ffmpeg&#xff0c;可正常运行在 Windows 和 Mac 平台。不仅可以合并 ts 为单…

[会议分享]2020全球软件大会分享-PWA在项目中的最佳实践

大会地址&#xff1a;https://www.bagevent.com/event/1233659# PPT下载&#xff1a;https://download.csdn.net/download/lecepin/12871373

「浏览器插件」非常好用的JSON-View

Chrome 商店&#xff1a;地址 下载地址&#xff1a;地址 Github&#xff1a;https://github.com/lecepin/lp-json-view 查看/格式化 二合一。 功能 自动识别 JSON 内容&#xff0c;并在页面右下角创建切换按钮。支持展开/折叠节点。支持全部展开、全部折叠、展开一二三层节点…

Github Action 快速构建 Electron 应用

前言 在开发 Electron 应用时&#xff0c;比较耗时的部分应该是构建打包的过程&#xff0c;像用 electron-builder 这种打包工具来说&#xff0c;它会根据你要打包的系统来下载应用的系统镜像打包工具&#xff0c;由于这些镜像的源文件托管在 Github 上&#xff0c;且 nodejs …

「浏览器插件」网址小尾巴终结者

前言 在我们日常的开发调试中&#xff0c;会在 URL 上添加一些特殊的小尾巴 用来显示调试界面或者开启一些特殊功能&#xff0c;当你接触了越来越多的系统后&#xff0c;你需要使用的小尾巴就变得越来越多&#xff0c;记忆和使用成本非常大&#xff0c;以及含有小尾巴的网址 在…

什么是低代码?

低代码 是一种软件开发方法&#xff0c;可以减少手工编码的过程&#xff0c;尽可能快的交付应用程序。 低代码平台 是工具的合集&#xff0c;这些工具可以通过建模和图形界面来进行应用程序的可视化开发。低代码使开发人员可以跳过手工编码&#xff0c;从而加快了应用程序的开…