首页 > 其他分享 >vue学习

vue学习

时间:2024-09-11 13:20:22浏览次数:3  
标签:vue createApp app 绑定 学习 Vue 元素 data

学习目标

  • 一周掌握 VUE 的使用(陆续更新中)

学习内容:

  1. 了解vue的概念及特点
  2. 引入vue
  3. 掌握vue核心知识

笔记产出:

一、vue介绍

Vue.js,我们通常简称为Vue,是一个用于构建用户界面的渐进式JavaScript框架。它就像是一个超级强大的工具箱,帮助开发者更轻松、更高效地创建网页和应用程序。它易于上手,同时提供了强大的数据绑定和组合视图组件的能力。

二、引入Vue.js

首先,你需要在你的项目中引入 Vue.js。Vue.js 可以通过多种方式引入:

  • CDN 引入:在你的 HTML 文件中,通过"script "标签从 CDN 引入 Vue.js。
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
    <!-- <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> -->
</head>
注意:这里使用的是 Vue 3.x 的版本链接,Vue 2.x 的 CDN 链接会有所不同。
  • NPM 安装:如果你的项目是基于 Node.js 的,可以使用 npm 安装 Vue
npm install vue  

然后在你的 JavaScript 文件中通过 import 或 require 引入 Vue。

三、知识点总结

1、挂载

“挂载”在通俗的含义上就是把一个对象或组件固定到另一个地方。在Vue中,就是把Vue应用固定到一个指定的DOM元素上,使得Vue能够管理和更新这个元素的内容。简单来说,就是把Vue的功能“挂”到网页上的一个特定区域。
在Vue 3中,挂载指的是使用createApp函数创建Vue应用实例,并将它挂载到一个DOM元素上。这个过程通过调用app.mount(‘#app’)来完成,其中’#app’是要挂载的DOM元素的选择器。

<body>
    <div id="app">
        <!-- 挂载点: -->
        {{ message }}

    </div>
    <script>
        // new Vue ({
        //     el:"#box",//"#"id选择器
        //     data:{
        //         message:'hello vue'
        //     }
        // })//vue2

        const {createApp} = Vue
        createApp({
            data(){
                return{
                    message :'hello vue!'
                }
            }
        }).mount('#app')
    </script>
</body>

2、差值表达式

差值表达式是可以将Vue实例的数据动态地绑定到模板中。差值表达式主要使用双大括号({{ }})语法来插入和展示数据。

(1)基本语法

差值表达式的基本语法是双大括号:

{{ message }}
(2)数据绑定

差值表达式可以绑定Vue实例中的数据属性。任何在Vue实例的 data 中定义的数据属性都可以在模板中通过差值表达式访问和展示。如果 Vue 实例的 data 中有 message: ‘Hello, Vue!’,那么模板中的 {{ message }} 会被替换为 Hello, Vue!。

<body>
    <!-- <div id="app"> 是Vue应用的挂载点,所有的Vue数据绑定将在这个元素内进行。 -->
    <div id="app">
        <label>欢迎语:</label><label>{{message}}</label><br>
    </div>
    <script>
        const {createApp} = Vue//创建一个变量 名,gaga
        createApp({
            data() {
                return {
                    message:'hellovue'
                 }
            }
        }).mount('#app')
    </script>
</body>
(3)差值表达式的更多用法

在差值表达式中,还可以使用基本的 JavaScript 表达式,如算术运算、条件表达式等

<body>
    <!-- <div id="app"> 是Vue应用的挂载点,所有的Vue数据绑定将在这个元素内进行。 -->
    <div id="app">
        <label>欢迎语:</label><label>{{message}}</label><br>
        <label>姓名:</label><label>{{person.name}}</label><br>
        <label>年龄:</label><label>{{person.age}}</label><br>
        <label>性别:</label><label>{{person.gender == 0 ? '男':'女'}}</label><br>
        <label>{{number1}}/{{number2}}=</label><label>{{number1/number2}}</label><br>
        <label>欢迎语大写:</label>{{message.toUpperCase()}}<br>
        <label>欢迎语小写:</label>{{message.toLowerCase()}}
    </div>
    <script>
        const {createApp} = Vue//创建一个变量 名,gaga
        createApp({
            data() {
                return {
                    message:'helloword',
                    person:{
                        name:'张三,
                        age:22,
                        gender:1
                    },
                    number1:10,
                    number2: 5,
                }
            }
        }).mount('#app')
    </script>
</body>

3、强制绑定

Vue 的强制绑定通常是指通过 v-bind 指令将数据绑定到 HTML 元素的属性上。在 Vue 中,v-bind 用于将数据动态地绑定到元素的属性、组件的属性或指令上,从而实现数据驱动的视图更新。

(1)绑定属性
<input type="text" v-bind:value="username">
(2)脚本实现
<body>
    <div id="app">
        <h1>{{title}}</h1> 
        <!-- 绑定属性 -->
        <p>
            <label>用户名:</label><input type="text" v-bind:value="username">
        </p>
        <p>
                    <!-- 可以简写成冒号 -->
            <label>密码:</label><input type="text" :value="password">
        </p>
    </div>
    <script>
        const {createApp} = Vue
        createApp({
            data() {
                return {
                    title:'强制数据绑定',
                    username:'张三',
                    password:'abc123',
                }
            },
        }).mount('#app')
    </script>
</body>

4、绑定事件监听

通俗地讲,绑定事件监听就是在某个对象(比如一个按钮、输入框或其他任何DOM元素)上设置一个“监听器”,这个监听器会等待并“监听”特定的事件(比如点击、鼠标移入、键盘按键等)发生。一旦这个事件发生了,监听器就会立即执行与之关联的一段代码,这段代码就是我们为这个事件定义的处理函数或方法。
在Vue模板中,使用v-on指令(或其缩写@)将事件与处理函数绑定起来。这通常涉及到在目标元素上添加一个带有事件名和处理函数名的属性。
下面是一个简单的案例介绍,通过为"button" 按钮绑定鼠标点击事件,实现点击按钮更换用户名和密码

<body>
   <div id="app">
       <h1>{{title}}</h1> 
       <!-- 绑定属性 -->
       <p>
           <label>用户名:</label><input type="text" v-bind:value="username">
       </p>
       <p>
           <label>用户密码:</label><input type="text" :value="password">
       </p>
       <p>
           <button type="button" v-on:click="fillAdmin">使用ADMIN用户</button>
           <!-- 不传入参数的话,函数括号可以不写 -->
       </p>      
   </div>
   <script>
       const {createApp} = Vue
       createApp({
           data() {
               return {
                   title:'绑定事件监听',
                   username:'haha',
                   password:'abc123',
               }
           },
           methods: {//注意添加函数时,与data区用逗号隔开
               fillAdmin(){//用this可以调用当前数据区的数据
                   this.username='Admin'
                   this.password='abcd123'
               },
           }
       }).mount('#app')
   </script>
</body>

5、双向数据绑定

双向数据绑定:页面数据发生变化,脚本中的数据同时发生变化。脚本中的数据发生变化,同时页面中的数据也会发生变化,类似于数据联动,可以利于数据及时更新。
Vue.js 通过使用 v-model 指令来实现双向数据绑定。

<div id="app">
       <h1>双向数据绑定</h1>
       <p>
           用户姓名:<input type="text" v-model="user.username">
       </p>
       <p>
           用户密码:<input type="text" v-model="user.password">
       </p>
       <p>
           性别:<input type="radio" v-model="user.gender" value="man">男
           性别:<input type="radio" v-model="user.gender" value="woman">女
       <p>
           <button type="button" @click="show">显示绑定数据</button>
       </p>
   </div>
   <script>
       const {createApp} = Vue//获取vue全局对象,用于挂载到id值为app的元素上
       createApp({//大括号表示一个对象
           data(){
               return{
                   user:{
                       gender:'man',
                   }
               }
           },
           methods:{
               show(){
                   alert(JSON.stringify(this.user))
                   this.user.username = 'admin'
                   this.user.password = 'admin123'
                   this.user.gender = '女'
               //当手动将页面上的信息修改时,再次点击绑定数据按钮,将弹出更改过后的信息
               }
           }

       }).mount("#app")

   </script>

6、绑定元素的文本与HTMl

在Vue中,绑定元素的文本和HTML内容是通过不同的指令来实现的,它们分别是v-text和v-html。每种方式都有其特定的使用场景和注意事项。

<!--不识别a标签,以文本的方式展示在页面上 -->
<p v-text="link1"></p>  
<!-- 识别a标签,以超链接的方式显示 -->
<p v-html="link2"></p>

7、绑定class与style样式

在Vue中,绑定class和style样式是动态控制元素外观的常用方法。Vue提供了v-bind:class(或简写为:class)和v-bind:style(或简写为:style)指令来实现这一功能。

(1)绑定class
  • 对象语法:可以将一个对象传递给:class,以动态地切换多个class。这个对象的每个属性都对应一个class名,属性的值是一个布尔值,表示是否应该应用这个class。
<button type="button" :class="{btn1:btn1_choose,btn2:btn2_choose}">绑定对象样式</button>
  • 数组语法:可以将一个数组传递给:class,以应用一个class列表,注意当使用数组语法时,如果同一个属性在多个样式对象中被定义,则后面的样式对象中的值会覆盖前面的值。
<button type="button" :class="[className1,className2]">绑定数组样式</button>
  • 绑定数组样式中含逻辑运算
 <button type="button" :class="[btn1_choose?'btn1':'',btn2_choose?'btn2':'']">绑定数组样式中含逻辑运算</button>
(2)绑定style
     style绑定样式<br>
        <button type="button" :style="style1">按钮1</button>

脚本部分代码:

     const {createApp} = Vue
        createApp({
            data() {
                return {
                    className1:'btn1',
                    className2:'btn2',
                    btn1_choose:true,
                    btn2_choose:false,
                    style1:{width:'100px',height:'30px',color:'green'}
                }
            },
        }).mount("#app")

8、条件渲染

(1)v-if
  • v-if 指令用于根据表达式的真假值来条件性地渲染元素。如果表达式的值为真,则渲染该元素及其内容;如果为假,则不渲染该元素及其内容。
(2)v-else
  • v-else 指令必须紧跟在 v-if 之后,表示如果前面的条件都不满足时,则渲染该元素。
(3)v-show
  • v-show 指令在渲染元素时,若条件为真,元素则会被渲染到 DOM 中,只是当条件为假时,元素会被隐藏。
    示例代码如下:
<body>
    <div id="app">
        <p>
            <a href="#" v-if="user.username == 'admin'">编辑</a>
            <a href="#" v-else>详情</a>
        </p>
        <p>
            <a href="#" v-show="user.username == 'admin'">编辑</a>
            <!-- <a href="#" v-show="user.username != 'admin'">详情</a> -->
        </p>
        <p>
            <!-- 通过change函数控制username的值,用于条件渲染判断 -->
            <button type="button" @click="change">切换成Guest</button>
        </p>
    </div>
    <script>
        const {createApp} = Vue
        createApp({
            data() {
                return {
                    user: {
                        username:'admin'
                    }
                }
            },
            methods: {
                change(){
                    if(this.user.username === 'admin'){
                    this.user.username='guest',
                    event.target.innerText='切换成Admin'
                }else{
                    this.user.username='admin'
                    event.target.innerText='切换成Guest'
                }
                } 
            },
        }).mount("#app")
    </script>
</body

9、列表渲染

“v-for” 是 Vue.js 框架中的一个指令,用于基于一个数组或对象来渲染一个列表。它类似于传统编程语言中的 for 循环或 foreach 循环,但专为 Vue 的模板语法设计。

    <div id="app">
        <ul>
            <!-- u是某一个对象,index是下标 -->
            <li v-for="(u,index) in user">
                {{index}}-{{u.id}}-{{u.name}}-{{u.age}}
            </li>

        </ul>
    </div>
    <script>
        const {createApp} = Vue
        createApp({
            data() {
                return {
                    user:[
                        {id:1,name:'tom',age:18},
                        {id:2,name:'jack',age:18},
                        {id:3,name:'amy',age:20},
                        {id:4,name:'tiger',age:25},
                    ]
                }
            },
        }).mount("#app")
    </script>

标签:vue,createApp,app,绑定,学习,Vue,元素,data
From: https://blog.csdn.net/weixin_52424354/article/details/142061918

相关文章

  • SAP B1 学习笔记 - 易混淆字段名(持续更新中)
    背景在SAPB1的单据中,由于同一单据时常对应着多个后台表单,且后台表单内包含的字段信息往往远大于单据显示出来的,在配置时经常出现多个字段混淆、无系统信息提示字段名模糊的情况,这里总结常见的易混淆难查找的后台字段名。字段名查询方法1)系统信息显示 打开【查看】下的......
  • 机器学习项目(二)科比生涯数据集分析
    背景:尽管你可能没有关注过篮球赛事,但你一定听过科比·布莱恩特这个名字,这位与乔丹齐名的篮球巨星。科比在1996年的选秀大会上以第十三顺位的身份步入了职业联赛,此后他一直为洛杉矶湖人队效力,表现出了对球队的忠诚与热爱。他在2016年宣布退役,结束了辉煌的职业生涯。科比五次帮助湖......
  • 【卷起来】VUE3.0教程-06-组件详解
    ============各位看官,点波关注和赞吧===========组件允许我们将UI划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成层层嵌套的树状结构:这和我们嵌套HTML元素的方式类似,Vue实现了自己的组件模型,使我们可以在每个组件内封装......
  • asp.netcore8 + vue3 + mysql 自用记账项目(四)项目部署
    一、生成后台api服务 1、在系统生成的Dockerfile基础上,添加时区标识FROMmcr.microsoft.com/dotnet/aspnet:8.0ASbaseENVTZAsia/ShanghaiRUNln-snf/usr/share/zoneinfo/$TZ/etc/localtime&&echo$TZ>/etc/timezoneWORKDIR/appEXPOSE80EXPOSE443FROMmcr.......
  • asp.netcore8 + vue3 + mysql 自用记账项目(二)环境搭建
    一、vue1、node.js安装安装node.js的攻略网上有很多,这里就不多做赘述,安装完成后,验证是否正常然后就是配置淘宝镜像加速,配置环境变量等操作。2、vue安装上面安装完node.js之后,就可以安装vue环境了,网上同样很多,需要注意的是,vue安装完成了,最好将webpack模版、vue-cli、vue-rout......
  • asp.netcore8 + vue3 + mysql 自用记账项目(三)功能开发
    一、前端前端使用vue3+vant4组件实现页面功能。 1、创建vue3项目各个操作分别是:选择创建模式?手动创建选择项目模块?Babel,Kouter,Wuex,CSSPreprocessors选择vue版本?3.0是否使用历史路由模式?是样式的写法?Less项目配置放在哪?package.json文件里是否保存本次......
  • asp.netcore8 + vue3 + mysql 自用记账项目(一)背景简介
    一、背景18年的时候,用了一年多第三方免费的记账本不用了,两个方面原因,一是随着数据增多,APP用着越来越慢,二是相关数据被用于其他用途的风险很大且广告很烦。所以,后面通过MUI+asp.netcore+sqlserver实现记账web功能,在阿里云1核2G服务器的windows系统上发布了自用的服务,最......
  • rsync 学习笔记(一)编译
    一、背景 rsync二进制程序依赖外部库,由于安全问题,有时会单独升级依赖的外部库。另外为了防止因为栈溢出攻击导致服务器被黑,需要对rsync及其依赖的外部库重新编译,开启安全编译选项,增加黑客破解的复杂度。 所有的库编译必须要求加上如下编译选项:栈保护(-fstack-protector-al......
  • 大模型学习路线,现在转大模型还来得及吗?
    大模型学习路线,从基础入门到项目实战!第一阶段:AI大模型时代理解大模型大模型提示工程第二阶段:AI大模型API应用开发工程3.理解FunctionCalling4.RAG与Embedding5.向量数据库6.OpenAIGPTs与AssistantAPI7.实战项目二:基于大模型的文档智能助手8.实战项目三:基......
  • 学习HTML第三天
    一、表单标签(form)基本结构与元素form:属于块级元素,可独占一行显示,能直接设置宽度高度。input:属于行内块元素,可在同一行显示,能直接设置宽度高度。常见的input类型包括文本输入框(type="text")、密码输入框(type="password")、数字输入框(type="number")、日期选择框(type="d......