vue零基礎

vue 與其他框架的對比

框架設計模式數據綁定靈活度文件模式復雜性學習曲線生態
VueMVVM雙向靈活單文件完善
ReactMVC單向較靈活all in js豐富
AngularMVC雙向固定多文件較大較陡(Typescript)獨立

更多對比細節:vue 官網:https://cn.vuejs.org/v2/guide/comparison.html

Vue 是一個推陳出新的前端框架,吸收了很多前端框架的優點。例如,Vue 借鑒了 React 的組件化和虛擬 DOM ,借鑒了 Angular 的模塊化和數據綁定。因此,我們以 Vue.js 作為入手,以后深入學習其他框架,你會發現他們的共通之處,更好地高效地學習。

選擇 Vue.js 的更多原因是,就框架的 API 而言,對比之下,Vue 更加輕便簡潔。Vue 自身擁有開箱即用的生態開發包(Vuex,Vue-Router)等,復雜性低、學習成本低,是一門比較好入門的前端框架。

如果你剛開始學習前端開發,將框架作為你的第一步可能不是最好的選擇,推薦進入實驗樓前端基礎知識課程。假入你已掌握了關于 HTMLCSSJavaScript 的中級知識,那讓我們進入 Vue 的學習吧!

每個 Vue 應用都是通過用 Vue 函數創建一個新的 Vue 實例 開始的:

var app = new Vue({// 選項
});

vue框架就是很簡單的,新手可以在html的head標簽里面直接引入一個帶有vue連接的script就ok

Vue.js 的核心是一個允許采用簡潔的模板語法來聲明式地將數據渲染進 DOM 的系統,我們新建一個.html 后綴的文件,輸入以下代碼,運行(右擊文件 > open with > Preview 或 Mini Browser),你就會看到 {{msg}} 被渲染成 hello

<!doctype html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>syl-vue-test</title><!-- 通過cdn方式引入 vue.js --><script src="https://labfile.oss.aliyuncs.com/courses/1262/vue.min.js"></script></head><body><div id="app">{{msg}}</div><script>var app = new Vue({el: "#app", //dom掛載點data: {//數據項msg: "hello syl",},});</script></body>
</html>

運行效果:

此處輸入圖片的描述

說明: el 為實例掛載點,上面表示掛載在 id 為 app 的 dom 元素中。data 選項為數據選項,存放綁定數據。除了這兩個之外還有實例選項,methods(實例方法)、computed(計算屬性) 等,后面我們會學習到。

雙大括號

雙大括號 {{ }} 在 Vue.js 中被用作文本插值的語法,這是一種在模板中輸出數據到 HTML 的簡單方式。當你在 Vue.js 的模板中使用 {{msg}} 時,Vue 會自動將其替換為與其綁定的數據屬性 msg 的當前值。

在你給出的例子中:

  • <input type="text" v-model="msg" /> 這行 HTML 代碼創建了一個文本輸入框,并通過 v-model 指令將其值與 Vue 實例的 msg 數據屬性雙向綁定。這意味著,當你在輸入框中輸入文本時,msg 屬性的值會實時更新,反之亦然。
  • <p>{{msg}}</p> 這行 HTML 代碼將會在 <p> 標簽中顯示 msg 屬性的值。當 msg 的值發生變化時(比如你在輸入框中輸入了文本),這個變化會立即反映在 <p> 標簽中的內容上。

所以,雙大括號 {{ }} 內的內容是動態的,并且是響應式的。它不僅僅是簡單的文本輸入,而是一個數據綁定的表達式,Vue 會監控這個表達式關聯的數據屬性,一旦屬性值發生變化,模板中的內容也會自動更新。

總結來說,雙大括號 {{ }} 用于在 Vue 模板中輸出 JavaScript 表達式的結果。在 Vue.js 中,它是最基本的數據綁定形式,允許開發者將數據實時渲染到 DOM 中,非常適合構建動態交互的用戶界面。

上面的雙大括號表達式會將數據解釋為普通文本,即使你的數據為 HTML 元素,也不會渲染成對應的標簽元素,只能渲染成普通文本,而非 HTML 代碼,例子:

<!doctype html> 
<html lang="en">  <head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>syl-vue</title><!-- 通過cdn方式引入 vue.js --><script src="https://labfile.oss.aliyuncs.com/courses/1262/vue.min.js"></script></head><body>     <!-- 數據綁定 --> <div id="app"><p>{{msg}}</p></div><script>var app = new Vue({el: "#app", //el: 掛載點data: {           //data:數據選項msg: "<h1>hello syl</h1>", //這個標簽h1還是會作為h1文本進行輸出的},});</script></body>
</html>

tips:

在 Vue.js 中,el 屬性指的是“掛載點”,也就是 Vue 實例所要控制的 DOM 元素。這個 DOM 元素作為 Vue 實例的作用范圍。在你的代碼中,el: "#app" 告訴 Vue 實例要控制的 DOM 元素是頁面上 idapp 的元素。Vue 實例會管理這個元素及其內部的所有內容。

data 屬性是 Vue 實例的一個選項,用于聲明所有這個實例要用到的數據。這些數據是響應式的,意味著當這些數據變化時,綁定這些數據的視圖也會自動更新。

關于逗號的使用,JavaScript 中的對象由鍵值對構成,這些鍵值對就是屬性名和它們對應的值。在對象字面量的表示法中,每個鍵值對之間都用逗號 , 分隔。例如:

var app = new Vue({el: "#app",  // 這里的逗號分隔了 el 和 data 兩個不同的屬性data: {msg: "<h1>hello syl</h1>",},  // 這里的逗號在實際中不是必需的,因為后面沒有緊跟其他屬性,但放置逗號是一種常見的做法,便于后續添加新屬性
});

data 對象內部,如果你有多個屬性,它們也會用逗號分隔。逗號是 JavaScript 對象以及許多其他結構(如數組)中分隔元素的標準方式。在實踐中,最后一個屬性后面的逗號是可選的,但有的開發者喜歡加上它,也可以不加上去,因為這樣添加新屬性時更方便。這通常被稱為“尾逗號”(trailing comma)。

雙大括號語法不能作用在 HTML 特性(標簽屬性)上,需要對標簽屬性操作,應該使用 v-bind 指令:

<div v-bind:class="syl-vue-course"></div>

HTML 標簽屬性為布爾特性時,它們的存在表示為 truev-bind 工作起來略有不同,在這個例子中:

<!doctype html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>syl-vue</title><!-- 通過cdn方式引入 vue.js --><script src="https://labfile.oss.aliyuncs.com/courses/1262/vue.min.js"></script></head><body><!-- 布爾特性綁定--><div id="app"><input type="checkbox" v-bind:checked="isChecked" /></div><script>var app = new Vue({el: "#app",data: {isChecked: false, // isChecked是否選中boolean},});</script></body>
</html>

一些指令能夠接收一個“參數”,在指令名稱之后以冒號表示。例如,v-bind 指令可以用于響應式地更新 HTML 特性,在這里 href 是參數,告知 v-bind 指令將該元素的 href 特性與表達式 url 的值綁定,例子:

<!doctype html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>syl-vue</title><!-- 通過cdn方式引入 vue.js --><script src="https://labfile.oss.aliyuncs.com/courses/1262/vue.min.js"></script></head><body><!-- 指令 參數--><div id="app"><a v-bind:href="url">123</a></div><script>var app = new Vue({el: "#app",data: {url: "https://www.baidu.com",},});</script></body>
</html>

另外一個例子,v-on 指令,用于監聽 DOM 事件,例子:

<!doctype html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>syl-vue</title><!-- 通過cdn方式引入 vue.js --><script src="https://labfile.oss.aliyuncs.com/courses/1262/vue.min.js"></script></head><body><!-- 指令 參數--><div id="app"><p>我叫:{{name}}</p><!-- handleClick 使我們在實例 methods 中寫的方法 --><button v-on:click="handleClick">點我</button><p v-bind:class="'col'+colNum">syl</p></div><script>var app = new Vue({el: "#app",data: {name: "實驗樓",colNum: "12",},methods: {//實例方法對象handleClick: function () {this.name = this.name.split("").reverse().join("");},},});</script></body>
</html>

在 Vue.js 中,v-bind:class 用于動態地綁定 class 屬性。這個指令后面通常跟著一個 JavaScript 表達式。

在你提供的代碼中:

<p v-bind:class="'col'+colNum">syl</p>

'col' + colNum 是一個字符串拼接的表達式,它將 'col' 字符串與 colNum 數據屬性的值拼接起來。如果 colNum 的值為 "12"(如你的 Vue 實例中定義的那樣),那么這個表達式的結果就是字符串 "col12"

這意味著 Vue 會將這個計算后的字符串值綁定到 <p> 元素的 class 屬性上。所以,最終渲染到 DOM 上的 HTML 會是這樣的:

<p class="col12">syl</p>

這樣你就可以根據 colNum 的值來動態地設置 <p> 元素的類名,這在響應式布局框架(如 Bootstrap)中非常有用,其中 col-12 類型的類名用于指定元素在網格系統中占據的列數。如果你改變了 colNum 的值,那么綁定的類名也會相應地改變。

類似的操作在這里:

在 Vue.js 中,除了 v-bind 用于綁定 HTML 特性外,還有許多其他指令和技術可以用來實現不同的動態行為和數據綁定。下面是一些常用的 Vue 指令和它們的用途:

  1. v-model

    • 用于在表單元素上創建雙向數據綁定。它會根據控件類型自動選取正確的方法來更新元素。
    <input v-model="message" placeholder="編輯我...">
    
  2. v-for

    • 用于基于源數據多次渲染一個元素或模板塊。可以用于渲染列表。
    <ul><li v-for="item in items">{{ item.text }}</li>
    </ul>
    
  3. v-if / v-else-if / v-else

    • 用于條件渲染一塊內容。只有表達式返回真值時才渲染。
    <p v-if="seen">現在你看到我了</p>
    
  4. v-show

    • 類似于 v-if,但是它通過切換 CSS 的 display 屬性來顯示或隱藏元素。
    <p v-show="isVisible">你可以看到我嗎?</p>
    
  5. v-on

    • 用于監聽 DOM 事件,并在觸發時執行一些 JavaScript 代碼。
    <button v-on:click="doSomething">點擊我</button>
    
  6. v-slot

    • 用于編寫可復用的模板組件,允許子組件內部的內容通過插槽分發。
  7. v-pre

    • 跳過這個元素和它的子元素的編譯過程。可以用來顯示原始的 Mustache 標簽。
    <span v-pre>{{ this will not be compiled }}</span>
    
  8. v-cloak

    • 保持在元素上直到關聯實例結束編譯。配合 CSS 規則 [v-cloak] { display: none } 可以隱藏未編譯的 Mustache 標簽直到 Vue 實例準備就緒。
  9. v-once

    • 執行一次性的插值,當數據改變時,插值處的內容不會更新。
    <span v-once>這個將不會改變: {{ msg }}</span>
    

每個指令都有其特定的用例和功能,使 Vue.js 強大而靈活,可以輕松地處理各種動態網頁和應用的需求。通過組合使用這些指令,你可以構建出高度交互和響應式的用戶界面。

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

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

相關文章

matplotlib繪圖時show函數需在save函數后

matplotlib繪圖時&#xff0c;先調用show&#xff0c;后調用save函數保存圖像&#xff0c;否則無法保存圖像信息 figsize 23,10 #fig, axes plt.subplots(nrows1, ncols2) fig, axs plt.subplots(4, 3, sharexcol,shareyrow,figsizefigsize) # 在每個子圖中繪制一個圖形 pi…

2023-12-05 Qt學習總結3

點擊 <C 語言編程核心突破> 快速C語言入門 Qt學習總結 前言九 QObject基類十 QWidget基類十一 QMainWindow類總結 前言 要解決問題: 學習qt最核心知識, 多一個都不學. 九 QObject基類 QObject是Qt中最基本的類&#xff0c;所有Qt中的對象都從該基類派生而來。 QObjec…

Hbase2.5.5分布式部署安裝記錄

文章目錄 1 環境準備1.1 節點部署情況1.2 安裝說明 2 Hbase安裝過程Step1&#xff1a;Step2:Step3:Step4&#xff1a; 3 Web UI檢查狀態并測試3.1 Web UI3.2 創建測試命名空間 1 環境準備 1.1 節點部署情況 Hadoop11&#xff1a;Hadoop3.1.4 、 zookeeper3.4.6、jdk8 Hadoop1…

JOSEF 靜態延時中間繼電器 JZS-7G/42 DC110V 導軌安裝

系列型號&#xff1a; JZS-7G-57端子排延時中間繼電器&#xff1b; JZS-7G-42X端子排延時中間繼電器&#xff1b; JZS-7G-22X端子排延時中間繼電器&#xff1b; JZS-7G-21端子排延時中間繼電器&#xff1b; JZS-7G-41端子排延時中間繼電器&#xff1b; JZS-7G-51端子排延…

git bash查看遠程倉庫地址

進入代碼路徑 git remote -vgit remote -v

MySQL執行語句 Table ‘mysql.servers‘ doesn‘t exist

執行語句報錯&#xff1a; mysql> flush privileges; ERROR 1146 (42S02): Table mysql.servers doesnt exist解決&#xff1a; 進入數據庫 刪除servers表 mysql> use mysql Database changed mysql> drop table if exists servers; Query OK, 0 rows affected, …

IoTDB服務安裝教程-單機版

文章目錄 單機版&#xff08;試用&#xff09;下載地址安裝環境安裝JDK設置最大文件打開數為 65535 安裝服務目錄結構如下啟動 IoTDB使用 Cli 工具IoTDB 的基本操作創建數據庫查看所有數據庫創建時間序列插入時間序列數據查詢數據退出會話 停止 IoTDB 單機版&#xff08;試用&a…

Day06(上) Liunx高級系統設計6-消息隊列

概述 消息隊列是消息的鏈表&#xff0c;存放在內存中&#xff0c;由內核維護 特點 1 、消息隊列中的消息是有類型的。 2 、消息隊列中的消息是有格式的。 3 、消息隊列可以實現消息的隨機查詢。消息不一定要以先進先出的次序讀取&#xff0c;編程時可以按消息的類型讀取。 …

排程系統中關于任務優先級的需求延伸與設計構思

無論是面向銷售訂單的MPS&#xff0c;還是基于多工序制約關系的APS&#xff0c;還是具體車間生產中針對單一工序的任務作業調度優化&#xff0c;都存在基于被排程對象(例如銷售訂單、生產工單、工序任務)的優先級進行優化的需求場景。當我們僅在宏觀、較高層次的角度考慮&#…

[go 面試] 緩存策略與應對數據庫壓力的良方

關注公眾號【愛發白日夢的后端】分享技術干貨、讀書筆記、開源項目、實戰經驗、高效開發工具等&#xff0c;您的關注將是我的更新動力&#xff01; 在高并發場景中&#xff0c;緩存是提高系統性能的關鍵利器。然而&#xff0c;緩存穿透、緩存擊穿、緩存雪崩等問題可能會給系統帶…

高效掃頻阻垢裝置廣譜感應水處理設備介紹工作原理使用參數和選型

? 1&#xff1a;高效掃頻阻垢裝置設備介紹 高效掃頻阻垢裝置是一種通過控制箱釋放變頻電磁信號&#xff0c;傳輸到信號放大裝置&#xff0c;管道外側的電磁線圈和電錘產生高頻機械振動&#xff0c;在管道和水中傳輸&#xff0c;通過共振機理破壞水分子之間的氫鍵&#xff0c;產…

記錄 | shell腳本開頭#!/bin/bash的作用

在 Shell 腳本中&#xff0c;#!/bin/bash 是指定腳本使用 Bash 解釋器的 shebang 語句。它出現在腳本的第一行&#xff0c;并告訴操作系統使用 Bash 解釋器來執行該腳本 #!/bin/bash....具體作用如下&#xff1a; 指定解釋器&#xff1a;#!/bin/bash 指定了使用 Bash 作為腳本…

Java - Lombok介紹、使用、工作原理、優缺點

介紹 Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging vari…

oracle修改SYS用戶(系統內置超級賬號)的方法和注意事項

Oracle數據庫中的SYS用戶是最高權限的賬號&#xff0c;擁有對整個數據庫的控制權。因此&#xff0c;在正常情況下&#xff0c;不建議修改SYS用戶。但是有些時候為了解決特定問題&#xff0c;可能需要修改SYS用戶的默認設置。 本文將介紹一些修改SYS用戶的方法和注意事項。 修…

算法Day28 二進制差異序列(格雷碼)

二進制差異序列&#xff08;格雷碼&#xff09; Description n 位二進制差異序列是一個由2^n個整數組成的序列&#xff0c;其中&#xff1a; 每個整數都在范圍[0, 2^n - 1]內&#xff08;含0和2^n - 1&#xff09; 第一個整數是0 一個整數在序列中出現不超過一次 每對相鄰整數…

linux 13-2day 日志輪轉 日志目錄 輪轉參數

目錄 日志系統rsyslog一、處理日志的進程二、常見的日志文件(系統、進程、應用程序)日志優先級 三、logrotate日志輪轉1、配置日志輪轉的路徑2、日志配置路徑四 、案例 日志系統rsyslog Linux 系統內核和許多程序會產生各種錯誤信息、告警信息和其他的提示信息&#xff0c; 這…

【go語言實踐】基礎篇 - 流程控制

if語句 go里面if不需要括號將條件表達式包含起來&#xff0c;這與python也有點類似 if 條件表達式 { } if num > 18 {// ... } else if num > 20 {// ... } else {// ... }需要注意的是go支持在if的條件表達式中直接定義一個變量&#xff0c;變量的作用域只在if范圍內…

【網絡安全】CTF入門教程(非常詳細)從零基礎入門到進階,看這一篇就夠了!

一、CTF簡介 CTF&#xff08;Capture The Flag&#xff09;中文一般譯作奪旗賽&#xff0c;在網絡安全領域中指的是網絡安全技術人員之間進行技術競技的一種比賽形式。CTF起源于1996年DEFCON全球黑客大會&#xff0c;以代替之前黑客們通過互相發起真實攻擊進行技術比拼的方式。…

計算機丟失msvcp140dll怎么恢復?快速解決dll缺失問題

在計算機使用過程中&#xff0c;我們經常會遇到一些錯誤提示&#xff0c;其中之一就是“msvcp140dll丟失”。msvcp140.dll是一個動態鏈接庫文件&#xff0c;它包含了許多C標準庫函數的實現。這些動態鏈接庫文件是程序運行所必需的&#xff0c;它們包含了許多函數和資源&#xf…

圣誕新奇驚喜:利用 AI 技術幫助圣誕老人創建手寫信件

人工智能甚至正在接管北極的任務。在即將到來的圣誕節假期之前&#xff0c;圣誕老人和他的助手們迎來了一項革命性的技術支持。一群樂于助人的精靈采用了人工智能技術&#xff0c;制作出獨一無二、看似親手書寫的信件&#xff0c;以確保遵守圣誕老人的「北極標準」。 這些信件通…