Vue-2-前端框架Vue基础入门之二

news2025/6/3 18:06:27

文章目录

  • 1 计算属性
    • 1.1 计算属性简介
    • 1.2 计算属性示例
  • 2 侦听器
    • 2.1 简单的侦听器
    • 2.2 深度监听
    • 2.3 监听对象单个属性
  • 3 vue-cli
    • 3.1 工程化的Vue项目
    • 3.2 Vue项目的运行流程
  • 4 vue组件
    • 4.1 Vue组件的三个部分
      • 4.1.1 template
      • 4.1.2 script
      • 4.1.3 style
    • 4.2 组件之间的关系
      • 4.2.1 使用组件的三个步骤
      • 4.2.2 通过components注册私有子组件
      • 4.2.3 注册全局组件
  • 5 参考附录

计算属性、侦听器的概念。Vue.js开发的标准工具vue-cli。每个vue组件中必须包含template模板结构,而script行为和style样式是可选的组成部分。

1 计算属性

1.1 计算属性简介

计算属性指的是通过一系列运算之后,最终得到一个属性值。
这个动态计算出来的属性值可以被模板结构或methods方法使用。

① 虽然计算属性在声明的时候被定义为方法,但是计算属性的本质是一个属性。
② 计算属性会缓存计算的结果,只有计算属性依赖的数据变化时,才会重新进行运算。

1.2 计算属性示例

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!-- 1、导入vue.js的script脚本文件 -->
        <script src="./lib/vue.global.js"></script>
    </head>
    <body>
        <!-- 2、声明将要被Vue控制的Dom区域 -->
        <div id="app">
            <p>message 的值是:{{ formatMessage }}</p>
        </div>
        <!-- 3、创建Vue实例并挂载到指定的Dom区域 -->
        <script>
            Vue.createApp({
              data() {
                return {message: 'hello vue.js'}
              },
              computed: {
                // 计算属性:将 message 首字母大写
                formatMessage() {
                  const first = this.message.charAt(0).toUpperCase();
                  const other = this.message.slice(1);
                  return first + other;
                }
              }
            }).mount('#app')
        </script>
    </body>
</html>

在这里插入图片描述

2 侦听器

watch侦听器允许开发者监视数据的变化,从而针对数据的变化做特定的操作。
语法格式如下:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!-- 1、导入vue.js的script脚本文件 -->
        <script src="./lib/vue.global.js"></script>
    </head>
    <body>
        <!-- 2、声明将要被Vue控制的Dom区域 -->
        <div id="app">
            <p>用户名的值是:{{ username }}</p>
        </div>
        <!-- 3、创建Vue实例并挂载到指定的Dom区域 -->
        <script>
            Vue.createApp({
              data() {
                return {username: 'lucy'}
              },
              // 所有的侦听器,都应该被定义到 watch 节点下
              watch: {
                // 侦听器本质上是一个函数,要监视哪个数据的变化,就把数据名作为方法名即可
                // 新值在前,旧值在后
                username(newVal, oldVal) {
                  cons.log( newVal, oldVal )
                }
              }
            }).mount('#app')
        </script>
    </body>
</html>

2.1 简单的侦听器

实现了一个简单的侦听器来响应数据的变化!

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!-- 1、导入vue.js的script脚本文件 -->
        <script src="./lib/vue.global.js"></script>
    </head>
    <body>
        <!-- 2、声明将要被Vue控制的Dom区域 -->
        <div id="app">
            <input v-model="inputText" placeholder="输入一些内容">
            <p>你输入的内容是:{{ inputText }}</p>
            <p>内容的反转版本是:{{ reversedText }}</p>
        </div>
        <!-- 3、创建Vue实例并挂载到指定的Dom区域 -->
        <script>
            Vue.createApp({
              data() {
                return {
                    inputText: '',
                    reversedText: ''
                }
              },
              // 所有的侦听器,都应该被定义到 watch 节点下
              watch: {
                 // 当 inputText 改变时,触发该函数
                inputText(newVal) {
                    // 反转输入内容并更新 reversedText
                    this.reversedText = newVal.split('').reverse().join('');
                }
              }
            }).mount('#app')
        </script>
    </body>
</html>

在这里插入图片描述

2.2 深度监听

如果watch侦听的是一个对象,如果对象中的属性值发生了变化,则无法被监听到。此时需要使用deep选项。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!-- 1、导入vue.js的script脚本文件 -->
        <script src="./lib/vue.global.js"></script>
    </head>
    <body>
        <!-- 2、声明将要被Vue控制的Dom区域 -->
        <div id="app">
            <input v-model="user.name" placeholder="输入用户名">
            <p>当前用户名:{{ user.name }}</p>
        </div>
        <!-- 3、创建Vue实例并挂载到指定的Dom区域 -->
        <script>
            Vue.createApp({
              data() {
                return {
                     user: {name: '张三'}
                }
              },
              // 所有的侦听器,都应该被定义到 watch 节点下
              watch: {
                 // 深度监听 user 对象
                user: {
                    handler(newVal) {
                        console.log('user 发生了变化:', newVal);
                    },
                    deep: true, // 开启深度监听
                    immediate: false // 可根据需要设置为 true
                }
              }
            }).mount('#app')
        </script>
    </body>
</html>

在这里插入图片描述
注意:对象中任何一个属性变化了,都会触发“对象的侦听器”。

2.3 监听对象单个属性

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!-- 1、导入vue.js的script脚本文件 -->
        <script src="./lib/vue.global.js"></script>
    </head>
    <body>
        <!-- 2、声明将要被Vue控制的Dom区域 -->
        <div id="app">
            <input v-model="user.name" placeholder="输入用户名">
            <hr>
            <input v-model="user.company" placeholder="输入公司">
            <p>当前用户名:{{ user.name }}</p>
            <p>当前公司:{{ user.company }}</p>
        </div>
        <!-- 3、创建Vue实例并挂载到指定的Dom区域 -->
        <script>
            Vue.createApp({
              data() {
                return {
                     user: {name: '张三', company: '字节跳动'}
                }
              },
              // 所有的侦听器,都应该被定义到 watch 节点下
              watch: {
                // 如果要侦听的是对象的子属性的变化,则必须包裹一层单引号
                'user.name'(newVal) {
                  console.log(newVal)
                }
              }
            }).mount('#app')
        </script>
    </body>
</html>

在这里插入图片描述

3 vue-cli

单页面应用程序(Single Page Application)简称SPA,顾名
思义,指的是一个Web网站中只有唯一的一个HTML页面,所有的功能与交互都在这唯一的一个页面内完成。

vue-cli是Vue.js开发的标准工具,它简化了程序员基于webpack创建工程化的Vue项目的过程。

3.1 工程化的Vue项目

vue-cli是npm上的一个全局包,使用npm install命令,即可方便的把它安装到自己的电脑上:

npm install -g @vue/cli

基于vue-cli快速生成工程化的Vue项目:

vue create 项目的名称

3.2 Vue项目的运行流程

在工程化的项目中,vue要做的事情很单纯:通过main.js把App.vue渲染到index.html的指定区域中。

其中:
① App.vue用来编写待渲染的模板结构。
② index.html中预留被Vue控制的Dom区域。
③ main.js把App.vue渲染到了index.html所预留的区域中。
在这里插入图片描述

4 vue组件

组件化开发指的是:根据封装的思想,把页面上可重用的UI结构封装为组件,从而方便项目的开发和维护。

vue是一个支持组件化开发的前端框架。
vue中规定:组件的后缀名是.vue。
App.vue文件本质上就是一个vue的组件。

4.1 Vue组件的三个部分

每个.vue组件都由3部分构成,分别是:
template -> 组件的模板结构。
script -> 组件的JavaScript行为。
style -> 组件的样式。
其中,每个组件中必须包含template模板结构,而script行为和style样式是可选的组成部分。

4.1.1 template

vue规定:每个组件对应的模板结构,需要定义到 template节点中。

<template>
  //模板内容
</template>

(1)template是vue提供的容器标签,只起到包裹性质的作用,它不会被渲染为真正的DOM元素。
(2)template中只能包含唯一的根节点。

4.1.2 script

vue规定:开发者可以在script节点中封装组件的JavaScript业务逻辑。

<script>
// 默认导出。这是固定写法!
export default {
  // data 数据源
  // 注意:.vue 组件中的 data 不能像之前一样,不能指向对象。
  // 注意:组件中的 data 必须是一个函数
  data() {
    // 这个 return 出去的 { } 中,可以定义数据
    return {username: ''}
  },
  methods: {
    changeName() {
      // 在组件中, this 就表示当前组件的实例对象
      console.log(this)
      this.username = '哇哈哈'
    }
  },
  // 当前组件中的侦听器
  watch: {},
  // 当前组件中的计算属性
  computed: {},
}
</script>

4.1.3 style

vue 规定:组件内的style节点是可选的,开发者可以在style节点中编写样式美化当前组件的UI结构。

<style>
.test-box {
  background-color: pink;
}
</style>

4.2 组件之间的关系

(1)组件在被封装好之后,彼此之间是相互独立的,不存在父子关系。
(2)在使用组件的时候,根据彼此的嵌套关系,形成了父子关系、兄弟关系。

4.2.1 使用组件的三个步骤

在这里插入图片描述

4.2.2 通过components注册私有子组件

在组件A的components节点下,注册了组件F。
则组件F只能用在组件A中;不能被用在组件C中。

4.2.3 注册全局组件

在vue项目的main.js入口文件中,通过Vue.component()方法,可以注册全局组件。
示例代码如下:

// 导入全局组件
import Count from './components/count.vue'
// 注册全局组件
Vue.component('MyCount',Count)

注意:在组件中无需导入注册,即可以标签形式使用main.js中注册的全局组件。

<template>
	<div>
		<MyCount></MyCount>
	</div>
</template>

5 参考附录

参考vue基础入门

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2395460.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CPT208 Human-Centric Computing 人机交互 Pt.7 交互和交互界面

文章目录 1. 界面隐喻&#xff08;Interface metaphors&#xff09;1.1 界面隐喻的应用方式1.2 界面隐喻的优缺点 2. 交互类型2.1 Instructing&#xff08;指令式交互&#xff09;2.2 Conversing&#xff08;对话式交互&#xff09;2.3 Manipulating&#xff08;操作式交互&…

[网页五子棋][匹配模块]前后端交互接口(消息推送机制)、客户端开发(匹配页面、匹配功能)

让多个用户&#xff0c;在游戏大厅中能够进行匹配&#xff0c;系统会把实力相近的两个玩家凑成一桌&#xff0c;进行对战 约定前后端交互接口 消息推送机制 匹配这样的功能&#xff0c;也是依赖消息推送机制的 玩家 1 点击开始匹配按钮&#xff0c;就会告诉服务器&#xff1…

【数据分析】Matplotlib+Pandas+Seaborn绘图

【数据分析】MatplotlibPandasSeaborn绘图 &#xff08;一&#xff09;Matplotlib绘图1.1 matplotlib绘图方式1: 状态接口1.2 matplotlib绘图方式2: 面向对象1.3 通过安斯科姆数据集, 说明可视化的重要性1.4 MatPlotlib绘图-单变量-直方图1.5 MatPlotlib绘图-双变量-散点图1.6 …

NLP学习路线图(十五):TF-IDF(词频-逆文档频率)

在自然语言处理&#xff08;NLP&#xff09;的浩瀚宇宙中&#xff0c;TF-IDF&#xff08;词频-逆文档频率&#xff09; 犹如一颗恒星&#xff0c;虽古老却依然璀璨。当ChatGPT、BERT等大模型光芒四射时&#xff0c;TF-IDF作为传统方法的代表&#xff0c;其简洁性、高效性与可解…

[Redis] Redis命令在Pycharm中的使用

初次学习&#xff0c;如有错误还请指正 目录 String命令 Hash命令 List命令 set命令 SortedSet命令 连接pycharm的过程见&#xff1a;[Redis] 在Linux中安装Redis并连接桌面客户端或Pycharm-CSDN博客 redis命令的使用见&#xff1a;[Redis] Redis命令&#xff08;1&#xf…

openpnp - 给M4x0.7mm的直油嘴加油的工具选择

文章目录 openpnp - 给M4x0.7mm的直油嘴加油的工具选择概述如果换上带卡口的M4x0.7直油嘴END openpnp - 给M4x0.7mm的直油嘴加油的工具选择 概述 X导轨用了一个HG15的滑块 滑块上的注油口的黄油嘴是M4x0.7mm的直油嘴。 外表面是6边形的柱子&#xff0c;没有可以卡住加油嘴工…

EasyExcel复杂Excel导出

效果图展示 1、引入依赖 <!-- easyExcel --> <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>4.0.2</version> </dependency>2、实体类 import com.alibaba.excel.annotatio…

1,QT的编译教程

目录 整体流程: 1,新建project文件 2,编写源代码 3,打开QT的命令行窗口 4,生成工程文件(QT_demo.pro) 5,生成Make file 6,编译工程 7,运行编译好的可执行文件 整体流程: 1,新建project文件 新建文本文件,后缀改为.cpp 2,编写源代码

【笔记】在 MSYS2(MINGW64)中安装 Python 工具链的记录

#工作记录 &#x1f4cc; 安装背景 操作系统&#xff1a;MSYS2 MINGW64当前时间&#xff1a;2025年6月1日Python 版本&#xff1a;3.12&#xff08;默认通过 pacman 安装&#xff09;目标工具链&#xff1a; pipxnumpypipsetuptoolswheel &#x1f6e0;️ 安装过程与结果记录…

Linux 学习-模拟实现【简易版bash】

1、bash本质 在模拟实现前&#xff0c;先得了解 bash 的本质 bash 也是一个进程&#xff0c;并且是不断运行中的进程 证明&#xff1a;常显示的命令输入提示符就是 bash 不断打印输出的结果 输入指令后&#xff0c;bash 会创建子进程&#xff0c;并进行程序替换 证明&#x…

【中国・珠海】2025 物联网与边缘计算国际研讨会(IoTEC2025)盛大来袭!

2025 物联网与边缘计算国际研讨会&#xff08;IoTEC2025&#xff09;盛大来袭&#xff01; 科技浪潮奔涌向前&#xff0c;物联网与边缘计算已成为驱动各行业变革的核心力量。在此背景下&#xff0c;2025 物联网与边缘计算国际研讨会&#xff08;IoTEC2025&#xff09;即将震撼…

中国高分辨率高质量地面CO数据集(2013-2023)

时间分辨率&#xff1a;日空间分辨率&#xff1a;1km - 10km共享方式&#xff1a;开放获取数据大小&#xff1a;9.83 GB数据时间范围&#xff1a;2013-01-01 — 2023-12-31元数据更新时间&#xff1a;2024-08-19 数据集摘要 ChinaHighCO数据集是中国高分辨率高质量近地表空气污…

GO——内存逃逸分析

一、可能导致逃逸的5中情况 package mainimport "fmt"func main() {f1()f2()f3()f4()f5() }type animal interface {run() }type dog struct{}func (d *dog) run() {fmt.Println("狗在跑") }// 指针、map、切片为返回值的会发生内存逃逸 func f1() (*int,…

MinVerse 3D触觉鼠标的技术原理与创新解析

MinVerse3D触觉鼠标通过三维交互和触觉反馈技术&#xff0c;彻底颠覆了传统二维鼠标的操作方式。用户在操作虚拟物体时&#xff0c;可以真实感知表面质感、重量和阻力。这种技术不仅为数字环境注入了深度与临场感&#xff0c;还在3D设计、游戏开发和工程仿真等领域展现了广泛潜…

乾元通渠道商中标青海省自然灾害应急能力提升工程基层防灾项目

近日&#xff0c;乾元通渠道商中标青海省自然灾害应急能力提升工程基层防灾项目&#xff0c;乾元通作为设备厂家&#xff0c;为项目提供通信指挥类装备&#xff08;多链路聚合设备&#xff09;QYT-X1。 青岛乾元通数码科技有限公司作为国家应急产业企业&#xff0c;深耕于数据调…

openssl-aes-ctr使用openmp加速

openssl-aes-ctr使用openmp加速 openssl-aes-ctropenmp omp for openssl-aes-ctr 本文采用openssl-1.1.1w进行开发验证开发&#xff1b;因为aes-ctr加解密模式中&#xff0c;不依赖与上一个模块的加/解密的内容&#xff0c;所以对于aes-ctr加解密模式是比较适合进行并行加速的…

PHP+MySQL开发语言 在线下单订水送水小程序源码及搭建指南

随着互联网技术的不断发展&#xff0c;在线下单订水送水服务为人们所需要。分享一款 PHP 和 MySQL 搭建一个功能完善的在线订水送水小程序源码及搭建教程。这个系统将包含用户端和管理端两部分&#xff0c;用户可以在线下单、查询订单状态&#xff0c;管理员可以处理订单、管理…

计算机网络第1章(上):网络组成与三种交换方式全解析

目录 一、计算机网络的概念二、计算机网络的组成和功能2.1 计算机网络的组成2.2 计算机网络的功能 三、电路交换、报文交换、分组交换3.1 电路交换&#xff08;Circuit Switching&#xff09;3.2 报文交换&#xff08;Message Switching&#xff09;3.3 分组交换&#xff08;Pa…

Android studio进阶开发(七)---做一个完整的登录系统(前后端连接)

我们已经讲过了okhttp和登录系统的使用&#xff0c;我们今天做一个完整的登录系统&#xff0c;后端用springmybatis去做 数据库内容 -- 创建学生信息表 CREATE TABLE student_info (id SERIAL PRIMARY KEY, -- 添加自增主键name VARCHAR(255) NOT NULL,number INT NOT NULL,…

计算机网络第1章(下):网络性能指标与分层模型全面解析

目录 一、计算机网络的性能指标1.1 性能指标1&#xff1a;速率1.2 性能指标2&#xff1a;带宽1.3 性能指标3&#xff1a;吞吐量1.4 性能指标4&#xff1a;时延1.5 性能指标5&#xff1a;时延带宽积1.6 性能指标6&#xff1a;往返时延1.7 性能指标7&#xff1a;信道利用率 二、计…