Vue快速上手和Vue指令

news2024/10/24 0:06:32

一、Vue快速上手

1、Vue概念

Vue (读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架

Vue2官网:https://v2.cn.vuejs.org/

构建用户界面:基于数据渲染出用户可以看到的界面

渐进式: 循序渐进,不一定非得把Vue中的所有API都学完才能开发Vue,可以学一点开发一点

Vue的两种开发方式:

(1)Vue核心包开发:局部模块改造

(2)Vue核心包&Vue插件&工程化:整站开发

框架:就是一套完整的项目解决方案,提升开发效率

2、创建实例

<body>
  <!-- 
  创建Vue实例,初始化渲染
  1. 准备容器 (Vue所管理的范围)
  2. 引包 (开发版本包 / 生产版本包) 官网
  3. 创建实例
  4. 添加配置项 => 完成渲染
-->

  <!-- 不是Vue管理的范围 -->
  <div class="box2">
    box2 -- {{ count }}
  </div>
  <div class="box">
    box -- {{ msg }}
  </div>
  -----------------------------------------------------
  <!-- Vue所管理的范围 -->
  <div id="app">
    <!-- 这里将来会编写一些用于渲染的代码逻辑 -->
    <h1>{{ msg }}</h1>
    <a href="#">{{ count }}</a>
  </div>

  <!-- 引入的是开发版本包 - 包含完整的注释和警告 -->
  <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>

  <script>
    // 一旦引入 VueJS核心包,在全局环境,就有了 Vue 构造函数
    const app = new Vue({
      // 通过 el 配置选择器,指定 Vue 管理的是哪个盒子
      el: '#app',
      // 通过 data 提供数据
      data: {
        msg: 'Hello 你好',
        count: 666
      }
    })
  </script>
</body>

3、插值表达式

插值表达式是一种Vue的模板语法,可以用插值表达式渲染出Vue提供的数据

表达式:是可以被求值的代码,JS引擎会讲其计算出一个结果

以下的情况都是表达式:

money + 100
money - 100
money * 10
money / 10 
price >= 100 ? '真贵':'还行'
obj.name
arr[0]
fn()
obj.fn()

插值表达式语法:{{ 表达式 }} 

<h3>{{title}}<h3>

<p>{{nickName.toUpperCase()}}</p>

<p>{{age >= 18 ? '成年':'未成年'}}</p>

<p>{{obj.name}}</p>

<p>{{fn()}}</p>

常见错误用法

1.在插值表达式中使用的数据 必须在data中进行了提供
<p>{{hobby}}</p>  //如果在data中不存在 则会报错

2.支持的是表达式,而非语句,比如:if   for ...
<p>{{if}}</p>

3.不能在标签属性中使用 {{  }} 插值 (插值表达式只能标签中间使用)
<p title="{{username}}">我是P标签</p>
<body>

  <!-- 
  插值表达式:Vue的一种模板语法
  作用:利用 表达式 进行插值渲染
  语法:{{ 表达式 }}

  注意点:
    1. 使用的数据要存在
    2. 支持的是表达式,不是语句  if  for
    3. 不能在标签属性中使用 {{ }}
 -->
  <div id="app">
    <p>{{ nickname }}</p>
    <p>{{ nickname.toUpperCase() }}</p>
    <p>{{ nickname + '你好' }}</p>
    <p>{{ age >= 18 ? '成年' : '未成年' }}</p>
    <p>{{ friend.name }}</p>
    <p>{{ friend.desc }}</p>

    <!-- ----------------------- -->
    <!-- <p>{{ hobby }}</p> -->
    <!-- <p>{{ if }}</p> -->
    <!-- <p title="{{ nickname }}">我是p标签</p> -->
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
  <script>

    const app = new Vue({
      el: '#app',
      data: {
        nickname: 'tony',
        age: 18,
        friend: {
          name: 'jepson',
          desc: '热爱学习 Vue'
        }
      }
    })
  </script>
</body>

4、响应式特性

响应式:简单理解就是数据变,视图对应变

data中的数据, 最终会被添加到实例上

① 访问数据: "实例.属性名"

② 修改数据: "实例.属性名"= "值"

<body>

  <div id="app">
    {{ msg }}
    {{ count }}
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>

  <script>

    const app = new Vue({
      el: '#app',
      data: {
        // 响应式数据 → 数据变化了,视图自动更新
        msg: '你好,同学',
        count: 100
      }
    })

  // data中的数据,是会被添加到实例上
  // 1. 访问数据  实例.属性名
  // 2. 修改数据  实例.属性名 = 新值

  </script>
</body>

5、开发者工具

(1)通过谷歌应用商店安装(国外网站)

(2)极简插件下载(推荐) https://chrome.zzzmh.cn/index

安装步骤:

二、Vue指令

1、指令概念及分类

概念:指令(Directives)是Vue提供的带有 v- 前缀的特殊标签属性

Vue中的指令按照不同的用途可以分为如下6大类:

  • 内容渲染指令(v-html、v-text)

  • 条件渲染指令(v-show、v-if、v-else、v-else-if)

  • 事件绑定指令(v-on)

  • 属性绑定指令 (v-bind)

  • 双向绑定指令(v-model)

  • 列表渲染指令(v-for)

2、v-html、v-text

内容渲染指令用来辅助开发者渲染 DOM 元素的文本内容。常用的内容渲染指令有如下 2 个:

(1)v-text(类似 innerText)

  • 使用语法:<p v-text="uname">hello</p>,意思是将 uame 值渲染到 p 标签中类似 innerText,使用该语法,会覆盖 p 标签原有内容

(2)v-html(类似 innerHTML)

  • 使用语法:<p v-html="intro">hello</p>,意思是将 intro 值渲染到 p 标签中,类似 innerHTML,使用该语法,会覆盖 p 标签原有内容
<body>

  <div id="app">
    <h2>个人信息</h2>
    <!-- 既然指令是vue提供的特殊的html属性,所以写的时候就当成属性来用即可 -->
    <p v-text="uname">姓名:</p>
    <p v-html="intro">简介:</p>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>

    const app = new Vue({
      el: '#app',
      data: {
        uname: '张三',
        intro: '<h2>这是一个<strong>非常优秀</strong>的boy<h2>'
      }
    })

  </script>
</body>

3、v-show、v-if

条件渲染指令用来辅助开发者按需控制 DOM 的显示与隐藏。条件渲染指令有如下两个,分别是

(1)v-show

  • 作用: 控制元素显示隐藏
  • 语法: v-show = "表达式" 表达式值为 true 显示, false 隐藏
  • 原理: 切换 display:none 控制显示隐藏
  • 场景:频繁切换显示隐藏的场景

(2)v-if

  • 作用: 控制元素显示隐藏(条件渲染)
  • 语法: v-if= "表达式" 表达式值 true显示, false 隐藏
  • 原理: 基于条件判断,是否创建 或 移除元素节点
  • 场景: 要么显示,要么隐藏,不频繁切换的场景
<body>

  <!-- 
    v-show底层原理:切换 css 的 display: none 来控制显示隐藏
    v-if  底层原理:根据 判断条件 控制元素的 创建 和 移除(条件渲染)
  -->

  <div id="app">
    <div v-show="flag" class="box">我是v-show控制的盒子</div>
    <div v-if="flag" class="box">我是v-if控制的盒子</div>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        flag: true
      }
    })
  </script>

</body>

v-else 和 v-else-if

  • 作用:辅助v-if进行判断渲染
  • 语法:v-else v-else-if="表达式"
  • 场景:需要紧接着v-if使用
<body>
  
  <div id="app">
    <p v-if="gender === 1">性别:♂ 男</p>
    <p v-else>性别:♀ 女</p>
    <hr>
    <p v-if="score >= 90">成绩评定A:奖励电脑一台</p>
    <p v-else-if="score >= 70">成绩评定B:奖励周末郊游</p>
    <p v-else-if="score >= 60">成绩评定C:奖励零食礼包</p>
    <p v-else>成绩评定D:惩罚一周不能玩手机</p>
  </div>
  
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>

    const app = new Vue({
      el: '#app',
      data: {
        gender: 2,
        score: 95
      }
    })
  </script>

</body>

  4、v-on

使用Vue时,如需为DOM注册事件,语法如下:

  • <button v-on:事件名="内联语句">按钮</button>
  • <button v-on:事件名="处理函数">按钮</button>
  • <button v-on:事件名="处理函数(实参)">按钮</button>
  • v-on: 简写为 @

(1) 内联语句

<body>
  <div id="app">
    <button @click="count--">-</button>
    <span>{{ count }}</span>
    <button v-on:click="count++">+</button>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        count: 100
      }
    })
  </script>
</body>

(2) 事件处理函数

<body>
  <div id="app">
    <button @click="fn">切换显示隐藏</button>
    <h1 v-show="isShow">哈哈哈</h1>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app4 = new Vue({
      el: '#app',
      data: {
        isShow: true
      },
      methods: {
        fn () {
          // 让提供的所有methods中的函数,this都指向当前实例
          // console.log('执行了fn', app.isShow)
          // console.log(app3 === this)
          this.isShow = !this.isShow
        }
      }
    })
  </script>
</body>

(3)给事件处理函数传参

<style>
    .box {
      border: 3px solid #000000;
      border-radius: 10px;
      padding: 20px;
      margin: 20px;
      width: 200px;
    }
    h3 {
      margin: 10px 0 20px 0;
    }
    p {
      margin: 20px;
    }
  </style>
</head>
<body>

  <div id="app">
    <div class="box">
      <h3>小黑自动售货机</h3>
      <button @click="buy(5)">可乐5元</button>
      <button @click="buy(10)">咖啡10元</button>
      <button @click="buy(8)">牛奶8元</button>
    </div>
    <p>银行卡余额:{{ money }}元</p>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        money: 100
      },
      methods: {
        buy (price) {
          this.money -= price
        }
      }
    })
  </script>
</body>

5、v-bind

(1)作用:动态设置html的标签属性 比如:src、url、title

(2)语法:v-bind:属性名=“表达式”

(3)v-bind:可以简写成 :

比如,有一个图片,它的 src 属性值是一个图片地址。这个地址在数据 data 中存储。

则可以这样设置属性值:

<img v-bind:src="url" />

<img :src="url" /> (v-bind可以省略)

<body>
  <div id="app">
    <!-- v-bind:src   =>   :src -->
    <img v-bind:src="imgUrl" v-bind:title="msg" alt="">
    <img :src="imgUrl" :title="msg" alt="">
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        imgUrl: './imgs/10-02.png',
        msg: 'hello 波仔'
      }
    })

  </script>
</body>

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

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

相关文章

docker容器网络与宿主机网络冲突的原因与解决方案

一、故障现象 在用docker-compos.yaml文件或者手动创建docker网络时&#xff0c;可能会出现新建的容器网络与宿主机网络冲突&#xff0c;导致SSH远程连接中断&#xff0c;并无法再用Xshell等远程连接工具连接宿主机。现象如下&#xff1a; [rootcontroller ~]# docker networ…

LeRobot——Hugging Face打造的机器人领域的Transformer架构

前言 如友人邓博士所说&#xff0c;“用 Stanford aloha 课题组提供的训练数据&#xff0c;训练他们研发的 Action Chunking Transformer 动作规划模型&#xff0c;训练结果&#xff0c;能用&#xff0c;但是稳定性有待提高 要提高稳定性&#xff0c;看来必须修改 Stanford a…

web安全渗透测试十大常规项(一):web渗透测试之PHP反序列化

渗透测试之PHP反序列化 1. PHP反序列化1.1 什么是反序列化操作? - 类型转换1.2 常见PHP魔术方法?- 对象逻辑(见图)1.2.1 construct和destruct1.2.2 construct和sleep1.2.2 construct和wakeup1.2.2 INVOKE1.2.2 toString1.2.2 CALL1.2.2 get()1.2.2 set()1.2.2 isset()1.2.2…

Js-w3school(2024(1)

10.访问 HTML 元素 使用“不整洁的” HTML 样式的后果&#xff0c;也许是导致 JavaScript 错误。请在 HTML 中使用相同的命名约定&#xff08;就像 JavaScript 那样&#xff09; 11. 请使用正确的文档类型 请始终在文档的首行声明文档类型&#xff1a; 如果您一贯坚持小写标…

数据结构之B数

目录 1.概述 2.特点 3.诞生 4.优缺点 4.1.优点 4.2.缺点 5.应用场景 6.C语言中的B树实现例子 7.总结 1.概述 B树&#xff08;B-tree&#xff09;是一种自平衡的树数据结构&#xff0c;广泛应用于数据库和文件系统中&#xff0c;以便高效地进行顺序读取、写入以及查找…

南京邮电大学计算机网络实验一(网络操作系统的安装与配置)

文章目录 一、 实验目的和要求二、 实验环境(实验设备)三、 实验原理和步骤四、 实验小结&#xff08;包括问题和解决方法、心得体会、意见与建议等&#xff09;&#xff08;一&#xff09;问题和解决方法&#xff08;二&#xff09;心得体会&#xff08;三&#xff09;意见与建…

osgearth提示“simple.earth: file not handled”

在用vcpkg编译完osg和osgearth后&#xff0c;为了验证osgearth编译是否正确&#xff0c;进行测试&#xff0c;模型加载代码如下&#xff1a; root->addChild(osgDB::readNodeFile("simple.earth")); 此时以为是simple.earth路径的问题&#xff0c;遂改为以下代码…

AI交互数字人如何赋能数智教育?

随着AI交互数字人技术的飞速发展&#xff0c;教育领域正经历着前所未有的变革。AI交互数字人为教育领域注入了全新活力&#xff0c;重塑着教学模式&#xff0c;为学生带来沉浸式学习体验。 AI交互数字人在教育领域中&#xff0c;可以应用在&#xff1a; 1、个性化学习教学指导…

不适合编程的人是怎样的?

你知道不适合编程的人是怎样的吗&#xff1f;其实&#xff0c;对编程没有兴趣的人往往都不适合从事编程工作。编程并非是一项轻松简单的任务&#xff0c;它需要投入大量的时间和精力。 编程领域有其独特的特点和要求。首先&#xff0c;编程有着相当陡峭的学习曲线。从最基础的语…

分布式锁三种方案

基于数据库的分布式锁&#xff08;基于主键id和唯一索引&#xff09; 1基于主键实现分布式锁 2基于唯一索引实现分布式锁 其实原理一致&#xff0c;都是采用一个唯一的标识进行判断是否加锁。 原理&#xff1a;通过主键或者唯一索性两者都是唯一的特性&#xff0c;如果多个…

二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面

二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面 二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面

如何使用React的lazy和Suspense来实现代码分割?

在React中&#xff0c;使用React.lazy和Suspense可以方便地实现组件的代码分割。代码分割是一种优化技术&#xff0c;它将代码拆分成多个包&#xff0c;然后按需加载这些包&#xff0c;从而加快应用的初始加载时间。下面是如何使用这两个API的基本步骤&#xff1a; 使用React.l…

24上软考成绩预计6月底公布?附查分指南

最近&#xff0c;很多小伙伴都在问上半年成绩什么时候出来&#xff1f;每天学习群变成了祈祷群&#xff0c;都在祈祷45,45,45。按照上一次的成绩发布时间&#xff0c;从考试结束到成绩发布&#xff0c;间隔了32天。这次是不是会更快&#xff1f; 一般阅卷只要7-10天&#xff0c…

深入探究RTOS的IPC机制----邮箱

阅读引言&#xff1a; 因为将来工作需要&#xff0c; 最近在深入学习OS的内部机制&#xff0c;我把我觉得重要的、核心的东西分享出来&#xff0c; 希望对有需要的人有所帮助&#xff0c; 阅读此文需要读友有RTOS基础&#xff0c; 以及一些操作系统的基础知识&#xff0c; 学习…

基于SSM+Jsp的书店仓库管理系统

摘要&#xff1a;仓库作为储存货物的核心功能之一&#xff0c;在整个仓储中具有非常重要的作用&#xff0c;是社会物质生产的必要条件。良好的仓库布局环境能够对货物进入下一个环节前的质量起保证作用&#xff0c;能够为货物进入市场作好准备&#xff0c;在设计中我们根据书店…

Vue与SpringSecurity认证整合-06

Vue与SpringSecurity整合 我们要知道springsecurity是一个安全框架,我们在后端的时候没有接触前端,springsecurity引入依赖之后,启动项目会对我们进行拦截,让我们登录,然后我们制定了一个登录页面,也是后端的,我们可以指向我们的登录页面,但是与Vue整合之后,登录页面肯定是在Vu…

【JavaScript复习二】选择结构if和Switch(1)

### []( )2、单分支条件分支语句if (条件表达式) { // 条件为真时&#xff0c;做的事情 } else { // 条件为假时&#xff0c;做的事情 } ### []( )2,、多分支的 if 语句if (条件表达式1) { // 条件1为真时&#xff0c;做的事情} else if (条件表达式2) { // 条件1不满足&…

打造完美启动页:关键策略与设计技巧

启动页&#xff08;Splash Screen&#xff09;设计是指在应用程序启动时&#xff0c;首先展示给用户的界面设计。这个界面通常在应用加载或初始化期间显示&#xff0c;其主要目的是为用户提供一个视觉缓冲&#xff0c;展示品牌标识&#xff0c;并减少用户在等待过程中的焦虑感。…

kafka基础概念

目录 1、kafka简介 2、kafka使用场景 3、kafka基础概念 3.1、消息 3.1.1、消息构成详解 3.1.2、消息存储设计 3.2、topic 3.3、partition 3.4、offset 3.5、replication 3.5.1、replication简介 3.5.2、副本角色 3.5.3、副本类型 3.5.3.1、副本类型简介 3.5.3.2、…

【前端开发工具】VS Code安装和使用

文章目录 一、前言二、下载三、安装四、配置五、使用5.1 导入项目5.2 本地运行项目5.3 修改界面文案&#xff0c;验证效果5.4 添加日志打印5.5 代码调试5.6 代码提交到Git仓库 六、总结 一、前言 本文介绍一下在前端vue项目中&#xff0c;VS Code的安装和配置。 什么是VS Code…