vue文本插值

好的,我們來詳細講解 Vue 中最基礎的數據展示方式:文本插值和在其內部使用的 JavaScript 表達式

1. 文本插值 (Text Interpolation)

知識點:
文本插值是 Vue 中最基本的數據綁定形式。它使用“Mustache”語法(雙大括號 {{ }})將數據直接渲染到 HTML 的文本內容中。

  • 核心作用: 將 Vue 實例中 setup 函數返回的數據,動態地顯示在頁面的指定位置。
  • 響應式: 當大括號內所依賴的數據發生變化時,插值所在的部分會自動更新,以反映最新的數據。這正是 Vue 響應式系統的核心體現。
  • 純文本: 插值會將其內容作為純文本來處理,而不是 HTML。如果你想渲染 HTML,需要使用我們之前討論過的 v-html 指令。

2. JavaScript 表達式 (JavaScript Expressions)

知識點:
雙大括號 {{ }} 內部不僅僅能放一個簡單的變量名,它還支持單個 JavaScript 表達式。這意味著你可以在里面進行計算、調用方法或執行簡單的邏輯判斷。

Vue 對這里的表達式有明確的限制:

  • 必須是表達式 (Expression): 一個表達式是任何可以產生一個值的代碼片段。例如 user.namecount + 1isOk ? '是' : '否'
  • 不能是語句 (Statement): 語句是執行操作但不一定返回值。例如 let a = 1if (x > 1) { ... }for (...) 都是語句,它們在插值中是無效的
  • 訪問限制: 表達式只能訪問在 setup 中返回的屬性、全局白名單內的對象(如 MathDate)和一些 Vue 內置的輔助函數。你不能訪問自己定義的全局變量。

示例代碼

下面是一個完整的 HTML 文件,演示了文本插值和各種合法的 JavaScript 表達式。

你可以將此代碼保存為 .html 文件,并在瀏覽器中打開查看效果。

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue 3 文本插值與表達式 (CDN)</title><style>body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; padding: 20px; font-size: 1.1rem; }#app { max-width: 700px; margin: 0 auto; padding: 25px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }.demo-section { padding: 15px; border: 1px solid #e0e0e0; border-radius: 5px; margin-bottom: 20px; }.demo-section h3 { margin-top: 0; color: #42b883; }code { background-color: #f0f0f0; padding: 2px 5px; border-radius: 3px; }.note { color: #d9534f; font-size: 0.9em; margin-top: 10px; }</style>
</head>
<body><div id="app"><h1>文本插值 ({{ }}) 與表達式</h1><div class="demo-section"><h3>1. 基本用法</h3><p>歡迎, {{ username }}!</p></div><div class="demo-section"><h3>2. 算術運算</h3><p>商品單價: {{ price }} 元</p><p>商品數量: {{ quantity }}</p><p>總價: <strong>{{ price * quantity }}</strong></p></div><div class="demo-section"><h3>3. 訪問對象屬性</h3><p>用戶信息: {{ user.name }} ({{ user.email }})</p></div><div class="demo-section"><h3>4. 使用方法調用</h3><p>姓名倒序: <strong>{{ reverseName(user.name) }}</strong></p></div><div class="demo-section"><h3>5. 使用三元運算符</h3><p>賬戶狀態: <span :style="{ color: isActive ? 'green' : 'red' }">{{ isActive ? '已激活' : '未激活' }}</span></p></div><div class="demo-section"><h3>6. 復雜的表達式 (但保持簡潔)</h3><p>格式化消息: <code>{{ message.toUpperCase().split('').reverse().join('') }}</code></p></div><div class="demo-section"><h3>7. 無效的用法 (語句)</h3><p>下面的代碼在 Vue 模板中會報錯,這里僅作說明:</p><ul><li><code>{{ let a = 1 }}</code> (這是聲明語句)</li><li><code>{{ if (isActive) { return 'Active' } }}</code> (這是流控制語句)</li></ul><p class="note">注意:你不能在 `{{ }}` 中使用 `if/else`,但可以使用三元運算符 `( ? : )` 來實現類似的效果。</p></div></div><script src="https://unpkg.com/vue@3/dist/vue.global.js"></script><script>const { createApp, ref, reactive } = Vue;const app = createApp({setup() {// 1. 基本數據const username = ref('張三');// 2. 用于算術運算的數據const price = ref(15);const quantity = ref(3);// 3. 對象數據const user = reactive({name: '李四',email: 'lisi@example.com'});// 4. 定義一個方法const reverseName = (name) => {return name.split('').reverse().join('');};// 5. 用于三元運算符的數據const isActive = ref(true);// 6. 用于復雜表達式的數據const message = ref('Hello Vue');// 將所有需要被模板訪問的數據和方法返回return {username,price,quantity,user,reverseName,isActive,message};}});app.mount('#app');
</script></body>
</html>

總結

分類示例描述
基礎變量{{ myData }}直接顯示 setup 中返回的 myData 的值。
算術運算{{ count + 1 }}可以執行加減乘除等數學計算。
對象屬性訪問{{ user.name }}可以訪問對象的深層屬性。
方法調用{{ formatPrice(price) }}可以調用 setup 中返回的方法,并傳入參數。
三元表達式{{ isVisible ? '顯示' : '隱藏' }}if-else 在模板中最常見的替代方案。
其他表達式{{ message.split('').reverse().join('') }}任何能返回一個值的 JS 表達式鏈都是有效的。

最佳實踐:雖然模板中支持復雜的表達式,但為了保持模板的聲明性可讀性,推薦將過于復雜的邏輯封裝在方法計算屬性computed property)中。這樣可以讓模板代碼更清晰、更易于維護。

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

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

相關文章

Python:線性代數,向量內積諧音記憶。

目錄1 先說結論2 解釋3 歡迎糾錯4 論文寫作/Python 學習智能體------以下關于 Markdown 編輯器新的改變功能快捷鍵合理的創建標題&#xff0c;有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內容居中、居左、…

小程序導航設置更多內容的實現方法

在小程序中實現導航欄設置更多內容&#xff0c;可以通過以下幾種方式實現&#xff1a; 1. 使用原生導航欄自定義按鈕 javascript // app.json 或頁面.json中配置 {"navigationBarTitleText": "首頁","navigationBarTextStyle": "black&q…

SpringBoot 解決配置文件有黃色波浪線

在application.properties配置文件中有黃色波浪線&#xff0c;是警告!! 原因&#xff1a;編碼格式不一致&#xff01;&#xff01; 解決&#xff1a;Settings| Editor | File Encodings | 選擇UTF-8

在 Vue 3 中全局使用 Suspense 組件

Suspense 是 Vue 3 引入的一個內置組件&#xff0c;不需要引用可以直接用。用于處理異步依賴的等待狀態。雖然 Suspense 主要用于異步組件&#xff0c;但你也可以全局地使用它來管理整個應用的加載狀態。 全局 Suspense 的基本用法 1. 在根組件中使用 Suspense // main.js 或…

筆記/計算機網絡

Content 計算機網絡部分核心概念十大網絡協議一覽 計算機網絡部分核心概念 1. 什么是計算機網絡&#xff1f;它最基本的功能是什么&#xff1f; 計算機網絡是指通過某種傳輸介質將多臺獨立的計算機或設備連接起來&#xff0c;實現數據交換和資源共享的系統。其最基本的功能是數…

時頻圖數據集更正程序,去除坐標軸白邊及調整對應的標簽值

當數據集是時頻圖時可能有一個尷尬的問題&#xff0c;就是數據集制作好后&#xff0c;發現有白邊。 其實這也不影響訓練模型&#xff0c;可能對模型訓練效果的影響也是微乎其微的&#xff0c;于是大多數情況我會選擇直接用整張圖片訓練模型。但是&#xff0c;有的情況下&#x…

mv重命名報錯:bash:未預期的符號 ‘(‘附近有語法錯誤

文章目錄 一、報錯背景二、解決方法2.1、方法一&#xff1a;文件名加引號2.2、方法二&#xff1a;特殊字符前加\進行轉義 一、報錯背景 在linux上對一文件執行重命名時報錯。原因是該文件名包含空格與括號。 文件名如下&#xff1a; aa &#xff08;1).txt執行命令及報錯如下…

Unity-MMORPG內容筆記-其三

繼續之前的內容&#xff1a; 戰斗系統 無需多言&#xff0c;整個項目中最復雜的部分&#xff0c;也是代碼量最大的部分。 屬性系統 首先我們要定義一系列屬性&#xff0c;畢竟所謂的戰斗就是不斷地扣血對吧。 屬性系統是戰斗系統的核心模塊&#xff0c;負責管理角色的所有…

Linux入門篇學習——Linux 幫助手冊

目錄 一、Linux 幫助手冊 1.怎么打開幫助手冊 2.安裝依賴 3.使用手冊查看命令 一、Linux 幫助手冊 1.怎么打開幫助手冊 打開 ubuntu &#xff0c;輸入 man 命令打開幫助手冊&#xff0c;直接在控制臺輸入 man 就可以了&#xff0c; man 手冊一共有 9 頁&#xff0c…

2025年后端主流框架對比和競爭格局及趨勢發展

2025年的后端開發呈現出云原生主導、性能革命、AI深度融合的技術格局&#xff0c;主流框架在細分領域持續分化&#xff0c;新興技術快速滲透關鍵場景。以下是基于行業實踐與技術演進的深度解析&#xff1a; 一、主流框架競爭態勢與核心能力 1. Java生態&#xff1a;企業級市場的…

bRPC簡介

bRPC基礎介紹。 什么是RPC? 互聯網上的機器大都通過TCP/IP協議相互訪問&#xff0c;但TCP/IP只是往遠端發送了一段二進制數據&#xff0c;為了建立服務還有很多問題需要抽象&#xff1a; 數據以什么格式傳輸&#xff1f;不同機器間&#xff0c;網絡間可能是不同的字節序&am…

力扣網C語言編程題:在數組中查找目標值位置之二分查找法

一. 簡介 上一篇文章對力扣網上"有序數組中查找目標值范圍"題目進行了普通的解法。文章如下&#xff1a; 力扣網C語言編程題&#xff1a;在數組中查找目標值位置之暴力解法-CSDN博客 本文使用二分查找法進行實現&#xff0c;因為二分查找法符合題目要求&#xff0…

前端查詢條件加密傳輸方案(SM2加解密)

一、需求背景 控臺項目甲方進行安全測試&#xff0c;測試報告其中一條&#xff1a;敏感信息明文傳輸 1 敏感信息明文傳輸 中危 查詢接口傳輸手機號、銀行卡號等敏感信息時未加密/脫敏處理。 二、解決方案 討論出的方案是通過前端查詢條件加密&#xff0c;后端對加密的…

【Python】Flask網頁

Flask第三方庫安裝命令&#xff1a;pip install flask代碼&#xff1a;from flask import Flask app Flask(__name__)app.route("/") def hello():return "Hello world!"if __name__ "__main__":app.run()其中的"Hello world!"可以改…

數字資產革命中的信任之錨:RWA法律架構的隱形密碼

首席數據官高鵬團隊律師創作&#xff0c;AI輔助 在數字經濟的浪潮中&#xff0c;資產的邊界正在被重新定義。當一塊地產、一筆應收賬款、甚至一份碳配額被轉化為鏈上的數字代幣時&#xff0c;技術的光芒固然耀眼&#xff0c;但真正決定其生命力的&#xff0c;是背后隱匿的“信…

mobaxterm終端sqlplus亂碼問題解決

背景。使用mobaxterm終端連接linux。在查詢數據庫表注釋時發現**&#xff1f;**中文亂碼。影響對表的分析。完成以下三個編碼設置再打開sqlplus查詢含中文的數據就正常了 總結。需要查看sqlplus的編碼是什么 SELECT parameter, value FROM nls_database_parameters WHERE pa…

一個簡單的分布式追蹤系統

1. 準備工作 導入必要的庫 import contextvars import time from typing import Any, Optional, Dict, List, Union from dataclasses import dataclass, field2. 定義上下文變量 # 定義兩個上下文變量&#xff0c;存儲當前 Span 和 Trace _current_span: contextvars.Conte…

【Qt】事件處理、事件分發器、事件過濾器

事件處理 一. 事件事件處理鼠標事件處理按鍵事件處理定時器事件處理窗口事件處理 二. 事件分發器三. 事件過濾器 雖然 Qt 是跨平臺的 C 開發框架&#xff0c;Qt 的很多能力其實是操作系統提供的&#xff0c;只不過 Qt 封裝了系統 API&#xff0c;程序是運行在操作系統上的&…

廣東省省考備考(第三十八天7.4)——言語理解:邏輯填空(題目訓練)

錯題解析 本題可從第二空入手&#xff0c;橫線處搭配“理論”&#xff0c;且根據“使得”可知&#xff0c;橫線處與前文構成因果關系&#xff0c;即“遺傳學的空白和古生物證據的缺乏”導致他的理論在某些方面存在不足&#xff0c;A項“捉襟見肘”指拉一拉衣襟&#xff0c;就露…

5G網絡切片技術

5G中的網絡切片技術是一種通過虛擬化將單一物理網絡劃分為多個獨立、可定制的虛擬網絡的技術&#xff0c;旨在滿足不同應用場景對網絡性能、帶寬、時延等需求的差異化要求。以下從技術原理、核心價值、應用場景、實現方式及未來趨勢五個維度展開分析&#xff1a;一、技術原理&a…