15_Vue3核心概念与实践

文章目录

  • Vue3
  • 1. Vite
  • 2.使用Vite创建前端工程
  • 3.目录介绍
  • 4.SFC入门5.2.3
  • 5.Vite+Vue样式导入方式
  • 6.响应式入门&&setup函数
    • 6.1 响应式数据
    • 6.2 省略setup(){} 省略default{},return{}
    • 6.3 案例开发功能概述
  • 7. 插值表达式
  • 8.文本渲染v-text/v-html
  • 9. 属性渲染v-bind
  • 10. 事件绑定v-on
  • Appendix

Vue3

概念

是一款用于构建用户界面的 JavaScript 框架基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。官网为:https://cn.vuejs.org/

小结:Vue3是渐进式JS框架

Vue的两个核心功能:

  • 声明式渲染:Vue 基于标准 HTML 拓展了一套模板语法,使得我们可以声明式地描述最终输出的 HTML 和 JavaScript 状态之间的关系。
  • 响应性:Vue 会自动跟踪 JavaScript 状态并在其发生变化时响应式地更新 DOM

1. Vite

概述:

vite是我们项目搭建的脚手架,以及项目打包和运行的一款工具。和maven的功能大相径庭。

在这里插入图片描述

优点:快,好;

2.使用Vite创建前端工程

npm create vite
  • 如果想使用最新的
npm create vite@latest
  • 第一次使用vite创建工程会包下载依赖

在这里插入图片描述

选择正确的选项即可

选择vue,js即可

在这里插入图片描述

这就是我们项目的基础结构

  • 最后需要进入07_vite中下载所有package.json下的所有依赖
npm install 

在这里插入图片描述

  • 研发模式运行vue

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

项目停止:

ctrl c

3.目录介绍

在这里插入图片描述

  • .vscode
  • node_modules
  • public
    • 存放公共资源的
  • src
    • 前端源代码主要目录;下面是src的目录内容
    • assets/ 目录:用于存放一些项目中用到的静态资源,如图片、字体、样式文件等。
    • components/ 目录:用于存放组件相关的文件。组件是代码复用的一种方式,用于抽象出一个可复用的 UI 部件,方便在不同的场景中进行重复使用。
    • layouts/ 目录:用于存放**布局组件的文件。**布局组件通常负责整个应用程序的整体布局,如头部、底部、导航菜单等。
    • pages/ 目录:用于存放页面级别的组件文件,通常是路由对应的组件文件。在这个目录下,可以创建对应的文件夹,用于存储不同的页面组件。
    • plugins/ 目录:用于存放 Vite 插件相关的文件,可以按需加载不同的插件来实现不同的功能,如自动化测试、代码压缩等。
    • router/ 目录:用于存放 Vue.js 的路由配置文件,负责管理视图和 URL 之间的映射关系,方便实现页面之间的跳转和数据传递
    • store/ 目录:用于存放 Vuex 状态管理相关的文件,负责管理应用程序中的数据和状态,方便统一管理和共享数据,提高开发效率。
    • utils/ 目录:用于存放一些通用的工具函数,如日期处理函数、字符串操作函数等。
    • index.html程序入口文件

4.SFC入门5.2.3

什么是VUE的组件?

  • 一个页面作为整体,是由多个部分组成的,每个部分在这里就可以理解为一个组件
  • 每个.vue文件就可以理解为一个组件,多个.vue文件可以构成一个整体页面
  • 组件化给我们带来的另一个好处就是组件的复用和维护非常的方便

在这里插入图片描述

组件化,一个组件可以作用到多个文件,到时候进行修改的时候,可以改一次,所有页面改变;

什么是.vue文件?

  • 传统的页面有.html文件.css文件和.js文件三个文件组成(多文件组件)

  • vue将这文件合并成一个.vue文件(Single-File Component,简称 SFC,单文件组件)

  • .vue文件对js/css/html统一封装,这是VUE中的概念 该文件由三个部分组成 <script> <template> <style>

    • template标签 代表组件的html部分代码 代替传统的.html文件
    • script标签 代表组件的js代码 代替传统的.js文件
    • style标签 代表组件的css样式代码 代替传统的.css文件

在这里插入图片描述

基本上一个.vue文件作为一个脚手架替代了前端三大件;(vue3独有)

vue启动启动项目几行代码但是内容丰富的原因

在这里插入图片描述

其引入了man.js将大量的.vue代码引入到index.html最终形成一个dom树展示给用户

  • 修改文件内容

在这里插入图片描述

  • 一个.vue组件可以引入其他.vue组件
    • 仅需在script中import即可

在这里插入图片描述

如果想要展示

需要在template中引入Haha标签

5.Vite+Vue样式导入方式

  1. 全局引入main.js

    import './style/reset.css' //书写引入的资源的相对路径即可!
    
  2. vue文件script代码引入

    import './style/reset.css'
    

    css样式保存到独立的css文件夹下,哪里.vue需要直接导入即可;

    –script标签导入

    –style标签导入

  3. Vue文件style代码引入

    @import './style/reset.css'
    

style标签中导入必须加@符

6.响应式入门&&setup函数

6.1 响应式数据

  • 响应式数据&&非响应式数据

  • 响应数据:在数据变化时候,dom树跟着更新

  • 非响应数据:在数据变化的时候,dom树不跟着变化

  • vue3中,数据需要通过ref/reactive函数的处理才是响应式的;

  • ref/reactive函数导入就能用,vue自带;

 import {ref,reactive} from 'vue'
  • ref函数的特征

1.在script标签中,操作ref 的响应式数据需要通过.value的形式操作

2.在template标签中,操作ref直接用即可

在这里插入图片描述

具体写.vue模块化写法

首先写好script标签 type写上module

其次导包

import {ref,reactive} from ‘vue’

接下来写setup (){}

内部定义es6写法,写变量方法和return即可

定义好的内容template标签直接使用即可

6.2 省略setup(){} 省略default{},return{}

  • setup语法糖写法***

在这里插入图片描述

6.3 案例开发功能概述

在这里插入图片描述

开发两个按钮,左边自增1,右边自减1;

  • setup语法糖导入
<script type="setup">   
  • 导入ref,reactive动态包
let counter = ref(1)

function counterIncr(){
  counter.value++
}

function counterDecr(){
  counter.value--
}

function showCounter(){
  alert(counter.value)
}
  • 定义变量方法在script中ref包裹变量
ref(1)
  • 定义template
<template>  
  <div>
    <button @click="counterIncr()">+</button>
    <!-- v-text表示vue的一个文本,表示将一个变量 表示到双标签的一个文本 -->
    <span v-text="counter"></span>      
    <button @click="counterDecr()">-</button>  
    <button @click="showCounter">showCounter</button>
  </div>
</template>

7. 插值表达式

  • vue代码解析技术,会将所有的vue代码解析成dom树最终解析;

  • vue代码 --> Dom树的过程 为渲染

  • 响应式数据的更新也是渲染

<script setup type="module">
  let msg ="hello vue3"
  let getMsg= ()=>{
    return 'hello vue3 message'
  }
  let age = 19
  let bee = '蜜 蜂'
  // 购物车
  const carts = [{name:'可乐',price:3,number:10},{name:'薯片',price:6,number:8}];
  //计算购物车总金额
  function compute(){
      let count = 0;
      for(let index in carts){
          count += carts[index].price*carts[index].number;
      }
      return count;
  }
</script>

<template>
  <div>
    <h1>{{ msg }}</h1>
    msg的值为: {{ msg }} <br>
    getMsg返回的值为:{{ getMsg() }}  <br>
    是否成年: {{ age>=18?'true':'false' }} <br>
    反转: {{ bee.split(' ').reverse().join('-') }} <br>
    购物车总金额: {{ compute() }} <br/>
    购物车总金额: {{carts[0].price*carts[0].number + carts[1].price*carts[1].number}} <br>
  </div>
</template>

<style scoped>

</style>
  • 小结:插值表达式{{ 可以绑定任意es6语法变量 }}

8.文本渲染v-text/v-html

  • v-text 不识别文本中html代码

  • v-html 可以识别文本中html代码

在这里插入图片描述

<script setup type="module">
    let text = "test"
    // v-text命令支持模板字符串
    let msg = `spark streaming  ${text}`
    let age = 20
    let font1 = "<font color ='red'>你好</font>"
</script>
<template>
    <div>
        <h1 v-text="msg">
        </h1>
        <!-- v-text支持条件语法 -->
        <h1 v-text="age>=18?'成年':'未成年'"></h1>      
        <h1 v-html="font1"></h1>
    </div>
</template>
<style scoped>
</style>

绑定方式和之前的一模一样

9. 属性渲染v-bind

  • 将数据绑定到元素的属性上

  • 使用v-bind对事件进行绑定

在这里插入图片描述

注意中间连接src使用的是“ : ”

  • 甚至可以支持跳转页写法

在这里插入图片描述

注意:跳转页写法href的url必须写到a标签中,a标签包裹要跳转的图标

10. 事件绑定v-on

v-on事件渲染
v-on:事件名称="函数名()"
可以简写:@事件名
  • 写法和属性绑定一样只不过名字变为v-on

在这里插入图片描述

  • 内联事件处理器写法
v-on:click="conter++"
  • 事件写入到template中,所以使用ref的化不需要调用value值。

  • 内联写法就是匿名写法;

  • 一次性绑定修饰符 .once

 <button v-on:click.once="count1++" >+</button>
  • 阻止事件行为
<button v-on:click.prevent="count1++" >+</button>

比如说页面要进行跳转,事件绑定了prevent

所以函数会被执行,但是js事件跳转不会执行;

Appendix

关于JS和TS选择

TS是JS的一个超集,使用TS之后,JS的语法更加的像JAVA,实际开发中用的确实更多,那么这里为什么我们没有立即使用TS进行开发,原因如下

响应式数据&&非响应式数据

响应数据:在数据变化时候,dom树跟着更新

非响应数据:在数据变化的时候,dom树不跟着变化

vue3中,数据需要通过ref/reactive函数的处理才是响应式的;

ref/reactive函数导入就能用,vue自带;

 import {ref,reactive} from 'vue'

ref函数的特征

​ 在script标签中,操作ref 的响应式数据需要通过.value的形式操作

​ 在template标签中,操作ref直接用即可

.vue模块是放到index文件的一个原材料

main.js删除了会影响页面显示

button标签没有value值,直接在标签中写值即可

导入ref还非得加{},否则无法使用

import {ref} from  'vue'

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Vue的前端瀑布流布局组件的设计与实现

摘要 随着前端技术的不断演进&#xff0c;复杂业务场景和多次迭代后的产品对组件化开发提出了更高的要求。传统的整块应用开发方式已无法满足快速迭代和高效维护的需求。因此&#xff0c;本文将介绍一款基于Vue的瀑布流布局组件&#xff0c;旨在通过组件化开发提升开发效率和降…

全球AI新闻速递6.7

1.智谱 AI 宣布全模型矩阵降价&#xff0c;开源 GLM-4-9B 系列模型。 2.复旦大学计划在2024-2025新学年推出至少100门。 3.思科&#xff1a;启动 10 亿美元 AI 基金&#xff0c;投资AI初创公司。 4.OpenAI和谷歌DeepMind员工联名发声&#xff1a;高级AI风险巨大&#xff0c;…

Acwing 786.第K个数

Acwing 786.第K个数 题目描述 786. 第k个数 - AcWing题库 运行代码 #include <iostream> #include <algorithm> using namespace std; const int N 100010; int q[N];int main() {int n, k;scanf("%d%d", &n, &k);for (int i 0; i < n; …

Mac屏幕截图软件

一、简介&#xff08;有小伙伴留言说想要mac的屏幕截图软件&#xff0c;今天给大家分享一个还不错的&#xff09; 1、一个功能丰富的功能丰富的截图工具&#xff0c;具有许多高级功能&#xff0c;免费。用于快速拍摄并将它们组织成集合。Snappy还支持注释&#xff0c;共享&…

Linux操作系统:Spark在虚拟环境下的安装及部署

将Spark安装到指定目录 // 通过wget下载Spark安装包 $ wget https://d3kbcqa49mib13.cloudfront.net/spark-2.1.1-bin-hadoop2.7.tgz // 将spark解压到安装目录 $ tar –zxvf spark-2.1.1-bin-hadoop2.7.tgz –C /usr/local/ // 重命名 $ mv /usr/local/spark-2.1.1-bin-hado…

1.音视频开篇

目录 音视频播放的原理 音视频数据格式YUV YUV数据存储比 ​编辑 YUV空间格式 RGB与YUV转换 音视频播放的原理 主要分为&#xff1a;解协议->解封装->解码->音视频同步->播放。当然&#xff0c;如果是本地播放&#xff0c;没有解协议这一步骤。 采集数据其实…

Cesium开发环境搭建(二)

由于win7搭建很费事&#xff0c;重新安装了OS&#xff0c;win10的。 记录一下&#xff0c;搭建步骤&#xff1a; 1.下载node.js。 百度搜索即可下载对应的版本。下载cesium。 2.安装node.js。 安装后&#xff0c;输入node -v&#xff0c;显示版本信息&#xff0c;表示安装…

Spring Cloud 微服务集成Sentinel实现服务熔断降级

文章目录 一、前言二、技术思路及方案2.1 实现思路2.2 实现方案2.2.1 nacos动态数据源实现类关系图 三、功能实现3.1 快速集成方案3.1.1 引入依赖3.1.2 服务端熔断降级3.1.3 feign调用降级 四、扩展4.1 SPI机制4.2 自定义Slot实现4.3 基于 Sentinel 实现 Feign 全局异常兜底4.3…

MySQL之查询性能优化(七)

查询性能优化 排序优化 无论如何排序都是一个成本很高的操作&#xff0c;所以从性能角度考虑&#xff0c;应尽可能避免排序或者尽可能避免对大量数据进行排序。前面已经提到了&#xff0c;当不能使用索引生成排序结果的时候&#xff0c;MySQL需要自己进行排序&#xff0c;如果…

【大事件】docker可能无法使用了

今天本想继续学习docker的命令&#xff0c;突然发现官方网站的文档页面打不开了。 难道是被墙了&#xff1f; 我用同事的翻了一下&#xff0c;能进&#xff0c;果然&#xff01; 正好手头的工作告一段落&#xff0c;将代码上传&#xff0c;然后通过jenkins将服务器自动部署到…

Python魔法之旅-魔法方法(20)

目录 一、概述 1、定义 2、作用 二、应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类型检…

代码随想录——删除二叉搜索树中的节点(Leetcode450)

题目链接 递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

SpringBoot实现图片文件上传和回显的两种方式

目录 一 功能需求 二 上传本地 2.1 实现文件上传的controller层 2.2 图片访问资源映射 二 上传OSS 一 功能需求 实现图片的上传和回显功能其实在业务中是非常常见的&#xff0c;比如需要上传头像&#xff0c;或者交易平台需要上传物品的图片等等&#xff0c;都需要上传和回…

数字后端设计岗位介绍

数字后端设计岗位是数字芯片设计流程中的关键环节&#xff0c;以下是对该岗位的详细介绍&#xff1a; 一、岗位职责 数字后端设计工程师的主要职责包括&#xff1a; 负责将芯片的逻辑设计转化为物理实现&#xff0c;利用EDA工具进行自动布局布线&#xff0c;完成从netlist到…

Linux驱动开发笔记(六)中断子系统及实验

文章目录 前言一、中断子系统框架1. 中断硬件简单描述2. 中断的软件描述 二、GIC v3中断控制器1. GIC v3基本结构1.1 Distributor1.2 Redistributor1.3 ITS1.4 CPU interface 2. 中断类型与特点3. 中断号 三、函数编写3.1 相关API函数3.2 驱动初始化函数3.3 operations函数3.3.…

基于Gdb快速上手调试Redis

写在文章开头 近期很多读者有询问有没有什么简单的办法快速上手调试redis&#xff0c;对此&#xff0c;笔者用到了Linux系统中比较易上手的调试工具GDB&#xff0c;本文将基于一个C语言两数交换的例子演示一下这款工具的使用。 Hi&#xff0c;我是 sharkChili &#xff0c;是个…

【Python深度学习系列】网格搜索神经网络超参数:批量大小和迭代周期数(案例+源码)

这是我的第297篇原创文章。 一、引言 在深度学习中&#xff0c;超参数是指在训练模型时需要手动设置的参数&#xff0c;它们通常不能通过训练数据自动学习得到。超参数的选择对于模型的性能至关重要&#xff0c;因此在进行深度学习实验时&#xff0c;超参数调优通常是一个重要的…

在线Logo背景去除:pixian.ai

文章目录 简介特色 简介 pixian.ai是一款智能图片背景去除工具&#xff0c;进入网页后&#xff0c;会非常醒目地提示你准备【Free】还是【Paid】&#xff0c;这点就非常好&#xff0c;不向有一些网站&#xff0c;主打免费使用&#xff0c;但时不时弹出“免费注册”&#xff0c…

1782java英语陪学记词系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java英语陪学记词系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助采用了java设计&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&…

RabbitMQ-工作模式(简单模式工作队列)

文章目录 简单模式&#xff08;simple&#xff09;工作队列&#xff08;work&#xff09;准备工作轮询调度消息确认消息持久性公平分发代码示例 本篇总结 更多相关内容可查看 简单模式&#xff08;simple&#xff09; 通俗概括:生产者-队列-消费者 想详细了解Rabbit的基础或简…