Vue渐进式框架的使用

1.Vue入门:vue是一套构建用户界面的渐进式框架

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue入门</title>

    <!--1.引入js文件 后期是用脚手架搭建前端项目需使用webpack来构建-->
    <script src="js/vue.js">
        //vue是一套构建用户界面的渐进式框架
    </script>
</head>
<body>
<!--2.准备vue.js需要使用的容器-->
<div id="app">
    <!--插值语法,支持js格式-->
    {{name}}住在{{address}},今年{{age}}岁
</div>
</body>
<script>
    //3.创建vue实例来使用vue.js
    new Vue({
        //配置vue对象
        el:"#app",//是用vue的选择器容器
        data:{//data用于存储数据,是提供el容器使用的数据,暂时写一个对象
            name:"李思",
            address:"昆明",
            age:13
        }
    })
</script>
</html>

2.vue数据绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue数据绑定</title>
  <script src="js/vue.js"></script>
</head>
<body>
<!--vue数据绑定-->
<!--1.插值语法-->
<div id="app">
    {{name}} at {{address}}
<!--2.指令语法-->

<!--2.1单向数据绑定 v-xxx(指令):可用于表单元素或其他地方-->
<input type="text" v-bind:value="name">
<!--简写-->
<input type="text" :value="address"><br>

<!--2.2双向数据绑定 只有表单元素能用,用于收集数据-->
<input type="text" v-model:value="name">
<!--v-model简写-->
<input type="text" v-model="address"><br>

</div>
</body>
<script>
  new Vue({
    el:"#app",
    data:{
      name:"zs",
      address:"kunming"
    }
  })
</script>
</html>

3.vue的el与data的写法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>el与data的写法</title>
  <script src="js/vue.js"></script>
</head>
<body>
 <div id="app">
<input type="text" v-bind:value="name">
 </div>
</body>
<script>
  // 
  // const vn=new Vue({
  //   //el:"#app",
   //1.对象式
  //   data:{
  //     name:"as"
  //   }
  // });
  // vn.$mount("#app");//将id为app的容器挂载到vue对象上

  
  new Vue({
    el:"#app",
 //2.函数式
    data(){
      return{
        //加return才可使用
        name:"zss"
      }
    }
  })

</script>
</html>

4.事件与修饰符

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue事件</title>
    <script src="js/vue.js"></script>
</head>
<body>
<div id="app">
    {{name}}<br>
<!--  为元素绑定事件:v-on: 事件名,简写:@事件名 -->
    <button v-on:click="show()">按钮</button>
<!--    无参数时括号可以省略-->
    <button v-on:click="show">按钮</button>

<!--    简写-->
    <button @click="show">按钮</button><br>

<!--    事件的修饰符-->
<!--
prevent:当执行事件时阻止标签原来的默认行为
once:只能触发一次
stop:阻止事件冒泡
-->
    <a href="http://www.baidu.com" @click="show">连接</a>
    <a href="http://www.baidu.com" @click.prevent="show">连接</a>

    <button @click="show">once</button>
    <button @click.once="show">once</button>

    <div v-on:click="show" style="width: 100px;height:100px;background-color: lawngreen">
        <button @click="show">dianji</button>
    </div>
    <hr>
    <div v-on:click="show" style="width: 100px;height:100px;background-color: lawngreen">
        <button @click.stop="show">dianji</button>
    </div>
</div>
</body>
<script>
    new Vue({
        el:"#app",
        data(){
            return{
                name:"zs",
                age:20
            }
        },
        methods:{
            show(){
                alert(this.name)
            }
        }
    });
</script>
</html>

5.条件渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/vue.js"></script>
</head>
<body>
<div id="app">
    <button @click="num++">点击加1</button>
    {{num}}<br>
    <button @click="flag=false">点击</button>
    {{flag}}<br>

<!--  条件渲染:
v—if:满足条件显示内容,不满足条件的元素直接移除,所以运行效率低
-->
    <h1 v-if="num==1">iuio</h1>
    <h1 v-else-if="num==2">oihhy</h1>
    <h1 v-else-if="num==3">i956</h1>
    <h1 v-else>89io</h1>
    <hr>

<!--    v-show:控制内容的显示与隐藏,相当于改变display的属性值,适合频繁切换-->
    <h1 v-show="num==1">iuio</h1>
    <h1 v-show="num==2">oihhy</h1>
    <h1 v-show="num==3">i956</h1>
    <hr>

<!--    用template模板控制一段代码的显示与隐藏:不能使用v-show,
因为template渲染时不满足条件的时候是不会存在于页面中的,无法添加display属性来实现v-show
-->
    <template v-if="num == 6">
        <h2>afasd</h2>
        <h2>dff</h2>
    </template>
</div>
</body>
<script>
    new Vue({
        el:"#app",
        data(){
            return {
                name: "张三",
                num: 0,
                flag: true
            }
        }
    })
</script>
</html>

6.列表渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<!--列表的渲染指令v-for将对个数据显示到页面上
v-for:用于循环显示数据
将address的值和索引遍历放入add和i中,可用in或of
-->
<h2 v-for="add in address">地名{{add}}</h2>
  <br>
  <h2 v-for="(add,i) in address" :key="i">{{i+1}}地名{{add}}</h2>

    <table border="1">
        <thead>
        <td>id</td>
        <td>名字</td>
        <td>年龄</td>
        </thead>
        <tr v-for="(list,index) in persons" :key="index">
            <td>{{index+1}}</td>
            <td>{{list.name}}</td>
            <td>{{list.age}}</td>
        </tr>
    </table>
<!--    遍历对象属性,索引是属性名-->
    <ul>
        <li v-for="(car,i) of car">
            {{i}}--{{car}};
        </li>
    </ul>
    <hr>
    <!--遍历字符串-->
    <ul>
        <li v-for="(s,char) in str" :key="char">
            {{char}}-{{s}}
        </li>
    </ul>
    <hr>
    <!--遍历指定次数-->
    <ul>
        <li v-for="num in 100">
            <h2 v-if="num % 2 == 0">{{num}}</h2>
        </li>
    </ul>

</div>
</body>
    <script>
      new Vue({
        el:"#app",
        data(){
          return{
            //数组
            address:["昆明","大理","曲靖","香格里拉"],
            //对象数组:对应java中的对象
            persons:[
              {name:'张三',age:23},
              {name:'张露',age:19},
              {name:'李思',age:29},
          ],
              car:{
                name:"兰博基尼",
                  price:"700w",
                  color:"白色"
              },
              str:"idfhkhehhdj"
          }
        }
      })
    </script>
</html>

7.vue收集表单数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<!-- v-model收集数据需要注意的地方:
   v-model提供了三个修饰符:trim:去除收尾空格;
                           number:将字符串数字转为有效数字
                           lazy:懒加载,即等待失去光标后才将输入数据加载到对象,可以节约资源
   注意: 默认情况下 复选框收集的是boolean的值 选中 收集为true 没选中一般为false
    如果要收集选中提交的多个值 必须将对象的接受改为数组  并且value有值
   -->
    <form>
        姓名:<input type="text" v-model.trim.lazy="user.username"><br>
        密码:<input type="password" v-model.lazy="user.password"><br>
        年龄:<input type="number" v-model.number="user.age"><br>
        性别:<input type="radio" v-model:value="user.sex" value="男">男
              <input type="radio" v-model="user.sex" value="女">女
        <br>
        爱好:<input type="checkbox" value="篮球" v-model="user.hobby" >篮球
              <input type="checkbox" value="下棋" v-model="user.hobby" >下棋
              <input type="checkbox" value="看书" v-model="user.hobby" >看书
              <input type="checkbox" value="跑步"  v-model="user.hobby">跑步
        <br>
        毕业学校:
        <select  v-model="user.school" >
            <option value="">请选择学校</option>
            <option value="云大">云南大学</option>
            <option value="理工">昆明理工大学</option>
            <option value="医科大">云南医科大学</option>
            <option value="师范">云南师范大学</option>
        </select>
        <br>
        其他:<textarea v-model.lazy="user.others"></textarea><br>
        <button @click="send">提交</button>
    </form>
</div>
</body>
<script>
    new Vue({
        el:"#app",
        data(){
            return{
                user:{
                    username:"",
                    password:"",
                    age:null,
                    sex:'',
                    hobby:[],
                    school:'',
                    others:null
                }
            }
        },
        methods:{
            send(){
                // axios({
                //     method:"post",
                //     url:"#",
                //     data:this.user
                // })
            }
        }
    })
</script>
</html>

8.vue的生命周期

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script src="js/vue.js"></script>
</head>
<body>
<div id="app">

</div>
</body>
<script>
  /*Vue的生命周期: 又叫做生命周期函数  或生命周期回调函数 或生命周期钩子
   Vue在创建到销毁过程中经历的函数的调用
   八个阶段:
   beforeCreate 创建对象之前
   created 创建对象之后
   beforeMount 挂载数据之前
   mounted 挂载完成  (关注)
   beforeUpdate 修改数据之前
   updated 修改数据之后
   beforeDestory 销毁之前 (关注)
   destroyed 销毁
   都是函数
   总结:mounted 发送ajax请求
      beforeDestroy 清除定时器  解绑数据 等收尾工具
  * */
  new Vue({
    el:'#app',
    data(){
      return{

      }
    },
    beforeCreate(){
      console.log("创建之前");
    },
    created(){
      console.log("创建之后");
    },
    beforeMount(){
      console.log("挂载之前");
    },
    mounted(){
      console.log("挂载完成");
    },
    beforeUpdate(){
      console.log("修改之前");
    },
    updated(){
      console.log("更新完成");
    },
    beforeDestroy(){
      console.log("销毁之前");
    },
    destroyed(){
      console.log("销毁");
    }
  });
</script>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值