学习总结,

vue day2 学习总结

脚手架 -> 会用
npm install -g vue-cli :下载全局的脚手架(我们可以使用)
进入到你当前的项目:
vue init webpack : 初始化(项目中有很多文件)
npm run dev : 运行(可以访问)

一,部分指令

(1) v-model 双向绑定(只能绑定表单元素: , , )

​ 一定要注意: 多选绑定值 一定是一个数组

​ 概念: 改数据一改全改

checkbox: 选择框

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--映入vue js 文件 -->
    <script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
<!--  v-model:双向绑定  只能用于表单元素中
        <input>,<select>, <textarea>
      多选的时一定要用 在挂载的时候一定要要用数据
 -->
<!--创建容器  -->
<div  id="app">
    <!-- 用户名 -->
    <input type="text" v-model="username">{{username}}
    <!-- 爱好:多选 -->
    <input  type="checkbox" value="1" v-model="hobbys">吃饭
    <input  type="checkbox" value="2" v-model="hobbys"> 睡觉
    <input  type="checkbox" value="3" v-model="hobbys"> dadoudoua
    <br/>
    <!--使用  select标签完成双向  -->
    <select v-model="ctiy">
        <option value="1">中国 </option>
        <option value="2">老挝 </option>
        <option value="3">冥国 </option>
    </select>
<br/>
    <!--使用 <textarea> 标签-->
    <textarea v-model="intor">
    </textarea>
    <br/>
    {{intor}}
</div>
<!--完成 挂载  -->
<script>
    new Vue({
        el:"#app",
        data:{
            msg:"hahah ",
            username:"boss",
            hobbys:[],
            ctiy:3,
            intor:"随便写写啦!"
        }
    })
</script>
</body>
</html>
(2)v - show 显示 或 隐藏 相应的 元素
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--映入js文件  -->
    <script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
<!-- 创建容器 -->
<div id="app">
        <!--绑定一个点击事件  调用了下面 say 的方法-->
        <input  onclick="say()" type="button" value="sho-show">
            <!-- 图片路径   -->
        <img src="../imgs/18609517_112216473140_2.jpg" v-show="shows">
</div>
<!-- 挂载 与容器发生关系  -->
<script>
   var  v = new  Vue({
        el:"#app",
        data:{
            shows:false
        }
    })
   /* 定义方法*/
    function say() {
        v.shows= !v.shows
    }
</script>
</body>
</html>
(3) v-if (v-else-if,v-else) 判断
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
     // 引入vue 的js 文件 
    <script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
    // 创建容器
<div id="app">
    // 判断年龄 是否大于 或等于30 如果大于30  执行: 你到了中年这句话
<div v-if="age>=30">
    你到了中年了
</div>
//  在进行判断
    <div v-else-if="age<=30">
        年轻人
    </div>
</div>
<!-- 让他与容器发生关系  挂载  -->
<script >
    new Vue({
        el:"#app",
        data:{
            age:20
        }
    })
</script>
</body>
</html>
综合练习
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 引入js -->
    <script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
<!-- 创建容器  -->
<div id="app">
        <table>
            <thead>
                <tr>
                    <th>id</th>
                    <th>名称</th>
                    <th>部门</th>
                    <th>性别</th>
                    <th>状态</th>
                </tr>
            </thead>
            <tbody>
            <!--循环 employee 的出里面的值 -->
                <tr v-for="v in employee">
                <td> {{v.id}}</td>
                 <td>{{v.name}}</td>
                  <td> {{v.dept.name}} </td>
                   <td>{{v.sex?"男":女 }}</td>
                   <td>
                       <!-- 判断状态的每一个值 -->
                       <span v-if="v.status==1">天仙</span>
                       <span v-if="v.status==2">地仙</span>
                       <span v-if="v.status==3">妖怪</span>
                       <span v-if="v.status==4">狼妖</span>
                   </td>
                </tr>
            </tbody>
        </table>
</div>
<!--挂载 与容器发生关系 -->
<script>
    new Vue({
        el:"#app",
        data:{
            employee:[
                {id:1,name:"老赵",sex:true,status:1,dept:{id:1,name:"技术部"}},
                {id:1,name:"赵国",sex:true,status:2,dept:{id:1,name:"军部"}},
                {id:1,name:"燕国",sex:true,status:3,dept:{id:1,name:"武器部"}},
                {id:1,name:"大秦帝国",sex:true,status:4,dept:{id:1,name:"伙食部"}}
            ]
        }
    })
</script>
</body>
</html>
(4) on 绑定事件

​ 事件名称= “ 方法名 ” :事件的 绑定

 
    <!-- v-on(事件的简写)  @click= 方法名 -->
    <input type="button" @click="say()" value="kkkk">
  <!--绑定事件有 input框里的类容  需要有 type= button  v-on: 事件绑定   v-		on:click = say()   value:是点击框的名字 -->ss
    <input type="button" v-on:click="say()" value="点点" >
综合练习
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
<!--创建容器 -->
<div id="app">
    
    <!--绑定事件有 input框里的类容  需要有 type= button  v-on: 事件绑定   v-on:click = say()   value:是点击框的名字 -->
    <input type="button" v-on:click="say()" value="点点" >
    
    
    <!-- v-on(事件的简写)  @click= 方法名 -->
    <input type="button" @click="say()" value="kkkk">
    
   
    <!-- 给Holle 用简写的形式绑定事件 因为有参 所以在绑定事件的时候需要传递一个参数   -->
    <input  type="button" @click="holle('老李')" value="jjjj">
    <input  type="button" @click="age++" value="age">{{age}}
</div>
<!--与容器发生关系 挂载 -->
<script>
  var v= new Vue({
        el:"#app",
        data:{
            age:20
        },
        methods:{
            say(){
                alert(111)
            },
            holle(name){
                console.debug(name+",唉 》》》》》》")
            }
        }
    })
</script>
</body>
</html>

(5)computed && watch 两个小功能

​ computed :计算属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--引入js -->
    <script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
<!--创建容器 -->
<div id="app">
   {{computeds}}
</div>
// 挂载 
<script>
    /* 可以获得 bronDate的值 */
   //  console.debug(new Date().getTime())
    new Vue({
        el:"#app",
        data:{
            bronDate:1566607397809
        },
        computed:{
            computeds(){
                /* new传了一个时间  bronDate */
                let v = new Date(this.bronDate)
            //  得到 年 月 日   并进行拼借 
                return v.getFullYear()+"-"+(v.getMonth()+1)+"-"+v.getDay()
            }
        }
    })
</script>
</body>
</html>
watch 监控属性

​ 属性监听 watch -> 当某个属性发生变化,都会监听到 ( 新值,旧值 )

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
<!--定义容器 -->
<div id="app">
        <input  type="text" v-model="msg">{{msg}}
</div>
<!-- 与容器发生关系  挂载  -->
<script>
 var v= new Vue({
        el:"#app",
        data:{
            msg:"老李"
        },
     /* 每次  msg 属性修改 都会执行  watch 这个方法   起到了一个监控作用 */
        watch:{
            /*  newVal :修改的新数据
                 oldVal ; 修改的后的旧数据
               * */
            msg(newVal , oldVal){
                console.debug(newVal,oldVal)
             }
         }
    })
</script>
</body>
</html>
二 自定义组件
自定义 全局组件

​ 注意;template 在模板中 有一个要求。有且只有一个外部标签

	还有在使用驼峰命名的时候。驼峰命名 myTag -> my-tag  这才是正确的命名方试  在模板中如果要使用数据,组件的data是一个函数
   data(){
        return {};
   }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>

<div id="app">
<mybatis></mybatis>
</div>

<div id="add">
    <mybatis></mybatis>
</div>
// 与容器发生关系 完成挂载 
<script>
    /*  全局挂载 只要是挂载了都可以使用  */
    /* mybatis 自定义组件的名字  */
   Vue.component("mybatis",{
       /* 注: 一定要记住
        *       template: 模板中,有个要求,有且只有一个外部标签
        *       在使用驼峰命名的时候   myBatis(驼峰命名) 使用的时候得用-(my-batis)
         * */
            template:"<div><h1>好嗨哟</h1></div>"

   })
    new Vue({
        el:"#app"
    })
    new Vue({
        el:"#add"
    })
</script>
</body>
</html>

自定义局部组件 ;局部组件 ,

​ components; 组件

​ template: 模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    // 引入vue的js文件
    <script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
// 创建容器
<div id="add">
<mybatis></mybatis>
</div>
// 与容器发生关系   完成挂载
<script>
        new Vue({
            el:"#add",
            components:{
                mybatis:{
                    template:"<h1>飞云之下</h1>"
                }
            }
        })
</script>
</body>
</html>

其他

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 引入js 文件 -->
    <script src="../node_modules/vue/dist/vue.js"></script>
<body>
<!-- 创建容器 -->
<div id ="app">
<me></me>
</div>

<!-- 定义外部标签  -->
<template id="Temp">
        <form  method="post">
               {{name}} <input  type="text" />
                密码<input type="password"/>
            <input type="button"  @click="login()" value="e登录" >

        </form>
</template>


<script >
    /* 定义常量 引入外部标签  */
    const holee={
        template:"#Temp",
        /*  定义用户名 */
        data(){
          return{
              name:"boss"
          }
        },
        /*  methods单词是固定的 ,不能写错了   */
        methods:{
            login(){
                alert(11111)
            }
        }
    }


    Vue.component("me",holee)

    /* 挂载  */
    new Vue({
        el:"#app"
    })

</script>
</body>
</html>

三 路由

​ ( 1 ) 注: 路由是需要单独引入(vue 的插件 )

下载地址:https://router.vuejs.org/zh/guide/#html

路由;

​ 1:引入路由的 js 文件

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 引入vue的js 文件 -->
    <script src="../node_modules/vue/dist/vue.js"></script>
    <!-- 引入路由的js 文件  -->
    <script src="../node_modules/vue-router/dist/vue-router.js"></script>
</head>

2 ;定义( 路由 )组件

 		/* 自定义组件 */
        const music = { template: '<div>音乐好听</div>' };
       const singer={template:'<div><h1>音那好</h1></div>' }
        const friend={template:'<div><h1>和那好</h1></div>' }

3 :定义路由

       /*定义路由  写一个数组,定义多个路由 */
    let v=[
        { path:'/music',component:music}
    ]

4:创建路由的 (router) 实例,然后传 routes 配置

  /* 创建一个路由的是列  */
    const router=new VueRouter({
        routes:v
    })

综合起来

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 引入vue 的js -->
    <script src="../node_modules/vue/dist/vue.js"></script>
    <!--引入 路由的 js -->
    <script src="../node_modules/vue-router/dist/vue-router.js"></script>
</head>
<body>
<!-- 创建容器 -->
<div id="app">
    <p>
        <!-- 使用 router-link 组件来导航. -->
        <!-- 通过传入 `to`去找这个路径  -->
        <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
        <router-link to="/music">音乐</router-link>
     <!--   <router-link to="/singer">刚琴区</router-link>
        <router-link to="/friend">古典</router-link>-->
    </p>
    <!-- 路由出口 -->
    <!-- 路由匹配到的组件将渲染在这里 -->
    <router-view></router-view>

</div>

<!-- 挂载 -->
<script >
        /* 自定义组件 */
        const music = { template: '<div>音乐好听</div>' };
       const singer={template:'<div><h1>音那好</h1></div>' }
        const friend={template:'<div><h1>和那好</h1></div>' }

        /* 准备一个 数组,数组的第一个值对应 一个 路径与组件 */
    let v=[
        { path:'/music',component:music}

    ]
    /* 创建一个路由  */
    const router=new VueRouter({
        routes:v
    })
    new Vue({
        el:"#app",
     router

    })
</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值