vue快速入门

Vue 基础简介

Vue.js 是一套用于构建用户界面的渐进式 JavaScript 框架,它具有以下特点:

  1. JS 框架:提供一套完整的工具和规范,助力高效开发。
  2. 简化 DOM 操作:开发者无需直接编写复杂的 DOM 操作代码,只需关注数据变化。
  3. 响应式数据驱动:当数据发生变化时,视图会自动更新。

环境准备

首先,通过 <script> 标签导入 Vue.js:

html 复制代码
<script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.js"></script>

Vue 实例的两大核心元素

1. el:挂载点

通过 CSS 选择器设置 Vue 实例所管理的 HTML 元素。Vue 实例可以挂载在大部分双标签元素上,但建议不要挂载到 <body><html>

2. data:数据对象

Vue 中用到的所有数据都定义在 data 对象中。data 中可以存储复杂类型的数据(如数组、对象),在渲染它们时,需遵守 JavaScript 语法。

html 复制代码
<div id="app">
    <p>{{ message }}</p>
</div>
javascript 复制代码
var app = new Vue({
    el: "#app", // id选择器,也可以使用class选择器等
    data: {
        message: "hello"
    }
})

Vue 指令详解

指令 (Directives) 是带有 v- 前缀的特殊属性,用于在表达式的值改变时,将某些行为应用到 DOM 上。

v-text

用于设置标签的纯文本内容(等同于 innerText)。

html 复制代码
<div id="app">
    <p v-text="message"></p>
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    data: {
        message: "hello"
    }
})

v-html

用于在标签中嵌入 HTML 代码(等同于 innerHTML)。

html 复制代码
<div id="app">
    <!-- 如果是普通文本,效果和 v-text 一样 -->
    <!-- <p v-html="message"></p> -->
    
    <!-- 如果是 HTML 字符串,则会被渲染为 HTML 元素 -->
    <p v-html="link"></p>
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    data: {
        // message: "hello"
        link: '<a href="http://baidu.com">百度</a>'
    }
})

v-on

用于为元素绑定事件,可以使用简写 @

html 复制代码
<div id="app">
    <!-- 完整语法 -->
    <input type="button" value="事件绑定" v-on:click="handleClick">
    
    <!-- 简写语法 -->
    <input type="button" value="事件绑定" @click="handleClick">
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    methods: {
        handleClick: function() {
            // 方法体
            alert('按钮被点击了!');
        }
    }
})
常见事件
事件名 说明 触发时机
click 点击 鼠标点击元素时
dblclick 双击 鼠标双击元素时
mousedown 鼠标按下 在元素上按下鼠标按钮时
mouseup 鼠标松开 在元素上松开鼠标按钮时
mouseenter 鼠标进入 鼠标进入元素时(不冒泡)
mouseleave 鼠标离开 鼠标离开元素时(不冒泡)
mouseover 鼠标悬停 鼠标进入元素或其子元素时(冒泡)
mouseout 鼠标移出 鼠标移出元素或其子元素时(冒泡)
mousemove 鼠标移动 鼠标在元素内移动时
scroll 滚动 元素滚动条滚动时
resize 窗口调整 窗口大小变化时(通常用 window.addEventListener
contextmenu 右键菜单 鼠标右键点击时(通常配合 .prevent 阻止默认菜单)

v-showv-if

两者都用于根据表达式的真假,条件性地显示或隐藏元素,但原理不同。

  • v-show :通过操作元素的 CSS display 样式来控制显示和隐藏。元素始终会被渲染并保留在 DOM 中。
  • v-if:通过操作 DOM 元素来控制显示和隐藏。当条件为假时,元素及其子元素会被完全销毁和移除。

选择建议 :如果需要在显示与隐藏之间频繁切换 ,推荐使用 v-show(性能开销更小);如果在运行时条件很少改变 ,则使用 v-if 更合适。

html 复制代码
<div id="app">
    <!-- 使用 v-show -->
    <img v-show="isShow" src="示例图片地址1.jpg">
    <img v-show="age >= 18" src="示例图片地址2.jpg">
    
    <!-- 使用 v-if -->
    <img v-if="isShow" src="示例图片地址1.jpg">
    <img v-if="age >= 18" src="示例图片地址2.jpg">
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    data: {
        isShow: true,
        age: 17
    }
})

v-bind

用于动态设置元素的属性(如 srctitleclass 等),可以使用简写 :

html 复制代码
<div id="app">
    <!-- 完整语法 -->
    <img v-bind:src="imgSrc">
    
    <!-- 简写语法 -->
    <span :title="message">将鼠标悬停在我上面</span>
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    data: {
        imgSrc: "https://example.com/image.jpg",
        message: "这是一个动态提示信息"
    }
})

v-for

用于根据一组数据遍历生成列表结构,语法为 item in items,并支持获取循环索引。

html 复制代码
<div id="app">
    <ul>
        <!-- 获取元素和索引 -->
        <li v-for="(item, index) in arr">
            {{ index + 1 }}. {{ item }}
        </li>
    </ul>
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    data: {
        arr: ["a", "b", "c"]
    }
})

v-model

实现表单元素与数据之间的双向数据绑定。当表单控件的值发生变化时,对应的数据也会自动更新,反之亦然。

html 复制代码
<div id="app">
    <input type="text" v-model="message">
    <p>你输入的内容是:{{ message }}</p>
</div>
javascript 复制代码
var app = new Vue({
    el: "#app",
    data: {
        message: "hello"
    }
})

网络应用:axios

Vue.js 结合网络请求库 axios 可以轻松开发网络应用。

首先导入 axios

html 复制代码
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

GET 请求示例

javascript 复制代码
axios.get('https://api.example.com/data?key1=value1&key2=value2')
    .then(function(response) {
        // 成功后的回调函数
        console.log('数据获取成功:', response.data);
    }, function(err) {
        // 失败后的回调函数
        console.error('请求失败:', err);
    });

POST 请求示例

javascript 复制代码
axios.post('https://api.example.com/data', {
    key1: 'value1',
    key2: 'value2'
})
    .then(function(response) {
        // 成功后的回调函数
        console.log('数据提交成功:', response.data);
    }, function(err) {
        // 失败后的回调函数
        console.error('提交失败:', err);
    });
相关推荐
开开心心就好4 分钟前
视频播放器完美解码集成三款播放器切换使用
前端·人工智能·智能手机·电脑·音视频·virtualenv·pygame
Sterting5 分钟前
组件通信:Props 与 Emit
前端·vue.js
东方老白12 分钟前
iOS 面试题
前端
hunterandroid31 分钟前
Compose LazyColumn 性能优化:从卡顿到流畅的大列表治理
前端
喵个咪34 分钟前
GoWind Shop 架构剖析:一个 REST 请求穿越三服务 BFF 的七环链路
vue.js·后端·go
喵个咪34 分钟前
GoWind Shop 安全设计:JWT 鉴权、Ent 行级隔离、防篡改审计与四个真实漏洞修复
vue.js·后端·go
喵个咪36 分钟前
GoWind Shop:一个 proto 文件如何生成后端、前端、文档、校验六路代码
vue.js·后端·go
喵个咪39 分钟前
GoWind Shop 出海实战:多语言商品内容怎么存、怎么录、怎么按 locale 取
vue.js·后端·go
sakiko_1 小时前
Swift学习笔记39-实战注意事项
前端·笔记·学习·swift
海带紫菜菠萝汤1 小时前
MSE (Media Source Extensions) 实战:流媒体分块加载与自适应码率
前端·javascript·音视频