vue01

一.ECMAScript的认识

1.1什么是ECMAScript

ECMAScript:简单的说它就是javaScript语言的规范

1.2ECMAScript6

1.2.1ES6语法声明变量

  • var:声明全局变量
  • let:声明块级变量(相当于局部变量)
  • const:声明常量(不能被修改)

使用var声明时,其他地方能取到值

for (var i=1;i<=10;i++){
    console.debug(i)
}
    console.debug("var变量:"+i)

使用let声明时,当前代码块外边取不到值
在这里插入图片描述

for (let j=1;j<=10;j++){
     console.debug(j)
}
     //undefined
     console.debug("let变量:"+j)

使用const声明时,不能修改它的值
在这里插入图片描述

const a = 10;
a = 5;
console.debug(a)

1.2.2ES6语法 解构表达式

  • 解构数组
let arr = ["七","秀","坊"]
        //ES6取法  解构数组
        let [a,b,c] = arr
        console.debug(a,b,c)
  • 解构对象
var p = {
            name:"万花谷",
            age:"50"
        }
        //ES6 解构对象
        function JWS(name, age) {
            console.debug(name,age)
        }
        //调用函数传参
        JWS(p);

        //ES6  解构对象用{}
        var {name,age} = p;
        console.debug(name,age)

1.2.3ES6语法 箭头函数

  • 箭头函数this是属于当前创建环境this是一致的
  • 如果箭头函数外面还有函数,那箭头函数的this是和外层函数this一致,如果外层没有函数,该this就是window
<script type="text/javascript">
        var Person = {
            name:"蓬莱",
            age:"20",
            fly:function (f) {
                //原始写法
                console.debug(this.name,this.age,f)
            },
            address:(f)=>{
                /*
                * 新的写法1  箭头函数this是属于当前创建环境this是一致的
                * 如果箭头函数外面还有函数,那箭头函数的this是和外层函数this一致,如果外层没有函数,该this就是window
                * */
                console.debug(f)
            },
            run(f){
                //新写法2
                console.debug(this.name,this.age,f)
            }
        }
        Person.fly("I can fly");
        Person.address("蓬莱仙岛");
        Person.run("我要去七秀")
    </script>

二. Vue

2.1Vue是什么?

是一套用于构建用户界面的渐进式框架。
所谓的渐进式是指vue可以允许用户使用其中的一小部分,也可以一步一步的深入使用。
说的天花烂坠也没什么用,简单的说,就是可以学多少,用多少。

MVVM模式:
Vue是一款MVVM模型的双向绑定前端框架。

  • M:Model 模型(准备数据的)
  • V:View 渲染视图
  • VM:ViewModel 视图模型
    在这里插入图片描述
    DOM Listeners:dom监听器,主要用来监听页面的改变,页面一改变,数据就改变
    Data Bindings:监听数据的,只要数据改变,页面就会改变

2.2 vue的安装

有两种方案:
1.原生导入:下载vue核心js文件,在本地引入
2.npm安装vue
我们用npm安装,首先得安装npm,我们只需要装nodejs就行了,因为它自带npm工具
3.装好nodejs后,在idea中支持nodejs,需要安装插件
在这里插入图片描述安装完成后,重启一下就好了
4.在控制中输入命令:

  1. 初始化:npm init -y
    2)安装模块:npm install vue
    完成后就可以了

三.vue的使用

3.1使用vue的步骤

  • 导入js库
  • 准备数据
  • 准备视图
  • 渲染视图

3.2 helloVue.html

el:

  • 挂载指定的dom节点
  • 支持挂载的选择器:id选择器,类选择器,标签选择器
  • 使用id选择器,其他选择器有缺陷

data:

  • Vue实例的数据保存在配置属性data中, data自身也是一个对象.
  • 通过Vue实例直接访问和修改data对象中的数据,及时同步的页面上

methods:

  • Vue实例的方法保存在配置属性methods中,methods自身也是一个对象. 该对象中值都是方法体
  • 方法都是被Vue对象调用,所以方法中的this代表Vue对象
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
    <div id="d1">
        {{msg}} <br>
        {{name}}<br>
        {{person}}<br>
        {{fly()}}
    </div>
</body>
<script type="text/javascript">
    var vue = new Vue({
        el:"#d1",
        data:{
            msg:"Welcome",
            name:"七秀",
            person:{
                name:"蔷薇",
                age:20
            }
        },
        methods:{
            fly(){
                console.debug("I can fly")
            }
        }
    })
    vue.msg = "哈哈";
</script>
</html>

3.3VueJs表达式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
    <div id="d1">
        {{a}}+{{b}} = {{a+b}} <br>
        {{a}}-{{b}} = {{a-b}} <br>
        {{a}}*{{b}} = {{a*b}} <br>
        {{a}}/{{b}} = {{a/b}} <br>
        {{a}}%{{b}} = {{a%b}} <br>
        {{sex?"男":"女"}}
        <!--false的值: null NaN 0 undefined false ""
        -->
    </div>

</body>
<script type="text/javascript">
    var vue = new Vue({
        el: "#d1",
        data:{
            a:5,
            b:6,
            sex:1
        }
    })

</script>
</html>

3.4Vue指令

3.4.1什么是指令

指令是一个带有v-前缀的特殊标签属性, 指令属性的值预期是单个JavaScript表达式
作用:当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

3.4.2 v-text和v-html

  • v-text:当做纯文本处理
  • v-html:如果有html代码,会进行解析
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
    <div id="d1">
        <div v-text="strText">
            {{strText}}
        </div>

        <div v-html="strHtml">
            {{strHtml}}
        </div>
    <!--
        v-text:当做纯文本处理
        v-html:如果有html代码,会进行解析
    -->
    </div>

</body>
<script type="text/javascript">
    var vue = new Vue({
        el: "#d1",
        data:{
            strText:"<h1>万花</h1>",
            strHtml:"<h1 style='color: orangered'>万花</h1>"
        }
    })

</script>
</html>

3.4.3 v-for

  • <标签 v-for=“元素 in 数据源”></标签>
  • <标签 v-for="(元素,索引|键) in 数据源"></标签>
  • <标签 v-for="(元素,键,索引) in 对象"></标签>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
    <div id="d1">
        <!--
            迭代 v值,i索引
        -->
        <ul>
            <li style="color: crimson" v-for="(v,i) in num">{{v}}--索引:{{i}}</li>
        </ul>

        <ul>
            <li style="color: deeppink" v-for="(v,i) in str">{{v}}--索引:{{i}}</li>
        </ul>

        <select>
            <option style="color: limegreen" v-for="(v,i) in address">{{v}}--索引:{{i}}</option>
        </select>

        <!-- k:key -->
        <ul>
            <li style="color: deepskyblue" v-for="(v,k,i) in person">{{v}}--{{k}}--索引:{{i}}</li>
        </ul>

    </div>

</body>
<script type="text/javascript">
    var vue = new Vue({
        el: "#d1",
        data:{
            num:10,
            str:"qixiufang",
            address:["七秀","万花","蓬莱","五毒"],
            person:{
                name:"叶良辰",
                age:"20"
            }
        }
    })

</script>
</html>

3.4.4 v-bind

将data中的数据绑定到标签上,作为标签的属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
    <div id="d1">
        <img v-bind:src="src" v-bind:width="width" v-bind:height="height">
        <hr>
        <!-- 简写 -->
        <img :src="src" :width="width" :height="height">
        <hr>
        <!-- 简写2 直接绑定 -->
        <img v-bind="options">
    </div>
</body>
<script type="text/javascript">
    var vue = new Vue({
        el: "#d1",
        data: {
            src: "images/img1.jpg",
            width:200,
            height:330,
            options:{
                src: "images/img2.jpg",
                width:300,
                height:300
            }
        }
    })

</script>
</html>

3.4.5 v-model

  • <标签 v-model=“表达式”></标签>
  • 在表单控件上创建双向绑定
  • 表单的值被修改时, 基于dom监听机制, 就会自动修改data中的数据中
  • 当data中的数据被修改时,基于数据绑定机制, 自动会把新的内容自动更新到value属性上.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue</title>
    <script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>

</head>
<body>
    <div id="hello">
        {{hello}},
        <font color="#dc143c"> {{v()}}</font>
        <br><br><br>
        <input type="text" v-model="msg">
        <br>
        <h1 style="color: orangered">{{msg}}</h1>
        <br>
        <input type="checkbox" v-model="hob" value="game">玩游戏
        <input type="checkbox" v-model="hob" value="kds">看电视
        <input type="checkbox" v-model="hob" value="qdm">敲代码
        {{hob}}
        <br><br>
        <input type="radio" v-model="sex" value="1"><input type="radio" v-model="sex" value="0">{{sex}}
        <br><br>
        <select v-model="address">
            <option value="0">--请选择--</option>
            <option value="1">七秀</option>
            <option value="2">万花</option>
            <option value="3">五毒</option>
            <option value="4">蓬莱</option>
        </select>
        {{address}}
        <br><br>
        <textarea v-model="intro" rows="5" cols="25"></textarea>
        {{intro}}
    </div>
</body>
<script type="text/javascript">
    new Vue({
        el:"#hello",
        data:{
            hello:"你好啊",
            msg: "",
            v(){
                return "万花";
            },
            hob:["game,kds"],
            sex:1,
            address:0,
            intro:"寻找"
        }
    })
</script>
</html>

3.4.6 v-if

根据表达式的值的真假条件渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue</title>
    <script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>

</head>
<body>
    <div id="hello">
        <div v-if="age>=60&&age<100">{{age}}岁了<br>人老了</div>
        <div v-else-if="age>=30&&age<60">{{age}}岁了<br>人到中年不得已,保温杯里泡枸杞</div>
        <div v-else-if="age>=18&&age<30">{{age}}<br>小伙子你还年轻</div>
        <div v-else-if="age>0&&age<18">{{age}}<br>小屁孩儿</div>
        <div v-else>你是魔鬼吗</div>
        <br>
        <input v-model="age">
    </div>
</body>
<script type="text/javascript">
    new Vue({
        el:"#hello",
        data:{
            age:22
        }
    })
</script>
</html>

3.4.7 v-on

注册事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue</title>
    <script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>

</head>
<body>
    <div id="hello">
        {{num}} <br>
        <input type="button" v-on:click="num++" value="自增">
        <br><br>
        <input type="button" @click="show('点我干嘛')" value="点我">
        <br><br>
        {{str}}  <br><br>
        <input type="button" @mouseover="over" @mouseout="out" value="鼠标放上来">
    </div>
</body>
<script type="text/javascript">
    new Vue({
        el:"#hello",
        data:{
            num:0,
            str:"移出"
        },
        methods:{
            show(msg){
                alert(msg)
            },
            over(){
                this.str = "移入..."
            },
            out(){
                this.str = "移出..."
            }
        }
    })
</script>
</html>

3.4.8 v-show

  • 根据表达式之真假值,切换元素的 display CSS 属性。当条件变化时该指令触发过渡效果。
  • 当v-show的值为假时, 会在标签的css中添加 display: none
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue</title>
    <script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>

</head>
<body>
    <div id="hello">
        <div v-show="isShow">点我会消失噢</div>
        <br>
        <input type="button" @click="show" value="点击显示或隐藏">
    </div>
</body>
<script type="text/javascript">
    new Vue({
        el:"#hello",
        data:{
            isShow:true
        },
        methods:{
            show(msg){
                this.isShow = !this.isShow
            }
        }
    })
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值