Vue 3 从创建项目到基础语法---01

V U E 3

1. 项目创建

创建vue3项目,先确保电脑安装了Node环境

有多种方式可以创建vue3项目:

  1. npm create vue@latest
  2. npm init vue
  3. ...

这些个命令会引导你创建一个新的 Vue 3 项目,包含基本的项目结构和配置。

创建完的项目,可以将文件夹直接拖到vscode打开

下面来讲讲vue中的基本语法操作

2. 插值表达式

插值表达式使用**{``{ }}**语法,用于在模板中显示数据。

基础用法

复制代码
<script setup lang="ts">
const name = 'L'
const age = 18
const gender = true
const list = [1, 2, 3]
const obj = { name: name, age: age }
</script>

<template>
  <!-- 文本插值 -->
  <div>
    <div>name:{{ name }}</div>
    <div>age:{{ age }}</div>
    <div>gender:{{ gender ? '男' : '女' }}</div>
    <div>list:{{ list }}</div>
    <div>obj:{{ obj }}</div>
  </div>
</template>

特点

  • 只能在元素的内容区域使用
  • 支持简单的 JavaScript 表达式

3. v-bind (动态绑定)

v-bind用于动态绑定元素的属性,可以简写为 :

基础用法

复制代码
<script setup lang="ts">
const className = 'box'
const classObj = {
  box: true,
  active: true
}

const style = {
  fontSize: '30px',
  color: 'rgba(0,0,0,0.5)'
}
</script>

<template>
  <div>
    <!-- 动态绑定 -->
    <div v-bind:name="name">动态绑定name</div>
    <div v-bind:class="className">动态绑定className</div>
    <div :class="className">动态绑定className(简写)</div>
    <div :class="classObj">动态绑定classObj</div>
    <div :style="style">动态绑定style</div>
  </div>
</template>

常见绑定场景

  • class 绑定:class="className":class="{active: true}"
  • style 绑定:style="{color: 'red', fontSize: '14px'}"
  • 其他属性:id="dynamicId"

4. 条件渲染语法

Vue 提供了 v-ifv-show 两种条件渲染方式。

v-if 系列指令

v-if系列指令会根据条件真正地添加或移除 DOM 元素。

复制代码
<script setup lang="ts">
const gender = true
const age = 18
</script>

<template>
  <div>
    <!-- v-if v-else -->
    <span v-if="gender">男</span>
    <span v-else>女</span>

    <!-- v-if v-else-if v-else -->
    <span v-if="age >= 35">优化</span>
    <span v-else-if="age >= 18">已成年</span>
    <span v-else>未成年</span>
  </div>
</template>

v-show 指令

v-show 通过 CSS 的**display**属性控制元素的显示与隐藏。

复制代码
<template>
  <div>
    <span v-show="gender">男</span>
    <span v-show="!gender">女</span>
  </div>
</template>

v-if 与 v-show 对比

|-------|--------|--------|
| 特性 | v-if | v-show |
| 初始渲染 | 条件性 | 总是 |
| Dom操作 | 真实添加 | css隐藏 |
| 性能 | 切换开销大 | 切换开销小 |
| 切换频率 | 低 | 高 |
| 适用场景 | 条件很少改变 | 频繁切换显示 |


5. v-text 与 v-html 语法

v-text - 文本渲染

**v-text**会将内容作为纯文本插入元素中。

复制代码
<script setup lang="ts">
const msg = '我知道,知道你知道我知道'
const html = `<span style="color: #00bd7e">你好</span>`
</script>

<template>
  <div>
    <!-- v-text 会覆盖元素内容,并且不解析HTML -->
    <div v-text="msg"></div>
    <div v-text="'xxxx' + msg"></div>
    <div v-text="`|${msg}|`"></div>
    <div v-text="html"></div> <!-- 这里会显示原始HTML字符串 -->
  </div>
</template>

v-html - HTML 渲染

**v-html**会将内容作为 HTML 插入元素中。

复制代码
<template>
  <div>
    <!-- v-html 会解析HTML标签 -->
    <div v-html="msg"></div> <!-- 显示纯文本 -->
    <div v-html="html"></div> <!-- 解析并渲染HTML标签 -->
  </div>
</template>

语法对比总结

|--------|-----------|--------|--------|
| 特性 | 插值表达式{{}} | v-text | v-html |
| HTML解析 | 否 | 否 | 是 |
| 转义处理 | 是 | 是 | 否 |
| 性能 | 高 | 高 | 中 |
| 安全性 | 高 | 高 | 中(需注意) |


相关推荐
黄泉路醉s3 小时前
在Vant+Vue+TypeScript的H移动前端使用UnoCSS
前端·vue.js·typescript
海带紫菜菠萝汤4 小时前
FFmpeg.wasm 实践:在浏览器中运行 FFmpeg 的能力边界与性能瓶颈
前端·javascript·ffmpeg·音视频·wasm
名字还没想好☜5 小时前
React 受控输入框光标跳到末尾:格式化输入时的 selection 丢失 bug 与修复
前端·javascript·react.js·bug·react·next.js
upgrador5 小时前
桌面应用开发:Electron 与 NSIS 的关系、打包流程及 Windows 本地构建实战
javascript·windows·electron
我要两颗404西柚5 小时前
Stage three:VUE工程化与实战工具
前端·javascript·vue.js
写不来代码的草莓熊6 小时前
Cesium 地图交互绘制圆形、多边形
前端·javascript·地图
JackSparrow4147 小时前
前端安全之JS混淆+请求加密+请求签名以提升爬虫难度
前端·javascript·后端·爬虫·python·安全
看昭奚恤哭7 小时前
基于 RuoYi-Vue-Pro 定制了一个后台管理系统 magic-admin , 开源出来!
前端·vue.js·开源
kyriewen20 小时前
我用AI写了半年代码——回头看,这5个能力正在退化
前端·javascript·ai编程
大龄秃头程序员21 小时前
iOS 客户端视角扫盲:WKWebView 里 window、messageHandlers 与 Native 回调到底怎么工作?
javascript