主頁 > 企業開發 > 萬字血書Vue—Vue語法

萬字血書Vue—Vue語法

2023-03-17 19:33:00 企業開發

模板語法

插值語法

Mustache插值采用{{ }},用于決議標簽體內容,將Vue實體中的資料插入DOM中

 <h1>Hello {{name}}</h1>

指令語法

指令用于決議標簽,是vue為開發者提供的一套模板語法輔助開發者渲染頁面的基本結構

(指令是vue開發中最基礎、最常用、最簡單的知識點)(支持系結簡單的資料值之外,還支持js運算式運算)

內容渲染指令

1、v-text=" " 會覆寫元素內默認的值、無法寫HTML標簽陳述句

2、{{ }} 插值運算式(Mustache) 不會覆寫元素中默認的內容

3、v-html 可以渲染包含HTML標簽的字串

v-html有安全性問題,在網站上動態渲染任意HTML是非常危險的,容易導致XSS攻擊;永遠不要再用戶提交的內容上使用v-html

屬性系結指令

v-bind: 為元素的屬性動態系結屬性值

屬性:placeholder、src等

簡寫::

<a v-bind:href="https://www.cnblogs.com/gfhcg/archive/2023/03/17/url">點擊跳轉</a>
<a :href="https://www.cnblogs.com/gfhcg/archive/2023/03/17/url">點擊跳轉</a>
事件系結指令

v-on: 為DOM元素系結事件監聽

v-on:click=” “、v-on:input、v-on:keyup

事件處理函式,需要在methods節點中進行宣告

簡寫:@、如果事件處理函式的代碼足夠簡單,只有一行代碼,則可以簡寫到行內

事件物件event
<body>
    <div id="app">{{username}}</div>
    <button @click="addcount($event,88)">
        點擊我
    </button>

    <script src="https://www.cnblogs.com/gfhcg/archive/2023/03/17/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                username:'zs',
                count:0
            },
            methods:{
                addcount(e,88){
                    const nowBgColor =e.target.style.backgroundColor
                    console.log(nowB gColor)
                    this.count+=1
                }
            }
        })
    </script>
</body>

系結事件并傳參,使用() 小括號,但會占用event的位置

$event是vue提供的特殊變數用于占位,用來表示原生事件引數物件event,使用e接受

事件修飾符

vue提供事件修飾符,來輔助程式員更方便的對事件的觸發進行控制

  • .stop阻止事件冒泡()里到外

  • .prevent 阻止默認行為()比如阻止跳轉

  • .capture捕獲模式觸發當前事件處理函式(外到里)

  • .self只有在event.target是當前元素自身時觸發事件處理函式

  • .once系結的事件只觸發一次

  • .passive事件的默認行為立即執行,無需等待事件回呼執行完畢

按鍵修飾符

監聽鍵盤事件時,我們經常需要判斷詳細的按鍵,此時可為鍵盤相關的事件添加按鍵修飾符

  • .enter、.delete、.esc、.space、.tab(特殊:只適用于keydown)、.up、.down、.left、.right
  • 系統修飾符(用法特殊):ctrl、alt、shift、mta 配合keyup使用:按下按鍵的同時需要再按下其他鍵,隨后事件才被觸發;keydown正常觸發事件
  • 也可以使用keyCode去指定具體的按鍵(不推薦)
  • Vue.config.keyCodes.自定義鍵名=鍵碼 可以去定制按鍵別名
雙向系結指令

v-model 在不操作DOM的情況下,快速獲取表單資料(只能配合表單元素一起使用)

<input type="text" v-model:value="https://www.cnblogs.com/gfhcg/archive/2023/03/17/username"/>
<input type="text" v-model="username"/>
v-model 指令的修飾符

方便用戶對輸入的內容進行處理

  • .number自動將用戶輸入值轉化為數值
  • .trim 自動過濾用戶輸入的首尾空白字符
  • .lazy 在change時更新而非input時更新(不實時更新,文本框失去焦點更新)
條件渲染指令

按需控制DOM的顯示和隱藏

v-if =" " 動態創建或移除DOM元素,有更高的切換開銷(重繪和回流)

v-else-if =" "v-else =" "

v-show=" " 動態為元素添加或移除display樣式,有更高的初始渲染開銷,

串列渲染指令

v-for=" " 輔助開發者基于一個陣列來回圈渲染相似的UI結構

特殊語法:item in items

<body>
   
    <div id="root">
        <!-- 遍歷陣列 -->
        <ul>
            <li v-for="item in persons" :key="item.id">
                {{item.id}}-{{item.name}}-{{item.age}}
            </li>
        </ul>
        <!-- 遍歷物件 -->
        <ul>
            <li v-for="(value,key) of cars" :key="key">
                {{key}}-{{value}}
            </li>
        </ul>
        <!-- 遍歷字串 -->
        <ul>
            <li v-for="(char,index) of str" :key="index">
                {{index}}-{{char}}
            </li>
        </ul>
        <!-- 遍歷指定次數 -->
        <ul>
            <li v-for="(number,index) of 5" :key="index">
                {{index}}-{{number}}
            </li>
        </ul>

    </div>
    <script type="text/javascript">
        Vue.config.productionTip = false;
        const vm=new Vue({
            el:'#root',
            data:{
                persons:[
                    {id:'001',name:'張三',age:18},
                    {id:'002',name:'李四',age:17},
                    {id:'003',name:'王五',age:42},
                ],
                cars:{
                    name:'Audi',
                    price:"70W",
                    color:"black"
                },
                str:"hello"

            }
        })
   
    </script>
    
</body>
for in和for of

for in一般遍歷物件,不建議遍歷陣列,遍歷陣列請使用for of或forEach,

v-for中的索引

(item,index) in items

注:v-for中的item項和index索引都是形參,任意命名

key作用和原理

當串列的資料變化(添加、洗掉)時,vue會盡可能復用已存在的DOM元素,從而提升渲染的性能,但這種性能優化策略會導致有狀態的串列無法被正確更新,key的使用將減少不必要的DOM操作,提高更新效率,

解釋:

Vue根據初始資料生成初始虛擬DOM(Vnodes),將虛擬DOM轉為真實DOM,用戶添加新的資料,產生新虛擬DOM(Vnodes),此時將兩份虛擬DOM根據key進行對比(diff 演算法),如果對比一樣的直接復用,將之前的真實DOM直接渲染;不一樣的無法復用,將其生成真實DOM,

  • 如果使用index作為key,diff對比時會完全錯位,所有節點都無法復用,效率降低,
  • 如果不指定key時,vue自動使用遍歷時的索引值index作為key,

為了給vue一個提示,以便它能跟蹤每個節點的身份,需要為每項提供一個唯一的key屬性

image

image

注:

  • key只能是字串或數字型別

  • key的值必須具有唯一性

  • 建議把資料項id屬性的值作為key的值,將index的值作為key的值沒有任何意義(https://blog.csdn.net/z591102/article/details/106682298/)

  • 建議使用v-for時一定要指定key的值(提升性能,防止串列狀態紊亂)

  • 但不存在對資料的操作,僅是渲染串列用于展示,使用index作為key沒有問題

image

其他內置指令

v-cloak沒有值,配合CSS,解決網速慢、服務器回應慢時未經決議的模板渲染到頁面上,Vue實體創建并接管容器后,會刪掉該屬性,

[v-cloak]:{
    display:none;
}

v-once沒有值,記錄初始值,在初次動態渲染后,就視為靜態內容,以后資料的改變不會引起v-once所在結構的更新,可以用于性能優化,

v-pre沒有值,跳過其所在節點的編譯程序,可以用它跳過:沒有使用指令語法、插值語法的節點,會加快編譯,

自定義指令

本質:將原生操作DOM進行二次封裝,

<body>
   
    <div id="root">
        <!-- v-big放大10倍 -->
        <h2>當前的n值是:<span v-text="n"></span></h2>
        <h2>放大10倍后的n值是:<span v-big="n"></span></h2>
        <button @click="n++">點位n++</button>
        <hr>
        <!-- v-fbind在v-bind基礎上,自動獲得焦點 -->
        <input type="text" v-fbind:value="https://www.cnblogs.com/gfhcg/archive/2023/03/17/n">
    </div>
    <script type="text/javascript">
        Vue.config.productionTip = false;
        const vm=new Vue({
            el:'#root',
            data:{
               n:0,
            },
            directives:{
                //函式式
                //何時會被呼叫:1、指令和元素成功系結;2、指令所在的模板被重新決議時
                big(element,binding){
                    element.innerText=binding.value*10
                },
                //錯誤寫法:
                fbind(element,binding){
                    element.value=https://www.cnblogs.com/gfhcg/archive/2023/03/17/binding.value
                    element.focus()//.focus()呼叫時機不對,此時input還未被插入頁面
                },
                //物件式
                fbind:{
                    //指令與元素成功系結時呼叫
                    bind(element,binding){
                        element.value=binding.value
                    },
                    //指令所在元素被插入頁面時呼叫
                    inserted(element,binding){
                        element.focus()
                    },
                    //指令所在模板被重新決議時呼叫
                    update (element,binding) {
                        element.value=binding.value
                    },
                }

            },
        })
   
    </script>

注意:

  • 命名多個單詞使用-分隔;
  • 指令中this的指向是window
  • 自定義指令默認都是區域指令,全域寫法:Vue.directive

計算屬性

計算屬性本質上就是一個function函式,它可以實時監聽data中資料的變化,并return一個計算后的新值,供組件渲染DOM時使用,

開發者需要以function函式的形式宣告到組件的computed節點

<template>
  <div>
    <input type="text" name="" id="" v-model.number="count">

    <p>{{count}} 乘以2的值為:{{plus}}</p>//必須當做普通屬性使用
  </div>
</template>

<script>
export default {
    name:'MyCount',
    data(){
        return{
            count:1,
        }
    },
    //必須定義在computed節點
    computed:{
        //必須是一個function函式
        plus(){
            //必須具有回傳值
            return this.count*2
        }
        
        //相當于
        
        plus:{
        //當讀取plus,get會被呼叫,且回傳值作為plus的值
        //get何時被呼叫?1、初次呼叫plus;2、所依賴的資料發生變化
        get(){
            return this.count*2
        }
      }
    }

}
</script>

側重于得到一個計算的結果,必須有return回傳值

計算屬性(computed)vs方法(methods):

相對于方法,計算屬性會快取計算結果,只有計算屬性的依賴項發生變化時,才會重新進行運算,因此計算屬性的性能會更好,

watch偵聽器

watch偵聽器允許開發者監視資料的變化,從而針對資料的變化做特定的操作

開發者需要在watch節點之下,定義自己的偵聽器

<script>
export default {
    name:'MyCount',
    data(){
        return{
            username:'',
        }
    },
   watch:{
       //當username發生改變時,呼叫 handler
       username:{
           handler(newVal,oldVal){
             console.log(newVal,oldVal) 
           }  
       }
      //簡寫
       username(newVal,oldVal){
           console.log(newVal,oldVal)     
       }       
   }
  
   }
</script>
<body>
    <div id="app">{{username}}</div>
    #匯入腳本檔案
    <script src="https://www.cnblogs.com/gfhcg/archive/2023/03/17/vue.js"></script>
    <script>
        const vm=new Vue({
            data(){
            return{
                   username:'zs'
            }
            }
        })
        vm.$mount=('#app')//掛載
        vm.$wtach('username',{ //第二種寫法
            handler(newVal,oldVal){
                console.log(newVal,oldVal)
            }
        })
        //簡寫
        vm.$wtach('username',function(newVal,oldVal){
            console.log(newVal,oldVal)            
        }
        })        
       
    </script>
</body>

應用場景

使用watch檢測用戶名是否可用,監聽username值得變化,并使用axios發起ajax請求,檢測當前輸入的用戶名是否可用

<script>

import axios from 'axios'

export default {
    name:'MyCount',
    data(){
        return{
            username:'',
        }
    },
 watch:{
    async username(newVal,oldVal){
        console.log(newVal,oldVal)
        const {data:res}=await axios.get('https://www.escook.cn/api/finduser'+newVal)
        //await簡化promise實體物件為資料
        console.log(res)
    }
 }

}
</script>
immediate選項

默認組件在初次加載完畢后不會呼叫watch偵聽器,如果想讓watch偵聽器立即被呼叫,則需要使用immediate選項

<script>

import axios from 'axios'

export default {
    name:'MyCount',
    data(){
        return{
            username:'',
        }
    },
 watch:{
//不能直接定義成方法,要讓監聽的資料指向一個配置物件
  username:{
    async handler(newVal,oldVal){
     const {data:res}=await axios.get('https://www.escook.cn/api/finduser'+newVal)
        //await簡化promise實體物件為資料
        console.log(res)
},
      //立即觸發watch偵聽器
      immediate:true,
      
 }
 }

}
</script>
deep選項

當watch偵聽的是一個物件,如果物件中的屬性值發生了變化,則無法被監聽到,需要使用deep選項偵聽所有屬性的變化,

<script>

import axios from 'axios'

export default {
    name:'MyCount',
    data(){
        return{
            username:'',
        }
    },
 watch:{
//不能直接定義成方法,要讓監聽的資料指向一個配置物件
  username:{
    async handler(newVal,oldVal){
     const {data:res}=await axios.get('https://www.escook.cn/api/finduser'+newVal)
        //await簡化promise實體物件為資料
        console.log(res)
},
      deep:true,//監視多級結構(物件)中所有屬性的變化
 }
 }

}
</script>

監視多級結構(物件)中單個屬性的變化

<script>

import axios from 'axios'

export default {
    name:'MyCount',
    data(){
        return{
            info:{username:'zs',password:'123456'}
            
        }
    },
 watch:{
//不能直接定義成方法,要讓監聽的資料指向一個配置物件
  'info.username':{//只想監聽info.username的屬性變化
    async handler(newVal,oldVal){
     const {data:res}=await axios.get('https://www.escook.cn/api/finduser'+newVal)
        //await簡化promise實體物件為資料
        console.log(res)
},
   
      deep:true,
 }
 }

}
</script>

計算屬性vs偵聽器

  • computed能完成的功能,watch都可以完成,都能完成的,優先使用computed,
  • watch可以完成的,computed不一定能完成,例如watch可以處理異步任務
  • 計算屬性和偵聽器側重的應用場景不同,
  1. 前者側重監聽多個值的變化,最終計算回傳一個新值

  2. 后者側重于單個資料的變化,最終執行特定的業務處理,不需要任何回傳值

兩個原則:

  • Vue所管理的函式,最好寫成普通函式,這樣this的指向才是vm或組件實體物件,否則指向window,
  • 所有不被Vue所管理的函式(定時器的回呼函式、ajax的回呼函式、Promise的回呼函式),最好寫成箭頭函式,這樣this的指向才是vm或組件實體物件,否則指向window,

系結樣式

系結class樣式

<!--字串寫法,適用于樣式的類名不確定,需要動態指定-->
<h1  :class:"className">Hello World!</h1>
<!--陣列寫法,適用于樣式的個數和類名都不確定-->
<h1  :class:"classArr">Hello World!</h1>
<!--物件寫法,適用于樣式的個數和類名都確定,但要動態覺得用不用-->
<h1  :class:"classObj">Hello World!</h1>

系結style樣式

<!--動態指定-->
<h1  :style="{fontSize: fsize+'px';}">Hello World!</h1>
<h1  :style="styleObj">Hello World!</h1>
<h1  :style="[styleObj1,styleObj2]">Hello World!</h1>

過濾器

(Vue3.x廢棄,用計算屬性、方法代替)

什么是過濾器?

過濾器(Filters)常用于文本的格式化,本質是一個函式

過濾器應該被添加到js運算式的尾部,由“管道符”進行呼叫

  • 用于插值運算式
  • 用于v-bind屬性系結

定義(區域)過濾器

在創建vue實體期間,可以在filters節點中定義過 濾器

私有和全域過濾器

私有過濾器:只能在被vm實體控制的區域下控制

如果想在多個vue實體之間共享過濾器,則可以按照如下格式宣告全域過濾器:

 <script>
        vue.filter('capitalize',(str)=>{
            return str.charAt(0).toUpperCase() + str.slice(1)+'--'
        })
        new Vue...
</script>

注:如果二者沖突以私有過濾器為準,就近原則

連續呼叫多個過濾器

過濾器可以串聯的地呼叫

{{message | capitalize | maxlength}

過濾器傳參

過濾器本質是js函式,第一個引數永遠是管道符前面的值,第二個引數開始才是arg1、arg2...

{{message | filterA(agr1,arg2)}
 
vue.filter('filterA',(msg,arg1,aarg2)=>{})

過濾器的兼容性

在vue3.x版本中已經剔除了過濾器相關功能,可以使用計算方法或屬性來代替

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

標籤:其他

上一篇:uni-app 實作輪播圖組件父容器背景色隨圖片主題色改變

下一篇:萬字血書Vue-Vue進階

標籤雲
其他(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