vue詳解(4)

1. v-model 原理

  • 原理:v-model本質上是一個語法糖。例如應用在輸入框上,就是 value屬性input事件 的合寫。
  • 作用:提供數據的雙向綁定。① 數據變,視圖跟著變 :value;② 視圖變,數據跟著變 @input
  • 注意:$event 用于在模板中,獲取事件的形參
<template>
<div id="app" >
<input v-model="msg" type="text">
<input :value="msg" @input="msg = $event.target.value" type="text">
</div>
</template>

2. 表單類組件封裝 & v-model 簡化代碼

  • 1.表單類組件 封裝 → 實現 子組件 和 父組件數據 的雙向綁定
    父傳子:數據 應該是父組件 props 傳遞 過來的,拆解 v-model 綁定數據
    子傳父:監聽輸入,子傳父傳值給父組件修改
    (下拉菜單監聽事件:@change
//父組件使用
//$event拿到當前時間的形參
<BaseSelect :cityId="selectId" @事件名="selecteId = $event" />
<select :value="cityId" @change="handleChange">...</select>
//子組件封裝,子組件不能寫v-model是因為數據是父組件的,而不是自己的,所以不能使用v-model
props: {
cityId: String
},
methods: {
handleChange (e) {
//e為觸發的事件 e.target為觸發事件的事件源
this.$emit('事件名', e.target.value)
}
}
  • 父組件 v-model 簡化代碼,實現 子組件 和 父組件數據 雙向綁定
    ① 子組件中:props 通過 value 接收,事件觸發 input
    ② 父組件中:v-model 給組件直接綁數據 (:value + @input )
//父組件使用
//:value="selectId"和@input="selectId = $event"
<BaseSelect v-model="selectId"></BaseSelect>
//子組件封裝
<select :value="value" @change="handleChange">...</select>
props: {
value: String
},
methods: {
handleChange (e) {
this.$emit('input', e.target.value)
}
}

3 .sync 修飾符

  • 作用:可以實現 子組件父組件數據雙向綁定,簡化代碼
  • 特點:prop屬性名,可以自定義,非固定為 value
  • 場景:封裝彈框類的基礎組件, visible屬性 true顯示 false隱藏
  • 本質:就是 :屬性名@update:屬性名 合寫
//父組件使用
BaseDialog :visible.sync="isShow" />
<BaseDialog
:visible="isShow" 
@update:visible="isShow = $event"
/>
//子組件封裝
props: {
visible: Boolean
},
this.$emit('update:visible', false)

4. ref 和 $refs

  • 作用:利用 ref 和 $refs 可以用于 獲取 dom 元素, 或 組件實例
  • **特點:**查找范圍 → 當前組件內 (更精確穩定)
  • ① 獲取 dom:
    1.目標標簽 – 添加 ref 屬性
<div ref="chartRef">我是渲染圖表的容器</div>

2.恰當時機, 通過 this.$refs.xxx, 獲取目標標簽

mounted () {
console.log(this.$refs.chartRef)
},

(注:querySelector 查找范圍 → 整個頁面

// 基于準備好的dom,初始化echarts實例
const myChart = echarts.init(document.querySelector('.box'));

echarts的安裝:
npm install echarts --save

  • ② 獲取組件:
    1.目標組件 – 添加 ref 屬性
    <BaseForm ref="baseForm"></BaseForm>

2.恰當時機, 通過 this. r e f s . x x x , 獲取目標組件,就可以 ? ? 調用組件對象里面的方法 ? ? ‘ t h i s . refs.xxx, 獲取目標組件,就可以**調用組件對象里面的方法** `this. refs.xxx,獲取目標組件,就可以??調用組件對象里面的方法??this.refs.baseForm.組件方法()`

5. Vue異步更新、$nextTick

  • Vue 是 異步更新 DOM (提升性能)
  • $nextTick:等 DOM 更新后, 才會觸發執行此方法里的函數體
  • 語法: this.$nextTick(函數體)
this.$nextTick(() => {
this.$refs.inp.focus()
})

6、打包發布

  • 命令npm run build
    結果:在項目的根目錄會自動創建一個文件夾’dist’,dist中的文件就是打包后的文件,只需要放到服務器中即可。
  • 在vue.config.js里的defiConfig對象中加入publicPath: './

7、打包優化:路由懶加載

說明:為了防止打包構建應用時,JavaScript包會變得非常大,影響頁面加載。所以我們要把不同路由對應的組件分割成不同的代碼塊,然后當路由被訪問的時候才加載對應組件,這樣就更加高效

  • 異步組件改造(找到路由index.js)
    用戶頻繁訪問到的首頁等,就讓它進行默認加載;除了首頁的所有內容,按需加載
//導入,變成變量要往下放
const Login = () => import('@/views/login')
const Search = () => import('@views/search')
...
  • 路由中的應用
const rount = new VueRouter({routes: [...{ path: '/login/:id', component: Login },{ path: '/search', component: Search }...]
})

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14321.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14321.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14321.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【MySQL數據庫】CRUD 增 刪 改 查 超詳解,有這一篇就夠了!

? ? &#x1f525;個人主頁&#xff1a; 中草藥 &#x1f525;專欄&#xff1a;【MySQL】探秘&#xff1a;數據庫世界的瑞士軍刀 目錄 ??一.CRUD &#x1f9ea;二.新增&#xff08;Create&#xff09; &#x1f9eb;1.基本操作 &#x1f9ec;2.使用SELECT插入 &#x…

長難句5.24

There is pressure for change from within the profession, but opponents of change among the regulators insist that keeping outsiders out of a law firm isolates lawyers from the pressure to make money rather than serve clients ethically. 在(律師)行業內部也有…

云計算歷史、業務驅動因素和術語 (Cloud Computing History, Business Drivers and Terminologies)

云計算的歷史與定義 (History and Definition of Cloud Computing) 歷史 (History) 云計算的概念化始于很久以前&#xff0c;早在1963年。麻省理工學院從美國國防高級研究計劃局獲得研究資金&#xff0c;用于開發一種“計算機可同時被兩人或更多人使用”的技術。在早期的云計算…

區塊鏈錢包如果丟失了私鑰或助記詞,資產還能恢復嗎?

如果你丟失了區塊鏈錢包的私鑰或助記詞&#xff08;通常是用于恢復錢包的短語或種子&#xff09;&#xff0c;那么你的資產在大多數情況下是無法恢復的。私鑰是訪問和控制你在區塊鏈上資產的唯一憑證&#xff0c;而助記詞&#xff08;如BIP39標準中的12、18、24個單詞的短語&am…

centos常見命令總結

一、【寫在前面】 注意到csdn在鼓勵作者創作centos常見命令相關的文章&#xff0c;借此機會水一篇博文。 centos作為上個版本國內最常用的開源操作系統&#xff0c;占有量非常恐怖&#xff0c;排個前三應該沒有任何疑問。但是我建議直接去學ubuntu&#xff0c;因為主流在用的…

【系統架構師】-案例篇(十五)SOA、微服務與數據庫

1、可復用構件應具備哪些屬性 可用性&#xff1a;構件必須易于理解和使用。 質量&#xff1a;構件及其變形必須能正確工作。 適應性&#xff1a;構件應該易于通過參數化等方式在不同語境中進行配置。 可移植性&#xff1a;構件應能在不同的硬件運行平臺和軟件環境中工作。 可變…

Spring Boot實現RabbitMQ監聽消息的幾種方式

Spring Boot實現RabbitMQ監聽消息的幾種方式 在現代的分布式系統中&#xff0c;消息隊列扮演著至關重要的角色&#xff0c;用于解耦服務之間的通信&#xff0c;實現異步消息傳遞。而RabbitMQ作為其中一種常用的消息隊列服務&#xff0c;在Spring Boot中得到了廣泛的應用。本文…

pip(包管理器) for Python

pip是什么 pip是Python的包安裝程序&#xff0c;即python包管理器。您可以使用 pip 從Python包索引和其他索引安裝包。 1. pip 安裝 python 包 pip install 包名 例如&#xff1a;pip install pymssql &#xff1a; 使用pip安裝數據庫驅動包 pymssql 2.pip 卸載 python 包 pi…

【Axure教程】拖動換位選擇器

拖動換位選擇器通常用于從一個列表中選擇項目并將其移動到另一個列表中。用戶可以通過拖動選項來實現選擇和移動。這種交互方式在許多Web應用程序中很常見&#xff0c;特別是在需要對項目分組的情況下。 所以今天作者就教大家怎么在Axure用中繼器制作一個拖動換位選擇器的原型…

告別硬編碼:Spring條件注解優雅應對多類場景

一、背景 在當今的軟件開發中&#xff0c;服務接口通常需要對應多個實現類&#xff0c;以滿足不同的需求和場景。舉例來說&#xff0c;假設我們是一家2B公司&#xff0c;公司的產品具備對象存儲服務的能力。然而&#xff0c;在不同的合作機構部署時&#xff0c;發現每家公司底…

RedisTemplateAPI:List

文章目錄 ?介紹?List的常見命令有?RedisTemplate API????添加緩存????將List放入緩存????設置過期時間(單獨設置)????獲取List緩存全部內容&#xff08;起始索引&#xff0c;結束索引&#xff09;????從左或從右彈出一個元素????根據索引查詢元素?…

探索 Rust 語言的精髓:深入 Rust 標準庫

探索 Rust 語言的精髓&#xff1a;深入 Rust 標準庫 Rust&#xff0c;這門現代編程語言以其內存安全、并發性和性能優勢而聞名。它不僅在系統編程領域展現出強大的能力&#xff0c;也越來越多地被應用于WebAssembly、嵌入式系統、分布式服務等眾多領域。Rust 的成功&#xff0…

Day25:Leetcode:669. 修剪二叉搜索樹 + 108.將有序數組轉換為二叉搜索樹 + 538.把二叉搜索樹轉換為累加樹

LeetCode&#xff1a;669. 修剪二叉搜索樹 問題描述 解決方案&#xff1a; 1.思路 2.代碼實現 class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if (root null) {return null;}if (root.val < low) {return trimBST(root.right, low, hi…

Nginx文件解析漏洞復現:CVE-2013-4547

漏洞原理 CVE-2013-4547漏洞是由于非法字符空格和截止符導致Nginx在解析URL時的有限狀態機混亂&#xff0c;導致攻擊者可以通過一個非編碼空格繞過后綴名限制。假設服務器中存在文件1. jpg&#xff0c;則可以通過改包訪問讓服務器認為訪問的為PHP文件。 漏洞復現 開啟靶場 …

Energia單片機實驗-飲水機模擬

一、要求分析 利用狀態機程序思想&#xff0c;使用MSP-EXP430F5529 Launchpad板卡實現以下模擬飲水機的功能。 飲水機是我們生活中常見的家用設備。假設一個簡易的飲水機有兩個按鍵&#xff1a;童鎖按鍵[PUSH1]和熱水按鍵[PUSH2]。 按鍵功能說明&#xff1a; 1.童鎖按鍵&#x…

聯盟 | 歌者 AIPPT X HelpLook攜手,開啟企業高效辦公新時代

面對日益增長的工作負荷和追求效率優化的壓力&#xff0c;企業知識的積累與傳播顯得愈發重要。如何系統化地沉淀員工與企業的知識精華&#xff1f;如何快速分享內外部知識&#xff1f;更重要的是&#xff0c;如何在獲取這些知識后&#xff0c;迅速將其轉化為精美的PPT&#xff…

USB-HID 鍵盤描述符簡介

USB-HID 鍵盤描述符簡介 USB-HID鍵盤設備描述符&#xff1a; #define DEVICE_DESCRIPTOR_SIZE 0x12 #define USB_CTRL_TEST_SZIE 8 #define CONFIG_DESCRIPTOR_SIZE_DUSB 0x0029 //0x0022//0x0029 #define HID_REPORT_DESCRIPTOR_SIZE_DUSB 0x004…

人類交互3 皮膚感覺與運動系統

皮膚感覺概述 皮膚是人體最大的器官之一&#xff0c;具有多種感覺功能&#xff0c;包括&#xff1a; 觸覺&#xff1a;通過觸覺&#xff0c;我們能感知物體的形狀、質地&#xff0c;幫助我們與外界環境進行互動和感知周圍物體的特征。 熱覺&#xff1a;熱覺使我們能感知周圍環…

ridge lightgbm catboost

本文從理論基礎、代碼實踐、內容總結三個方面來展示預測的三大基礎模型與手動調參自動調參內容細節。 一、理論基礎 ridgeRegression 圖片: https://uploader.shimo.im/f/uX43BitluzbQeqht.jpg!thumbnail?accessTokeneyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1Q…

哪款電腦桌面日歷記事本軟件好用?推薦優秀的電腦日歷記事本

對于眾多上班族而言&#xff0c;每天在電腦前忙碌已成為生活常態。若想提升工作效率&#xff0c;簡化繁瑣的工作流程&#xff0c;選擇一款出色的電腦桌面日歷與記事本軟件就顯得至關重要。 然而&#xff0c;在Windows操作系統上設定提醒顯得相當繁瑣&#xff0c;而系統自帶的記…