1.2.vue插值表達式

在 Vue.js 中,插值表達式是用于在模板中顯示數據的一種方式。它使用雙大括號語法 {{ }} 來包裹需要輸出的變量或表達式的值。Vue 會自動將這些表達式的值插入到 HTML 文檔中相應的位置。

插值表達式

基本用法

最基本的插值表達式形式就是直接在模板中引用 Vue 實例中的數據屬性:

<div id="app">{{ message }}
</div>

對應的 JavaScript 代碼

new Vue({el: '#app',data: {message: 'Hello Vue!'}
});

當這個 Vue 實例被創建時,{{ message }} 將會被替換為 'Hello Vue!'

表達式支持

在插值表達式中,你不僅可以綁定簡單的數據屬性,還可以使用更為復雜的 JavaScript 表達式:

  • 三元運算符

    <p>{{ isOk ? 'Yes' : 'No' }}</p>
  • 簡單算術運算

    <p>{{ number + 1 }}</p>
  • 方法調用
<div id="app"><!-- 調用 reverseMessage 方法 --><p>原始消息: {{ message }}</p><p>反轉后的消息: {{ reverseMessage() }}</p>
</div><script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script>
new Vue({el: '#app',data: {message: 'Hello Vue!'},methods: {reverseMessage: function () {return this.message.split('').reverse().join('');}}
});
</script>
  • 插值表達式支持 JavaScript 的全局對象和函數
//字符串方法
<p>{{ message.toUpperCase() }}</p> <!-- 轉大寫 -->
<p>{{ message.substring(0, 5) }}</p> <!-- 截取字符串 -->
<p>{{ message.split(' ').join('-') }}</p> <!-- 分割并連接 -->// 數學函數
<p>{{ Math.round(3.14159) }}</p> <!-- 四舍五入 -->
<p>{{ Math.max(1, 3, 2) }}</p> <!-- 最大值 -->
<p>{{ Math.min(1, 3, 2) }}</p> <!-- 最小值 -->//數組方法
<p>{{ items.reverse().join(', ') }}</p> <!-- 反轉數組并連接 -->
<p>{{ items.slice(0, 3).join(', ') }}</p> <!-- 截取數組前3項 -->
<p>{{ items.map(item => item * 2).join(', ') }}</p> <!-- 數組映射 -->// 其他全局函數
<p>{{ isNaN(value) }}</p> <!-- 檢查是否為 NaN -->
<p>{{ parseFloat('3.14') + 1 }}</p> <!-- 解析浮點數 -->
<p>{{ String(123) }}</p> <!-- 轉換為字符串 -->

注意事項

  1. 只能是表達式:插值中只能包含單個表達式,不能包含語句(如 if, for, var 等)。例如,以下寫法是無效的:

<!-- 這不會工作 -->
<p>{{ var a = 1; a + 2 }}</p>

v-once 指令

如果你希望某個插值只渲染一次,而不隨著數據的變化而更新,可以使用 v-once 指令:

<span v-once>{{ message }}</span>

這意味著即使 message 在之后發生變化,該 <span> 標簽內的內容也不會隨之更新。

插值表達式是 Vue.js 中非常基礎且強大的功能,它使得動態地向網頁中插入數據變得異常簡單。通過插值表達式,你可以輕松地展示數據、執行簡單的計算以及格式化輸出。不過,在使用過程中也需注意其限制,比如不能包含多個表達式或者語句,同時合理利用 v-once ?等指令來滿足特定需求。對于更復雜的邏輯處理,建議使用計算屬性或方法

表達式詳解

表達式是由變量、常量、運算符、函數調用等組成的,能夠被求值并產生一個結果的代碼片段

核心特征

  1. 可求值 (Evaluatable):表達式的核心特性是它可以被“計算”或“求值”。
  2. 產生結果 (Produces a Value):求值的結果是一個值(Value),這個值可以是數字、字符串、布爾值、對象、函數等任何數據類型。
  3. 不改變狀態 (通常):純粹的表達式本身不會改變程序的狀態(比如修改變量的值)。它們只是計算并返回一個結果。(注意:包含賦值運算符或函數調用的表達式可能會有副作用)。

表達式的類型

表達式可以非常簡單,也可以非常復雜:

  • 字面量 (Literals):最簡單的表達式,本身就是值。

    • 42?(數字)
    • "Hello"?(字符串)
    • true?(布爾值)
    • null,?undefined
  • 變量 (Variables):變量名本身就是一個表達式,它的值就是變量當前存儲的值。

    • x?(假設?x?的值是 10,那么表達式?x?的值就是 10)
  • 算術表達式 (Arithmetic Expressions):使用算術運算符(+, -, *, /, %, **)。

    • 3 + 5?(結果是 8)
    • 10 * (2 + 3)?(結果是 50)
    • price * taxRate
  • 關系表達式 (Relational Expressions):使用比較運算符(==, !=, ===, !==, <, >, <=, >=),結果通常是布爾值。

    • a > b?(如果?a?大于?b,結果是?true,否則是?false)
    • name === "Alice"
  • 邏輯表達式 (Logical Expressions):使用邏輯運算符(&&, ||, !),結果通常是布爾值。

    • (age >= 18) && (hasLicense)?(年齡大于等于18歲且有駕照)
    • !isLoggedOut?(不是已登出狀態)
  • 字符串表達式 (String Expressions):使用字符串運算符(主要是 + 用于連接)。

    • "Hello, " + name
    • "The price is $" + price
  • 函數調用表達式 (Function Call Expressions):調用一個函數,其返回值就是表達式的結果。

    • Math.max(1, 2, 3)?(結果是 3)
    • getName()?(假設函數返回一個名字字符串)
    • reverseString("hello")?(結果是 "olleh")
  • 三元條件表達式 (Ternary Conditional Expression)condition ? exprIfTrue : exprIfFalse

    • score >= 60 ? "Pass" : "Fail"
  • 對象和數組字面量 (Object and Array Literals):它們本身也是表達式,會產生一個對象或數組。

    • { name: "Alice", age: 30 }
    • [1, 2, 3, 4]

表達式 vs 語句 (Statement)

理解表達式的關鍵是將其與語句區分開來:

  • 表達式 (Expression)做什么 (What)。它關注的是“產生一個值”。

    • 例子:3 + 4,?x,?myFunction(),?"Hello" + name
  • 語句 (Statement)做什么事 (Do Something)。它關注的是“執行一個動作”或“控制程序流程”。

    • 例子:
      • let x = 5;?(變量聲明語句)
      • if (x > 0) { ... }?(條件語句)
      • for (let i = 0; i < 10; i++) { ... }?(循環語句)
      • return x;?(返回語句)
      • x = x + 1;?(賦值語句 - 雖然包含表達式?x + 1,但整個?x = x + 1;?是一個語句)

重要關系:語句可以包含表達式。例如,賦值語句 x = 3 + 4; 中,3 + 4 是一個表達式,x = ... 是一個語句。

在 Vue 模板中的應用

在 Vue 的插值表達式 {{ }} 和指令的值中,你只能使用表達式,不能使用語句。

  • ? 允許 (表達式)

    • {{ message.toUpperCase() }}
    • {{ user.age > 18 ? 'Adult' : 'Minor' }}
    • {{ items.length }}
    • {{ Math.PI.toFixed(2) }}
  • ? 不允許 (語句)

    • {{ if (ok) { return message } }}?(if?是語句)
    • {{ var a = 1; a + 2 }}?(var?聲明是語句)
    • {{ for (let i=0; i<10; i++) { console.log(i) } }}?(for?是語句)

總結

表達式是編程語言中能“計算出一個值”的代碼單元。它由操作數(變量、常量、函數調用等)和運算符組成。理解表達式是編寫任何程序的基礎,尤其是在像 Vue 這樣需要在模板中進行數據綁定和邏輯處理的框架中,掌握表達式的概念和用法至關重要。記住:表達式產生值,語句執行動作。

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

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

相關文章

Python數據處理基礎(學習筆記分享)

Python數據處理入門 常用庫學習 numpy NumPy&#xff08;Numerical Python&#xff09; 是 Python 中用于高效數值計算的庫&#xff0c;核心是提供一個強大的 ndarray?&#xff08;多維數組&#xff09;對象&#xff0c;類似于 C/C 中的數組&#xff0c;但支持更豐富的操作&a…

力扣面試150題--顛倒二進制位

Day 89 題目描述思路 二進制的算法&#xff0c;將十進制轉化為二進制&#xff0c;有一點需要注意&#xff0c;直接采取庫函數轉化為二進制再反轉會出現問題&#xff08;這也是為什么我要補0的原因&#xff09;&#xff0c;因為轉化過去不滿足32位的二進制&#xff0c;前面不會當…

【ResNet50圖像分類部署至RK3588】模型訓練→轉換RKNN→開發板部署

已在GitHub開源與本博客同步的ResNet50v2_RK3588_Classificationt項目&#xff0c;地址&#xff1a;https://github.com/A7bert777/ResNet50v2_RK3588_Classification 詳細使用教程&#xff0c;可參考README.md或參考本博客第八章 模型部署 文章目錄一、項目回顧二、模型選擇介…

C# _泛型

目錄 泛型是什么? 泛型的主要優勢 創建一個泛型類 泛型方法 泛型是什么? 泛型是通過參數化來實現同一份代碼上操作多種數據類型 利用參數類型將參數的類型抽象化 從而實現靈活的復用 總結: 通過泛型可以實現在同一份代碼上操作多種數據類型的邏輯 將類和類中的成員定義…

Vue路由鉤子完全指南

Vue.js中的路由導航鉤子&#xff08;Navigation Guards&#xff09;主要用于在路由導航過程中進行攔截和處理&#xff0c;確保訪問控制和狀態管理。以下是主要分類及使用方法&#xff1a; 1. 全局鉤子函數 作用于整個路由實例&#xff0c;需在路由配置外定義&#xff1a; befor…

RAGFlow 登錄界面點擊登錄無反應,控制臺報錯 502 Bad Gateway 解決方法

遇到的問題 在使用RAGFlow的時候&#xff0c;登錄不進去&#xff0c;但是之前能登錄。 還出現了輸入地址直接進入工作界面&#xff0c;但是進行不了任何操作的bug&#xff1b;以及無法上傳文檔的問題&#xff08;其實都是因為沒登錄&#xff09;。 登陸界面報錯如圖顯示。 …

數據結構第3問:什么是線性表?

線性表 線性表由具有相同數據類型的n個元素構成&#xff0c;這些元素之間存在一一對應的線性關系。其中n為表長&#xff0c;當n0的時候線性表是一個空表。簡單來說&#xff0c;線性表中的元素排列成一條線&#xff0c;每個元素最多有一個直接的前驅和后繼&#xff08;除第一個和…

常見CMS 靶場復現

一、wordpass1.修改模版文件getshell搭建網站登錄網站后臺更改網站模版的相關文件寫入一句話木馬憑借路徑訪問/wp-content/themes/twentyfifteen/404.php/?aphpinfo();2.上傳夾帶木馬的主題getshell外觀-->主題-->添加-->上傳-->瀏覽-->安裝-->訪問木馬文件…

Elasticsearch - 倒排索引原理和簡易實現

倒排索引的功能設計倒排索引&#xff08;Inverted Index&#xff09;是一種高效的數據結構&#xff0c;常用于全文搜索和信息檢索系統。它的核心思想是將文檔中每個關鍵字&#xff08;term&#xff09;與包含該關鍵字的文檔列表進行映射。以下是實現倒排索引功能的設計步驟和代…

C#開發的Panel里控件拖放例子 - 開源研究系列文章

上次寫了Panel的分頁滾動控件( C#開發的Panel滾動分頁控件&#xff08;滑動版&#xff09; - 開源研究系列文章 - Lzhdims Fashion - 博客園 )&#xff0c;但是主要是想寫一個Panel里控件拖放的效果&#xff0c;然后分頁控件用于Panel里控件的分頁。此文這次寫的是控件拖放效果…

Thinkph6中常用的驗證方式實例

我們在使用thinkphp6中的數據驗證時&#xff0c;如果使用不多的話&#xff0c;會經常遇到校驗不對&#xff0c;在這個小問題上折騰很多&#xff0c;索引就不用了。我還不如直接寫if條件來的迅捷&#xff01;&#xff01;下面把常見的校驗方法進行一下整理&#xff1a;protected…

分享一個FPGA寄存器接口自動化工具

FPGA模塊越寫越多&#xff0c;規范性和可移植性卻堪憂。要是有一個工具可以根據模塊接口描述文件生成verilog和c頭文件就好了。苦苦搜尋找到了幾款免費的工具&#xff0c;SystemRDL、cheby和rggen。筆者學習了下cheby和reksio&#xff0c;reksio是gui版的cheby&#xff0c;這是…

小程序中事件對象的屬性與方法

在小程序中&#xff0c;事件處理函數的參數為事件對象&#xff08;通常命名為 e&#xff09;&#xff0c;包含了事件相關的詳細信息&#xff08;如事件類型、觸發元素、傳遞的數據等&#xff09;。事件對象的屬性和方法因事件類型&#xff08;如點擊、輸入、觸摸等&#xff09;…

使用寶塔“PostgreSQL管理器”安裝的PostgreSQL,如何設置遠程連接?

安裝 PostgreSQL 使用寶塔“PostgreSQL管理器”安裝PostgreSQL&#xff0c;版本可以根據自己的需求來選擇&#xff0c;我這里使用的是16.1 創建數據庫 根據下圖所示步驟創建數據庫&#xff0c;其中 “訪問權限”一定要選擇“所有人”啟用遠程連接設置允許所有 IP 連接 listen_a…

論文:M矩陣

M矩陣是線性代數中的一個概念&#xff0c;它是一種特殊類型的矩陣&#xff0c;具有以下性質&#xff1a;非負的非對角線元素&#xff1a;矩陣的所有非對角線元素都是非負的&#xff0c;即對于矩陣MMM中的任意元素mijm_{ij}mij?&#xff0c;當i≠ji\neq jij時&#xff0c;有m…

跳躍表可視化深度解析:動態演示數據結構核心原理

跳躍表可視化深度解析&#xff1a;動態演示數據結構核心原理 一、跳躍表基礎概念與核心優勢 跳躍表&#xff08;SkipList&#xff09;是一種基于多層索引鏈表的數據結構&#xff0c;通過概率平衡實現高效的插入、刪除和查找操作。其核心優勢體現在&#xff1a; ?時間復雜度優…

《Sentinel服務保護實戰:控制臺部署與SpringCloud集成指南》

sentinel 介紹 Sentinel是阿里巴巴開源的一款服務保護框架&#xff0c;目前已經加入SpringCloudAlibaba中。官方網站&#xff1a; home | Sentinel Sentinel 的使用可以分為兩個部分: 核心庫&#xff08;Jar包&#xff09;&#xff1a;不依賴任何框架/庫&#xff0c;能夠運行…

IBM Watsonx BI:AI賦能的下一代商業智能平臺

產品概覽 IBM Watsonx BI 是基于 watsonx 企業級 AI 與數據平臺 構建的智能分析解決方案&#xff0c;專為現代化企業打造。它深度融合人工智能技術&#xff0c;突破傳統 BI 工具的限制&#xff0c;通過自動化數據洞察、自然語言交互和預測分析&#xff0c;幫助企業在復雜數據環…

Python實現GO鵝優化算法優化GBRT漸進梯度回歸樹回歸模型項目實戰

說明&#xff1a;這是一個機器學習實戰項目&#xff08;附帶數據代碼文檔&#xff09;&#xff0c;如需數據代碼文檔可以直接到文章最后關注獲取 或者私信獲取。 1.項目背景 隨著大數據和人工智能技術的快速發展&#xff0c;回歸預測在金融、氣象、能源等多個領域中扮演著至關…

深度學習計算(深度學習-李沐-學習筆記)

層和塊 單一輸出的線性模型&#xff1a;單個神經網絡 &#xff08;1&#xff09;接受一些輸入&#xff1b; &#xff08;2&#xff09;生成相應的標量輸出&#xff1b; &#xff08;3&#xff09;具有一組相關 參數&#xff08;parameters&#xff09;&#xff0c;更新這些參數…