主頁 > 企業開發 > 告別硬編碼,讓你的前端表格自動計算

告別硬編碼,讓你的前端表格自動計算

2020-09-28 18:36:30 企業開發

GitHub | Demo | 博客 | 原文鏈接

序言

當我的團隊進行稅務系統模塊開發的時候,我發現他們需要花費80%的時間去解決計算問題,尤其體現在表格(Grid)中的計算,這些時間花在:

  1. 寫前臺js代碼(因為用戶在表格中的輸入會影響其他單元格,所以需要即時將運算后的新值呈現給用戶看)
  2. 寫后臺代碼(因為用戶對表格資料的更改會影響其他表格,所以要在用戶點擊保存時更新受影響表格的資料)
  3. 實施修改計算方法,導致開發者需要修改代碼

于是我調研了稅務其他模塊的功能,發現稅務系統大量使用表格控制元件,而其中或多或少都會涉及到計算問題,而處理計算的方法,都是采用硬編碼,

計算,這個習以為常的編碼動作,其實很容易讓人聯想到Excel中的公式,更何況需求檔案本身就是以Excel的形式提供的,當我們在使用Excel的時候,可以在單元格中設定公式,通過改變源頭單元格的值,Excel將自動計算單元格公式,將結果值賦予目標單元格,那么,我們是否可以參考這種模式,開發者不再需要寫復雜難懂的計算邏輯,只需要根據實施提供的公式,將它們轉成某種格式的陳述句,再呼叫某種計算引擎產出結果,將結果呈現給用戶看或者持久化到資料庫?答案是肯定的,而這一切的核心就是自動計算引擎——AutoCalculate

作用

AutoCalculate是表格復雜運算的解決方案,可以讓你省掉成百上千行的計算邏輯代碼,從此寫代碼就像寫Excel公式一般簡單,

適用范圍

前臺:

適用于ElementUI表格、EasyUI Grid控制元件、ParamQuery Grid等所有js表格控制元件中帶有公式的復雜運算

后臺:

適用,需要V8引擎

前臺用法

AutoCalculate由兩部分組成,分別是公式和計算引擎,公式是就是根據特定語法撰寫的字串,如:[Month12,1]#3 = [Month11,1] * 10,計算引擎即是AutoCalculate.js,負責決議公式,以下開始介紹如何書寫公式,

單元格

假設有這樣的場景,單元格①=單元格②+單元格③,對應的公式是:

[Month1,1] = [Month1,2] + [Month1,3]

img

先來看看[Month1,1]代表什么,首先,中括號[ ]代表一個單元格,Month1即“1月”對應的列名,緊接著是一個逗號,,后面的1代表RowNo = 1,以此類推,

[Month1,2]代表列為“1月”且RowNo = 2的單元格

[Month1,3]代表列為“1月”且RowNo = 3的單元格

所以我們可以用[y,x]來代表一個單元格,y即列名,也稱作縱坐標, x即RowNo的值,也稱作橫坐標

如果表格沒有RowNo列怎么辦?如想尋找答案,請繼續往下閱讀

讓公式生效

//首先引入AutoCalculate.js
import AutoCalculate from '../components/AutoCalculate';
...

//定義一個AutoCalculate實體,formulas為公式陣列
let autoCal = new AutoCalculate(formulas);

/* 呼叫cal方法
 * gridDatas(必填):表格資料
 * refField(必填):參考欄位,即單元格[y,x]中x是哪個欄位的值
 */
autoCal.cal(gridDatas, refField);

區域公式

實際上,除了1月,2月,3月……10月也存在類似的公式,即:

[Month1,1] = [Month1,2] + [Month1,3]

[Month2,1] = [Month2,2] + [Month2,3]

[Month3,1] = [Month3,2] + [Month3,3]

……
……
……

[Month10,1] = [Month10,2] + [Month10,3]

也就是說我們需要寫10條這樣的公式,對于簡單的場景來說,這不成問題,但是對于某些包含大量公式的表格,這種寫法存在一些弊端,比如容易寫錯,還有,公式長的時候也需要花費較多時間才能寫完,所以,便有了區域公式,

觀察上面的公式可以發現,其實每條公式都可以用一條公式來代替,例如以下公式:

[@,1] = [@,2] + [@,3]

這里沒有明確的列名,只是用了一個占位符@,但它足以代表以上10條公式,這個時候,我們只需要在適當的位置補上列名就可以了,所以,最終的公式就是:

{Month1, Month2, Month3, Month4, Month5, Month6, Month7, Month8, Month9, Month10}[@,1] = [@,2] + [@,3]

你需要將列名用,隔開,并放置在大括號{ }內,如此,1條公式便相當于10條公式,

占位符不僅僅可以用于縱坐標,還可用于橫坐標,如以下公式:

//公式1:
[YearTotal,3] = [Month1,3] + [Month2,3] + [Month3,3] + [Month4,3] + [Month5,3] + [Month6,3] + [Month7,3] + [Month8,3] + [Month9,3] + [Month10,3]

//公式2:
[YearTotal,4] = [Month1,4] + [Month2,4] + [Month3,4] + [Month4,4] + [Month5,4] + [Month6,4] + [Month7,4] + [Month8,4] + [Month9,4] + [Month10,4]

//公式3:
[YearTotal,5] = [Month1,5] + [Month2,5] + [Month3,5] + [Month4,5] + [Month5,5] + [Month6,5] + [Month7,5] + [Month8,5] + [Month9,5] + [Month10,5]

//公式4:
[YearTotal,6] = [Month1,6] + [Month2,6] + [Month3,6] + [Month4,6] + [Month5,6] + [Month6,6] + [Month7,6] + [Month8,6] + [Month9,6] + [Month10,6]

//公式5:
[YearTotal,2] = [Month1,2] + [Month2,2] + [Month3,2] + [Month4,2] + [Month5,2] + [Month6,2] + [Month7,2] + [Month8,2] + [Month9,2] + [Month10,2]

//公式6:
[YearTotal,7] = [Month1,7] + [Month2,7] + [Month3,7] + [Month4,7] + [Month5,7] + [Month6,7] + [Month7,7] + [Month8,7] + [Month9,7] + [Month10,7]

//公式7:
[YearTotal,9] = [Month1,9] + [Month2,9] + [Month3,9] + [Month4,9] + [Month5,9] + [Month6,9] + [Month7,9] + [Month8,9] + [Month9,9] + [Month10,9]

//公式8:
[YearTotal,12] = [Month1,12] + [Month2,12] + [Month3,12] + [Month4,12] + [Month5,12] + [Month6,12] + [Month7,12] + [Month8,12] + [Month9,12] + [Month10,12]

//公式9:
[YearTotal,13] = [Month1,13] + [Month2,13] + [Month3,13] + [Month4,13] + [Month5,13] + [Month6,13] + [Month7,13] + [Month8,13] + [Month9,13] + [Month10,13]

使用區域公式,可以寫成:

{2, 3, 4, 5, 6, 7, 9, 12, 13}[YearTotal,@] = [Month1,@] + [Month2,@] + [Month3,@] + [Month4,@] + [Month5,@] + [Month6,@] + [Month7,@] + [Month8,@] + [Month9,@] + [Month10,@]

由此可見,區域公式為公式的書寫帶來了極大的便利,

支持js語法

在實際場景中,我們經常會碰到一些復雜的公式,如下圖,單元格公式使用了Excel自帶的Max函式,對于這樣的公式,我們可以這樣寫:

[Month1,9] = ([Month1,6] - [Month1,7] - [Month1,8] > 0 ? [Month1,6] - [Month1,7] - [Month1,8] : 0) + [Month1,5]

img

如你所見,公式支持js語法,你可以在公式等號右邊放入一個js變數,甚至js函式,只要是js決議引擎認識的語法,都被支持,

這里有個需要注意的地方,就是不可以將陣列元素放入公式中,因為js的陣列元素通常帶有“[ ]”符號,這與公式當中的單元格表示符”[ ]”產生沖突,所以陣列元素被禁止使用,請留意這一點,

[y]公式

接下來,帶大家看一看另外一種場景,如圖,存在這樣的關系:

單元格① = 單元格② - 單元格③

你可能很快就寫出了以下公式:

[column3,1] = [column2,1] - [column1,1]
[column3,2] = [column2,2] - [column1,2]

img

這樣寫本身沒有錯,但是我得提醒你,這里的行是不固定的,也就是說表格有多少行完全取決于當時的資料庫情況,有可能今天只有3行資料,明天會有5行,后天會有50行,我們不可能隨著行數增多而增加公式,所以對于這種行數不確定的表格,我們有一種新的寫法,我將它稱為[y]公式,因為跟普通公式相比,它沒有橫坐標:

[column3] = [column2] - [column1]

只需要一行公式,AutoCalculate便會將公式應用于指定列名下的所有行,

合計列與小數位數

有時候,我們需要求某一列的和,雖然求某一列的和可能不是我們的最終目的,但卻是我們完成計算的必要步驟,如存在以下關系:

單元格③ = 單元格① / 單元格②

單元格②是GroupApprovedTotal列的合計值,我們用<列名>來表示,即:<GroupApprovedTotal>,加上這里的行不固定,需要用到[y]公式,所以公式應該寫成:

[GroupApprovedTotalPercent] = [GroupApprovedTotal] / <GroupApprovedTotal>

img

我們知道,在除法中,除數是不可以為0的,所以正確的寫法應該是:

[GroupApprovedTotalPercent] = <GroupApprovedTotal> === 0 ? 0 : [GroupApprovedTotal] / <GroupApprovedTotal>

當你將這條公式放你的代碼,并啟動程式后,聰明的你應該很快發現,你得到的值不夠精確,如上面單元格③顯示的數值是66.91%,如果你的單元格①和單元格②跟上圖的數值相同,你的單元格③很可能是67%,這是為什么呢?

默認的,AutoCalculate會將計算結果保留2位小數,67%,即0.67,如果想得到66.91%,即0.6691,那就是需要保留4位小數,這時,你需要告訴AutoCalculate,你需要保留4位小數,所以,完整的寫法應該是:

[GroupApprovedTotalPercent]#4 = <GroupApprovedTotal> === 0 ? 0 : [GroupApprovedTotal] / <GroupApprovedTotal>

在公式的等號左邊,被賦值單元格的右邊,加“#”號,緊跟著寫上小數位數,注意,“#”和小數位數之間不能有空格,前后可以有空格,

沒有RowNo的表格

終于到了回答這個問題的時候,我想問問大家,我們是如何在一個平面找到一個點的?答案就是需要這個點的橫坐標和縱坐標,同樣的,在一個表中,如何找到一個單元格?首先我們可以確定縱坐標,因為所有的列名都是已知的,關鍵就在于橫坐標的確定,采用RowNo來定位,大家一定會覺得似曾相識,因為它跟Excel左側的序號很像,但不代表只有數字才能作為橫坐標,只要值具有唯一性,即不重復,就可以作為橫坐標,

舉個例子,假設以下的表格是固定兩行,沒有RowNo,但是可以看出公司編號(BuCode)具有唯一性,那么BuCode就可以作為參考欄位,BuCode的值就是橫坐標,那么公式就可以寫成:

[SumDiffMonth1,F1136] = [GroupApprovalMonth1,F1136] - [Month1,F1136]
[SumDiffMonth1,F2056] = [GroupApprovalMonth1,F2056] - [Month1,F2056]

如果有RowNo,用RowNo做參考欄位時這樣寫:

[SumDiffMonth1,2] = [GroupApprovalMonth1,2] - [Month1,2]
[SumDiffMonth1,3] = [GroupApprovalMonth1,3] - [Month1,3]

img

跨資料源計算

何為跨資料源計算?用過Excel公式的朋友應該能看懂下面這個單元格的公式代表的意思,很明顯這個單元格的值是其他Sheet的資料經過運算后的值,跨資料源計算就是專門處理這樣的場景,

img

我們很少甚至不會在前臺做跨資料源計算,這里是想告訴大家如何書寫公式及呼叫AutoCalculate的方法,以便在“后臺用法”這一章節真正使用到它,

首先,為了取得其他資料源單元格的資料,我們需要拓展一下單元格,之前,我們的單元格是這樣的:[y,x],暫且稱為二元單元格吧,還有這樣的單元格:[y],成為一元單元格,現在,你會看到這樣的單元格:[外部資料源,y,x],即三元單元格,三元單元格的出現令到AutoCalculate定位單元格的能力從二維拓展到三維,即不管你有多少表,AutoCalculate都能找到你要的資料,

這是一條使用了三元單元格的公式:

[Month1,4] = [OutputTax,Month1,7] 

其中OutputTax是某個資料源的名稱,你可以任意取名,越簡潔越好,否則復雜的公式會被寫得很長,難以閱讀,

下面這條公式會從兩個資料源OutputTax和TaxRate取值:

[Month1,5] = [OutputTax,Month1,10] * (1 + [TaxRate,Month1,1] / 100)

我相信通過閱讀前面章節的內容,你已經能夠看懂下面公式的意思,其中前三行公式使用了外部資料源,并結合了區域公式的寫法,

img

是時候呼叫我們的計算方法了,為了演示效果,我添加了一個按鈕,并將方法寫在按鈕事件中

img

看看我們做了什么:

① 取得某個外部資料源outputTaxDatas

② 取得當前表格的資料源payableTaxDatas

③ 從資料庫獲取另一個外部資料源taxRateDatas

④ 這里是重點,先來看看AutoCalculate 的建構式,這里有兩個引數:

img

formulas:公式,一個陣列

options:可選引數,一個object物件

options有個屬性externalDatas,表示外部資料源,是一個陣列,因為資料可能有多個,每個陣列元素都是一個物件,有3個屬性:

name:外部資料源名稱,這里取什么名稱,對應公式中的外部資料源名稱

refField:參考欄位

datas:資料源

實體化AutoCalculate后,這里呼叫了一個新的方法calculate,它有2個引數:

img

gridDatas:需要重新計算的表格資料,是一個陣列

refField:參考欄位

AutoCalculate之所有支持所有的js表格控制元件以及能被后臺呼叫,就是借助于這個方法,因為不論是哪種js表格控制元件,都能夠提取出表格資料(純資料),資料通常是陣列形式,只要將這個陣列傳進來就可以了,

⑤ 呼叫calculate后,payableTaxDatas的值已經是運算過的最新值,現在將它系結到當前的表格即可,

運行程式后的界面:

img

點擊獲取資料后:

img

后臺用法

后臺呼叫AutoCalculate,我們需要用到V8引擎,還有一點很重要,后臺呼叫AutoCalculate也需要用到公式,我們之前的做法是將所有公式放在Extjs的Controller檔案中,如下圖:

img

為了方便后臺呼叫,我們將公式提取出來作為一個單獨的檔案

img

專案中對AutoCalculate后臺呼叫進行了封裝,使用非常簡單,

img

呼叫方法如圖:

img

還是分步決議:

① 保存當前表格的資料

② 獲取公式所在js檔案的目錄

③ 獲取兩個外部資料源

④ 呼叫封裝后的后臺方法,使用了第②步和第③步獲取的資料,其中FormulaExpression是公式運算式,即通過這個表達是來找到你提供的js檔案中的公式

⑤ 上一步回傳的newDatas已經是經過運算的最新資料,現在將這些資料保存到資料庫

注意事項

書寫公式時有兩點需要注意:

  1. 單元格中不允許出現空格

    //正確寫法:
    [Month12,1] = [Month11,1] * 10
    
    //錯誤寫法:
    [Month12,1 ] = [ Month11, 1] * 10
    
  2. 小數位數標記與小數位數之前不能有空格

    //正確寫法:
    [Month12,1] #3 = [Month11,1] * 10
    
    //錯誤寫法:
    [Month12,1] # 3 = [Month11,1] * 10
    

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/134948.html

標籤:其他

上一篇:textarea絕對定位百分比的情況會上下拖拽

下一篇:elementUI-分頁功能實作

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more