vue第一天 认识vue与vue基本使用

认识vuejs

vue是一个渐进式的框架,渐进式意味着你可以将vue作为你应用的一部分嵌入其中,带来更丰富的交互体验

vue有很多特点和web开发中常见的高级功能

解耦视图和数据
可复用的组件
前端路由技术
状态管理
虚拟DOM

vue.js安装

网址:cn.vuejs.org
下载并将其引入到编辑器中,使用时引入到页面中就行

vue基本使用

  1. 需要提供标签
  2. 引入vue.js库文件
  3. 可以使用vue的语法做功能了
  4. 把vue提供的数据填充到标签里面
    实例参数分析: el:元素的挂载位置(值可以是css选择器或者DOM元素)
    data:模型数据(值是一个对象)
    插值表达式用法:将数据填充到HTML标签中
    插值表达式支持基本的计算操作{{}}
    vue代码运行原理分析:概述编译过程的概念(vue语法->原生语法)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
     <!-- 插值表达式 -->
      {{message}}
    </div>
    <script src="./vue.js"></script>
    <script>
        // 创建vue实例
        const vm = new Vue({
            el:'#app',//用于挂载要管理的元素
            data:{// 定义数据
              message:'你好呀,李焕英'
            }
        })
    </script>
</body>
</html>

vue模板语法

  1. 如何理解前端渲染:把数据填充到HTML标签中
  2. 前端渲染方式:原生js拼接字符串:
    缺点: 不同开发人员的代码风格差别很大,随着业务的复杂,后期的维护变得逐渐困难起来
    使用前端模板引擎:
    优点:大家都遵循同样的规则写代码,代码可读性明显提高了,方便后期的维护
    缺点:没有专门提供事件机制
    模板语法:
  3. 指令: 1. 指令的本质就是自定义属性 指令格式:以v开始
    2. v-cloak指令用法:插值表达式存在的问题:‘闪动’,如何解决该问题:使用该指令,解决该问题的原理:先隐藏,替换好值之后在显示最终的值
    指令用法:提供样式:[v-cloak]{
    display:none;
    }在插值表达式中添加该指令 背后原理:先通过样式隐藏内容,然后在内存中进行样式的替换,替换好后在显示最终的结果
    v-text填充纯文本;直接添加到标签中
    v-html填充html片段:本网站内部数据可以使用,来自第三方的数据不可用 缺点:存在隐患,易受到xss攻击
    v-pre填充原始信息:显示原始信息,跳过编译过程(分析编译过程)
    v-bind:动态绑定属性 缩写: :bind
  4. 数据响应式:
    如何理解响应式:html5中的响应式(屏幕尺寸的变化导致样式的变化)
    数据的响应式(数据的变化导致页面内容的变化)
    什么是数据绑定:数据绑定:将数据填充到标签中
    v-once只编译一次:显示内容之后不再具有响应式功能

案例:简单计算器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        input{
            outline: none;
        }
    </style>
</head>
<body>
   <div id="app">
    <div class="jsa"> <label for="">数值A</label><input type="text" v-model='b'></div>
    <div class="jsb"><label for="">数值B</label> <input type="text" v-model='a'></div>
     <button v-on:click='handel' >计算</button>
     <div>计算结果: <span v-text='result'> </span></div>
   </div>
</body>
<script src="./vue.js"></script>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            a:'',
            b:'',
            result:''
        },
        methods:{
              handel:function(){
                  this.result = parseInt(this.a) + parseInt(this.b);
              }
        }

    });
</script>
</html>

样式绑定

v-bind:class="{active:isactive}" {类名: 布尔值}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    .active{
        color: red;
    }
    .error{
        font-size: 20px;
    }
</style>
<body>
    <div id="app">
      <div v-bind:class="{active:isactive,error:iserror}">
          {{message}}
      </div>
       <script src="./vue.js"></script>
       <script>
           const vm = new Vue({
               el:'#app',
               data:{
                 message:'你好呀',
                 isactive:true,
                 iserror:true
               }
           })
       </script>
</body>
</html>

v-bind:class="[activeClass,errorClass]"

<style>
    .active{
        color: red;
    }
    .error{
        font-size: 100px;
    }
</style>
<body>
    <div id="app">
      <div v-bind:class="[activeClass,errorClass]">
          {{message1}}
      </div>
       <script src="./vue.js"></script>
       <script>
           const vm = new Vue({
               el:'#app',
               data:{
                 message1:'长夜将至',
                 activeClass:'active',
                 errorClass:'error'
               }
           })
       </script>
</body>

v-bind:style="{css属性名:value}"

 <div id="app">
      <div v-bind:style="{color:'red',fontsize:'10px'}">
          {{message}}
      </div>
      <div v-bind:style="[basestyle,errorstyle]">
          {{message1}}
      </div>
       </div>
       <script src="./vue.js"></script>
       <script>
           const vm = new Vue({
               el:'#app',
               data:{
                 message:'你好呀',
                 message1:'长夜将至',
                 basestyle:{
                     color:'red',
                 },
                 errorstyle:{
                     fontSize:'100px'
                 }
               }
           })
       </script>

样式绑定相关语法细节:

  1. 对象绑定和数组绑定可以结合使用
  2. class绑定的值可以简化操作
  3. 默认的class如何处理 默认的不会被覆盖 会被保留

计算属性

 <div id="app">
        <h2> {{fullname}}</h2>
       </div>
       <script src="./vue.js"></script>
       <script>
           const vm = new Vue({
               el:'#app',
               data:{
                  firstname:'Tom',
                  lastname:'Jerry'
               },
               // 计算属性
               computed:{
                   fullname:function(){
                return this.firstname + ' ' + this.lastname;
                   }
               }
           })
       </script>

计算属性与方法的区别

计算属性是基于他们的依赖进行缓存的
方法不存在缓存
如果多次使用时,建议采用计算属性

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值