首页 > 其他分享 >【Vue】vue基础学习笔记

【Vue】vue基础学习笔记

时间:2022-09-23 16:34:25浏览次数:51  
标签:el Vue data 绑定 vm 笔记 vue 写法

目录

基础

差值语法

  <div id="root">
        <h1>插值语法@萌狼蓝天 {{Date.now()}}</h1>
        <h1>Meng Lang Lan Tian,Can you change it? >> {{number}}</h1>
        <h2>{{message.toUpperCase()}}</h2>
        <p>
            1.创建Vue实例,传入配置对象
            <br/>
            2.容器中的Vue代码称为【Vue模板】
            <br/>
            3.容器中的代码依旧符合hmtl规范
            <hr>
            <div style="width: 100%;color:white;background-color: rgb(255, 193, 193);padding:2px 0 2px 2em;">
                注意区分表达式和代码
                </div>
        </p>
    </div>
    <script>
        Vue.config.productionTip=false//隐藏控制台提示
        const vm = new Vue({
            el:'#root',//绑定元素 el:element 元素 | 用于指定当前Vue实例为哪个容器服务,值通常为css选择器字符。
            data:{
               number:'0',
               message:"do you know i'am big or small ?"
            }

        })//创建Vue实例
    </script>

模板语法

  <div id="app">
        <!-- 插值语法 -->
        <h1>Easy?{{is}}</h1>
        <!-- 指令语法 | 功能:解析标签(标签属性、标签体内容、绑定事件……) -->
        <a v-bind:href="url" target="_blank">点我跳转到博客</a>
        <br>
        <a :href="url" target="_blank">点我跳转到博客</a>
        <hr>
        <h1>Easy?{{school.is}}</h1>
        <a :href="school.url" target="_blank">点我跳转到博客</a>
    </div>
    <script>
        new Vue({
            el:"#app",
            data:{
                is:"Right",
                url:"https://cnblogs.com/mllt",
                school:{
                    is:"Wrong",
                    url:"https://mllt.cc"
                }
            }
        })
    </script>

数据绑定

<div id="app">
        单向数据绑定(v-bind):<input type="text" v-bind:value="name"><br/>
        双向数据绑定(v-moudle):<input type="text" v-moudel:value="blog"><br/>
        双向数据绑定(v-moudle):<input type="text" v-moudel:value="blog">
        <!-- v-moudel只能用于表单类元素 -->
    </div>
    <script>
        Vue.config.productionTip = false
        new Vue({
            el:"#app",
            data:{
                name:"萌狼蓝天",
                blog:"htts://cnblog.com/mllt",
            }

        })
    </script>

el与data的两种写法

el与data写法1

Vue.config.productionTip=false//隐藏控制台提示
        const vm = new Vue({
            el:'#root',//绑定元素 el:element 元素(唯一根元素) | 用于指定当前Vue实例为哪个容器服务,值通常为css选择器字符。
            data:{
               number:'0',
               message:"do you know i'am big or small ?"
            }
        })//创建Vue实例

el写法2:挂载

        Vue.config.productionTip=false//隐藏控制台提示
        const vm = new Vue({
            data:{
               number:'0',
               message:"do you know i'am big or small ?"
            }
        })//创建Vue实例
        console.log(vm)

        //第二种写法
        vm.$mount('#root')
        //mount:挂载
  
        //setTimeout(()=>{
        //    vm.$mount('#root')
        //},3000) //3秒延迟

data写法2:函数式写法

  Vue.config.productionTip=false//隐藏控制台提示
        const vm = new Vue({
        //函数式写法
        data:function(){
            //必须要有return
            return{
               number:'0',
               message:"do you know i'am big or small ?"
            }
        }
        })//创建Vue实例
        console.log(vm)
        vm.$mount('#root')

下面是简写

        Vue.config.productionTip=false//隐藏控制台提示
        const vm = new Vue({
        //函数式写法 组件必须用函数式
        // data:function(){
        //     console.log('@@@',this)//this:Vue的实例对象
        //     //必须要有return
        //     return{
        //        number:'0',
        //        message:"do you know i'am big or small ?"
        //     }
        // }
  
        //函数式写法 简写 
        data(){
            console.log('@@@',this)//this:Vue的实例对象
            //必须要有return
            return{
               number:'0',
               message:"do you know i'am big or small ?"
            }
        }
        //原则:由Vue管理的函数 禁止使用“=>”函数写法
        })//创建Vue实例
        console.log(vm)
        vm.$mount('#root')

绑定样式

  1. class样式

    写法:class="xxx" xxx可以是字符串、对象、数组。
    字符串写法适用于:类名不确定,要动态获取。
    对象写法适用于:要绑定多个样式,个数不确定,名字也不确定。
    数组写法适用于:要绑定多个样式,个数确定,名字也确定,但不确定用不用。

  2. style样式

    :style="{fontSize: xxx}" 其中xxx是动态值。
    :style="[a,b]"其中a、b是样式对象。

绑定class样式

 .basic{
            border: 1px solid red;
        }
        .round{
            border-radius:5px;
        }
        .text-center{
            text-align: center;
        }
        .text-indent{
            text-indent: 2em;
        }
 <div id="root" >
        <!-- 绑定class样式, 字符串写法 适用于 样式的类名不确定,需要动态指定 -->
      <div class="basic" :class="newClass">
        Just play
      </div>
      <button @click='changeMood'>change</button>
      <button @click='changeMood2'>change2</button>
      <br>
      <hr>
      <br>
      <!-- 绑定class样式,数组写法,适用于 要绑定的样式个数不确定,名字也不确定 -->
      <div class="basic" :class="classArr">
        Just play
      </div>
      <br>
      <hr>
      <br>
      <!-- 绑定class样式,对象写法,适用于 要绑定的样式个数确定,名字也确定,但是要动态决定是否使用这些样式 -->
      <div class="basic" :class="classObj">
        Just play
      </div>
    </div>
 Vue.config.productionTip=false//隐藏控制台提示
        const vm = new Vue({
            el:'#root',
            data(){
             return{
                 newClass:'round',
                 classArr:['round','text-center','text-indent'],
                 classObj:{
                    round:true
                 }
             }
            },
            methods:{
                changeMood(){
                    this.newClass='text-center round'
                },
                changeMood2(){
                    const arr = ['round','text-indent','text-center']
                    const index = Math.floor(Math.random()*3)
                    this.newClass=arr[index]
                },

            }
        })  
        vm.$mount('#root')

绑定style样式

 .basic{
            border: 1px solid red;
        }
<div id="root" >
      <div class="basic" :style="{fontSize:fsize+'px'}">
        Just play
      </div>
      <br><br>
      <!-- 绑定style样式,对象写法 -->
      <div class="basic" :style="styleObj">
        Just play
      </div>
      <br>
      <br>
      <div class="basic" :style="[styleObj1,styleObj2]">
        Just play
      </div>
      <br>
      <br>
       <!-- 绑定style样式,数组写法 -->
      <div class="basic" :style="styleArr">
        Just play
      </div>
    </div>
 Vue.config.productionTip=false//隐藏控制台提示
        const vm = new Vue({
            el:'#root',
            data(){
             return{
                fsize:40,
                styleObj:{
                    fontSize:'40px',
                },
                styleObj1:{
                    color:'green',
                    fontSize:'20px',
                },
                styleObj2:{
                    background:'yellow',
                },
                styleArr:[
                    {
                        color:'green',
                        fontSize:'20px',
                    },
                    {
                        background:'yellow',
                    }
                ]
             }
            },
            methods:{

            }
        })  
        vm.$mount('#root')

条件渲染

  1. v-if

    • 写法:
      (1).v-if="表达式”
      (2).v-else-if="表达式"
      (3).v-else="表达式”
    • 适用于:切换频率较低的场景。
    • 特点:不展示的DOM元素直接被移除。
    • 注意: v-if可以和:v-else-ifv-else一起使用, 但要求结构不能被“打断”。
  2. v-show

    • 写法: v-show=" 表达式"
    • 适用于:切换频率较高的场景。
    • 特点:不展示的DOM元素未被移除,仅仅是使用样式隐藏掉
  3. 备注

    使用v-if的时,元素可能无法获取到,而使用v-show 定可以获取到。

<div id="root">
        <!-- 使用v-show做条件渲染 -->
      <h2 v-show="wa">Oh Just Play1</h2>
      <h2 v-show="1===1">Oh Just Play2</h2>
      <!-- 使用v-if做条件渲染 -->
      <h2 v-if="wa">Oh Just Play4</h2>
      <h2 v-if="1===1">Oh Just Play3</h2>

      <hr>
      <h2>当前值为:{{n}}</h2>
      <button @click="n++">n++</button>
      <div v-show="n===1">v-Show 1</div>
      <div v-if="n===2">v-if 2</div>
      <div v-else-if="n===1">v-else-if 1</div>
      <div v-else>v-else</div>
      <!-- v-if 和 v-else 和 v-else-if 在使用时,要紧紧连在一起,不允许被打断,不然不形成整体 -->
      <hr>
      <!-- template只能和v-if使用,不能和v-show使用 -->
      <template v-if="n===2">
          <h2>路人甲</h2>
          <h2>路人2</h2>
          <h2>路人3</h2>
      </template>
    </div>
Vue.config.productionTip=false//隐藏控制台提示
        const vm = new Vue({
            el:'#root',
            data(){
             return{
                 wa:false,
                 n:0,
             }
            }
        })  
        vm.$mount('#root')

标签:el,Vue,data,绑定,vm,笔记,vue,写法
From: https://www.cnblogs.com/mllt/p/vue-base-learning.html

相关文章

  • 【vue3】reactive不能直接赋值的解决方法
    在vue3里,ref和reacitve都可以定义响应式数据,但是两者有所不同。在使用reactive定义复杂结构的响应式数据时,如果你要对其赋值,会丢失其响应性。然后赋值是我们经常进行的操作......
  • Vue中使用benz-amr-recorder插件实现播放amr音频文件以及在线url跨域问题解决
    场景需要做一个Android端和Web端的聊天室,Android端的录音音频文件为.amr格式,除了通过后台server端转码之后,是否可以通过插件在前端直接播放amr的音频文件。benz-amr-rec......
  • vue3配置全局过滤器
    vue3配置全局过滤器需要在main.js中配置一下代码//vue3配置全局过滤器app.config.globalProperties.$filters={//formatTime过滤器的名称formatTime(value:s......
  • Vuex新一代状态管理 — Pinia
    最近在学习pinia,做了一些笔记,在这里分享一下:https://note.youdao.com/ynoteshare/index.html?id=3bedfc4d66825be097cee904fe311f56&type=note&_time=1663899586848......
  • bug笔记_oracle_无法在源表中获得一组稳定的行
    ORA-30926:无法在源表中获得一组稳定的行原因:MergeInto语句using表的关联字段对应多个条数据,导致修改语句无法确定以哪条数据为准(关联字段重复)--修改a的column1字段为......
  • Vue中的事件修饰符
    Vue中的事件修饰符:1、prevent:阻止默认事件(常用)2、stop:阻止事件冒泡(常用)3、once:事件只触发一次(常用);4、capture:使用事件的捕获模式;5、self:只有event.target是当前操作的......
  • vue收集表单数据给后端交互
    vue项目中需要收集表单数据给后端发送请求进行交互:查看代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compa......
  • vue3源码学习12-编译three-生成代码
    之前两节看了模板生成AST和AST内部转化,这一节看最后的生成代码,编译配置是mode为module,prefixIdentifiers开启,hoistStatic开启,其他配置均不开启,先看示例:源代码:<divclass=......
  • vue+echart+自定义指令:自适应图表
    vue+echart+自定义指令:自适应图表,图表根据宽高拉伸变化而重置变化。之前有用到过其它方式实现,现在只用指令来实现:<template><divclass="box"><divref="zhex"v-res......
  • 第八章读数笔记
    第八章读书笔记8.1系统调用在操作系统中,进程以两种不同的模式运行,即内核模式和用户模式,简称Kmode和Umode。在Umode中,进程的权限非常有限。它不能执行任何需要特殊权限的......