001 vue

https://cn.vuejs.org/

文章目錄

    • v-bind
    • v-model
    • v-on
    • 修飾符
    • 條件渲染/控制:v-if v-show
    • 列表渲染

M:即Model,模型,包括數據和一些基本操作
V:即View,視圖,頁面渲染結果
VM:即View-Model,模型與視圖間的雙向操作(無需開發人員干涉)
在MVVM前,開發人員從后端獲取需要的數據模型,然后要通過DOM操作Model渲染到View中。而后當用戶操作視圖,還需要通過DOM獲取View中的數據,然后同步到Model中。
而MVVM中的VM要做的事情就是把DOM操作完全封裝起來,開發人員不再關心Model和View之間是如何互相影響的
只要Model發生了改變,View上自然會表現出來
當用戶修改了View,Model中的數據也會跟著改變。。。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>vue快速入門</title>
</head>
<body><div id="app"><!--1.{{message}}:插值表達式2. message 就是從model的data數據池來設置3. 代碼執行時,會到data{}數據池中去匹配數據,如果匹配上,就進行替換,如果沒有匹配上,就輸出空--><h1>歡迎你{{message}}--{{name}}</h1></div><!--引入vue.js--><script src="vue.js"></script><script>//創建Vue對象/*** 1.創建Vue對象實例**/let vm = new Vue({el: "#app", //創建的vue實例掛載到 id=app的divdata: { //data{} 表示數據池(model有了數據),以k-v形式設置(根據需要設置)message: "Hello-Vue",name: "xd"}})console.log(vm._data.message);console.log(vm._data.name);console.log(vm.message);console.log(vm.name);</script></body>
</html>

注意代碼順序,要求div在前,script在后,否則無法綁定數據
Vue.js采用簡潔的模板語法來聲明式地將數據渲染進DOM的系統,做到數據和顯示分離
Vue沒有繁瑣的DOM操作,如果使用jQuery,我們需要先找到div節點,獲取到DOM對象,然后進行節點操作,顯然Vue更加簡潔

v-bind

v-bind指令可以完成基本數據渲染/綁定
v-bind簡寫形式就是一個冒號(:)
插值表達式是用在標簽體的
如果給標簽屬性綁定值,則使用v-bind指令

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>單向數據渲染</title>
</head>
<body><div id="app"><h1>{{message}}</h1><!--1.使用插值表達式引用data數據池數據是在標簽體內2.如果在標簽/元素的屬性上引用data數據池數據時,不能使用插值表達式,需要使用v-bind--><img v-bind:src="img_src" v-bind:width="img_width"><img v-bind:src="img_src" v-bind:width="img_width">
</div><script src="vue.js"></script>
<script>let vm = new Vue({el: "#app", //創建的vue實例掛載到 id=app的divdata: { //data{} 表示數據池(model有了數據),以k-v形式設置(根據需要設置)message: "hello",img_src: "1.png",img_width: "200px"}})</script>
</body>
</html>

v-model

v-model可以完成雙向數據綁定

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>雙向數據渲染</title>
</head>
<body>
<div id="app"><h1>{{message}}</h1><!--1.v-bind是數據單向渲染:data數據池綁定的數據變化,會影響view2.v-model="hobby.val" 是數據的雙向渲染,(1)data數據池綁定的數據變化,會影響view(2)view關聯的元素值變化,會影響data數據池的數據--><input type="text" v-model="hobby.val"><br /><input type="text" v-bind:value="hobby.val"><br /><p>你輸入的愛好是:{{hobby.val}}</p>
</div><script src="vue.js"></script>
<script>let vm = new Vue({el: "#app", //創建的vue實例掛載到 id=app的divdata: { //data{} 表示數據池(model有了數據),以k-v形式設置(根據需要設置)message: "hi,輸入你的愛好",hobby: {val: "購物"}}})</script>
</body>
</html>

v-on

使用v-on進行事件處理,比如:v-on:click表示處理鼠標點擊事件
事件調用的方法定義在vue對象聲明的methods節點中
v-on:事件名 可以綁定指定事件
如果方法沒有參數,可以省略()[需要瀏覽器支持]
v-on指定的簡寫形式 @[需要瀏覽器支持]
查看可以綁定的事件

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>事件處理</title>
</head>
<body>
<!--視圖-->
<div id="app"><h1>{{message}}</h1><!--1.v-on:click 表示給button元素綁定一個click的事件2.sayHi()表示綁定的方法,在方法池methods{}定義的--><button onclick="sayHi()">點擊輸出</button><button v-on:click="sayOk()">點擊輸出</button><button>點擊輸出</button><button>點擊輸出</button>
</div>
<!--引入vue.js-->
<script src="vue.js"></script>
<!--創建一個vue實例,并掛載到id=app的div-->
<script>let vm = new Vue({el: "#app", //創建的vue實例掛載到 id=app的divdata: { //data{} 表示數據池(model有了數據),以k-v形式設置(根據需要設置)message: "Vue事件處理的案例",name: "xd"},//是一個methods屬性,對應的值是對象//在{}中,可以寫很多的方法methods: {sayHi() {console.log("hi,1");},sayOk() {console.log("ok,2");}}})
</script>
</body>
</html>

修飾符

修飾符(Modifiers)是以(.)指明的后綴,指出某個指令以特殊方式綁定。
在事件處理程序中調用event,preventDefault()或event.stopPropagation()。
Vue.js為v-on提供了事件修飾符。
.stop
.prevent
.capture
.self
.once
.passive

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>Vue修飾符使用</title>
</head>
<body>
<div id="app"><!--1. 修飾符用于指出一個指令應該以特殊方式綁定。2. v-on:submit.prevent的.prevent 修飾符表示阻止表單提交的默認行為3. 執行 程序員指定的方法--><form action="http://www.baidu.com" v-on:submit.prevent="onMySubmit">妖怪名: <input type="text" v-model="monster.name"><br/><br/><button type="submit">注冊</button></form><p>服務返回的數據是{{count}}</p><h1>修飾符擴展案例</h1><button v-on:click.once="onMySubmit">點擊一次</button><br/><input type="text" v-on:keyup.enter="onMySubmit"><input type="text" v-on:keyup.down="onMySubmit"><input type="text" v-model.trim="count">
</div>
<script src="vue.js"></script>
<script>let vm = new Vue({el: '#app',data: {//數據池monster: {//monster數據(對象)的屬性, 可以動態生成},count: 0},methods: {//方法池onMySubmit() {//console.log("我們自己的表單提交處理...");//"", null, undefined都是falseif(this.monster.name) {console.log("提交表單 name=", this.monster.name);//這里,程序員就可以根據自己的業務發出ajax請求到后端//得到數據后,在進行數據更新this.count = 666;} else {this.count = 0;console.log("請輸入名字..");}}}})
</script>
</body>
</html>

條件渲染/控制:v-if v-show

Vue提供了v-if和v-show條件指令完成條件渲染/控制
v-if會確保在切換過程中,條件塊內的事件監聽器和子組件銷毀和重建
v-show機制相對簡單,不管初始條件是什么,元素總是會被渲染,并且只是對CSS進行切換
使用建議:如果要頻繁地切換,建議使用v-show;如果運行時條件很少改變,使用v-if較好

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>條件渲染 v-if</title>
</head>
<body>
<div id="app"><!--這里還可以看到checkbox的 checked屬性的值--><input type="checkbox" v-model="sel">是否同意條款[v-if實現]<!--v-if/v-else 會根據 返回的值,來決定是否動態創建對應的子組件 <h1>--><h1 v-if="sel">你同意條款</h1><h1 v-else>你不同意條款</h1>
</div>
<script src="vue.js"></script>
<script>//為了調試方便, 使用vm接收Vue實例let vm = new Vue({el: '#app',data: {//data數據池sel: false}})
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>條件渲染 v-show</title>
</head>
<body>
<div id="app"><!--這里還可以看到checkbox的 checked屬性的值--><input type="checkbox" v-model="sel">是否同意條款[v-show實現]<h1 v-show="sel">你同意條款</h1><h1 v-show="!sel">你不同意條款</h1>
</div>
<script src="vue.js"></script>
<script>//為了調試方便, 使用vm接收Vue實例let vm = new Vue({el: '#app',data: {//data數據池sel: false}})
</script>
</body>
</html>

列表渲染

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>v-for 列表渲染</title>
</head>
<body>
<div id="app"><!--基本語法:<li v-for="變量 in 數字">{{ 變量 }}</li>--><h1>簡單的列表渲染</h1><ul><li v-for="i in 3">{{i}}</li></ul><!--基本語法:<li v-for="(變量, 索引) in 值">{{ 變量 }} - {{ 索引 }}</li>--><h1>簡單的列表渲染-帶索引</h1><ul><li v-for="(i,index) in 3">{{i}}-{{index}}</li></ul><h1>遍歷數據列表</h1><!-- 語法:<tr v-for="對象 in 對象數組"><td>{{對象的屬性}}</td></tr>--><table width="400px" border="1px"><tr v-for="(monster,index) in monsters"><td>{{index}}</td><td>{{monster.id}}</td><td>{{monster.name}}</td><td>{{monster.age}}</td></tr></table>
</div>
<script src="vue.js"></script>
<script>new Vue({el: '#app',data: { //數據池monsters: [{id: 1, name: '牛魔王', age: 800},{id: 2, name: '黑山老妖', age: 900},{id: 3, name: '紅孩兒', age: 200}]}})
</script>
</body>
</html>

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

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

相關文章

Tomcat 負載均衡

目錄 二、Tomcat Web Server 2.1 Tomcat 部署 2.1.1 Tomcat 介紹 2.1.2 Tomcat 安裝 2.2 Tomcat 服務管理 2.2.1 Tomcat 啟停 2.2.2 目錄說明 2.2.3編輯主頁 2.3 Tomcat管理控制臺 2.3.1開啟遠程管理 2.3.2 配置遠程管理密碼 三、負載均衡 3.1 重新編譯Nginx 3.1.1 確…

使用SpringSecurity下,發生重定向異常

使用SpringSecurity下&#xff0c;發生空轉異常 環境信息&#xff1a; Spring Boot 3.4.4 &#xff0c; jdk 17 &#xff0c; springSecurity 6.4.4 問題背景&#xff1a; 沒有自定義controller &#xff0c;改寫了login 頁面&#xff0c;并且進行了成功后的跳轉處理&#xf…

S130N-ISI 全棧方案與云平臺深度協同:重構 PLC 開發新范式

一、什么是 PLC&#xff1f; 1.技術定義 PLC&#xff08;Power Line Communication&#xff09;是一種創新的通信技術&#xff0c;它以電力線作為天然的傳輸介質&#xff0c;通過先進的信號調制技術將高頻數據信號疊加于工頻電流之上&#xff0c;實現電力輸送與數據通信的雙頻共…

SU-YOLO:基于脈沖神經網絡的高效水下目標檢測模型解析

論文地址:https://arxiv.org/pdf/2503.24389 目錄 一、論文概述 二、創新點解析 1. 基于脈沖的水下圖像去噪(SpikeDenoiser) 原理與結構 2. 分離批歸一化(SeBN) 原理與結構 3. 優化的殘差塊(SU-Block) 原理與結構 三、代碼復現指南 環境配置 模型訓練 四、…

實現阿里云服務器上的文字聊天程序以及C語言寫的進程間通信(IPC)程序

實現阿里云服務器上的文字聊天程序以及C語言寫的進程間通信&#xff08;IPC&#xff09;程序 1. 基于 Linux 中的管道進行進程間通信 我們首先使用管道進行進程間通信&#xff0c;這對于簡單的聊天程序來說是一個比較簡單且實用的方法。 步驟&#xff1a; 創建管道&#xf…

COMSOL 與人工智能融合的多物理場應用:28個案例的思路、方法與工具概述

應用案例概述 基于 COMSOL 與人工智能&#xff08;AI&#xff09;結合的應用案例涵蓋了 28 個多領域場景&#xff0c;包括工程&#xff08;如熱傳導優化、結構力學預測&#xff09;、能源&#xff08;如電池熱管理、燃料電池性能&#xff09;、生物醫學&#xff08;如藥物傳遞…

SAN及其ZONE

目錄 一、什么是SAN? 二、什么是ZONE? 三、配置ZONE 2.1 核心概念 2.2 劃分原則 2.3 Zone劃分最佳實踐 2.4 配置語法 1). 基于端口&#xff08;Domain,Port&#xff09;的zone語法 2). 基于WWN&#xff08;World Wide Name&#xff09;的Zone語法 3). 使用Alias簡化配置 4).…

Springboot框架—單元測試操作

Springboot單元測試的操作步驟&#xff1a; 1.添加依賴spring-boot-starter-test 在pom.xml中添加依賴spring-boot-starter-test 2.在src/test/java下新建java class 3.單元測試入口代碼結構 import org.junit.Test; import org.junit.runner.RunWith; import org.springfra…

用AbortController取消事件綁定

視頻教程 React - &#x1f914; Abort Controller 到底是什么神仙玩意&#xff1f;看完這個視頻你就明白了&#xff01;&#x1f4a1;_嗶哩嗶哩_bilibili AbortController的好處之一是事件綁定的函數已無需具名函數,匿名函數也可以被取消事件綁定了 //該代碼2秒后點擊失效…

JavaScript性能優化(上)

1. 減少 DOM 操作 減少 DOM 操作是優化 JavaScript 性能的重要方法&#xff0c;因為頻繁的 DOM 操作會導致瀏覽器重繪和重排&#xff0c;從而影響性能。以下是一些具體的策略和技術&#xff0c;可以幫助有效減少 DOM 操作&#xff1a; 1.1. 批量更新 DOM 親切與母體&#xff…

OpenCV 圖形API(14)用于執行矩陣(或圖像)與一個標量值的逐元素乘法操作函數mulC()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 描述 將矩陣與標量相乘。 mulC 函數將給定矩陣 src 的每個元素乘以一個給定的標量值&#xff1a; dst ( I ) saturate ( src1 ( I ) ? multiplier ) \…

持續集成與Jenkins安裝使用教程

一、持續集成與Jenkins 持續集成&#xff08;Continuous integration&#xff0c;簡稱CI&#xff09;指的是&#xff0c;頻繁地&#xff08;一天多次&#xff09;將代碼集成到主干。 持續集成的目的&#xff0c;就是讓產品可以快速迭代&#xff0c;同時還能保持高質量。 它的…

TIM定時器

一、TIM定時器 STM32高級定時器實戰&#xff1a;PWM、捕獲與死區控制詳解-CSDN博客 玩轉STM32_rivencode的博客-CSDN博客 二、相關函數 1.TIM_TimeBaseInitTypeDef結構體講解 typedef struct {uint16_t TIM_Prescaler; // 預分頻器&#xff0c;用于設置定時器計數頻…

Python 小練習系列 | Vol.14:掌握偏函數 partial,用函數更絲滑!

&#x1f9e9; Python 小練習系列 | Vol.14&#xff1a;掌握偏函數 partial&#xff0c;用函數更絲滑&#xff01; 本節的 Python 小練習系列我們將聚焦一個 冷門但高能 的工具 —— functools.partial。它的作用類似于“函數的預設模板”&#xff0c;能幫你寫出更加靈活、優雅…

開源 PDF.js 文件編輯操作

一、PDF.js PDF.js 是 Mozilla 基金會推出的一個使用 HTML5 構建的 PDF 閱讀器&#xff0c;它完全使用 JavaScript 編寫。作為 Firefox 瀏覽器的默認 PDF 查看器&#xff0c;PDF.js 具有強大的兼容性和穩定性。它不僅支持 PDF 文件的查看和渲染&#xff0c;還提供了豐富的交互…

3D珠寶渲染用什么軟件比較好?渲染100邀請碼1a12

印度珠寶商 Mohar Fine Jewels 和英國寶石商 Gemfields 在今年推出了合作珠寶系列——「Emeralds in Full Bloom」&#xff0c;它的靈感源自花草綻放的春季田野&#xff0c;共有 39 件作品&#xff0c;下面這個以植物為主題的開口手鐲就是其中一件。 在數字時代&#xff0c;像這…

增益調度控制 —— 理論、案例與交互式 GUI 實現

目錄 增益調度控制 —— 理論、案例與交互式 GUI 實現一、引言二、增益調度控制的基本原理三、數學模型與公式推導四、增益調度控制的優勢與局限4.1 優勢4.2 局限五、典型案例分析5.1 案例一:航空飛行控制中的增益調度5.2 案例二:發動機推力控制中的增益調度5.3 案例三:化工…

PyTorch數據加載流程解析

1. 定義最簡單的Dataset import torch from torch.utils.data import Dataset, DataLoaderclass MyDataset(Dataset):def __init__(self, data):self.data data # 假設data是一個列表&#xff0c;如[10, 20, 30, 40]def __len__(self):return len(self.data) # 返回數據總量…

xsync腳本是一個基于rsync的工具

xsync腳本是一個基于rsync的工具&#xff0c;用于在集群間高效同步文件或目錄。以下是xsync腳本的詳細使用方法和配置步驟&#xff1a; 一、xsync腳本的作用 xsync腳本可以快速將文件或目錄分發到集群中的多個節點&#xff0c;避免了手動逐臺復制文件的繁瑣操作。它利用rsync…

250408_解決加載大量數據集速度過慢,耗時過長的問題

250408_解決加載Cifar10等大量數據集速度過慢&#xff0c;耗時過長的問題&#xff08;加載數據時多線程的坑&#xff09; 在做Cifar10圖像分類任務時&#xff0c;發現每個step時間過長&#xff0c;且在資源管理器中查看顯卡資源調用異常&#xff0c;主要表現為&#xff0c;顯卡…