vue入门

node环境需要在设置里搜索npm配置

数组的方法

1. filter不改变原数组,返回值是过滤后的新数组,其中回调函数的返回结果为true将当前项放入要返回的新数组,false不管
    var newary=[1,2,3,4,5].filter(function (item) {
    return 2<item<5;
    //这样写不对,先运算左边2<item不管是否成立返回值就是true,false。
    // 转成数字就是0,1都比5小,所以filter返回值一直就是true,将每一项都放到了返回的数组里,无法过滤
    });
    
    应用场景:想要根据传递进来的索引找到数组里的该索引对应的项,将其删除
    
2. map不改变原数组,返回值是映射成的新数组,其中回调函数返回什么当前项映射成什么
    将数组[1,2,3]映射成<li>1</li><li>2</li><li>3</li>
    var newary=[1,2,3].map(function (item) {
        return `<li>${item}</li>`
    });

3. includes数组中是否包含某个值,返回值true/false               var result=[1,2,3].includes(3);

4. find在数组中寻找某一项,其中回调函数为true表示找到并将找到的项返回,回调函数为false未找到继续找,找到最后也没找到返回undefined 
    var result=[1,2,3].find(function (item) {
        return item===1
    });
    
5. some查找每一项,回调函数为真停止查找,返回值为真。为假继续查找,找不到返回值为false
6. every与some相反,找不同。查找每一项,回调函数为假“停止”查找,返回值为假。为真继续查找,都是真返回值为true
    我们要的就是他返回false值
    使用场景,比如全选按钮。要通过计算属性计算数据里面的每一项是不是其中某项是false。用every返回每一项,如果其中一项返回false,则返回值就是false,不全选
7. reduce
//reduce的回调函数共有四个参数,返回的是叠加后的结果。原数组不变(新方法的原数组都不变)
    //prev数组第一项,next数组第二项
    //prev回掉函数的返回值会作为下一次的prev,next数组下一项
    //index后一项的当前索引
    //item原数组
var result=[[1,2,3],[4],[4,5]].reduce(function (prev, next,index,item,) {
    return prev.concat(next)
});
console.log(result)//多维数组合并成一维数组

- 安装vue

在一个文件夹中
npm init -y     //初始化一个包
npm install vue  //安装vue,安好后会在当前文件夹下多出一个node_modules文件夹,该文件夹存放着我们需要的vue和所有依赖的包

- 在当前文件夹下创建HTML文件,引入vue.js就可以写vue了

  view-viewmodel-model(MV VM)  我们创建的实例就是viewmodel,所有挂载在实例上的数据都能实现双向绑定

//最简单的hello world

<div id="app"> <!-- 通过小胡子语法可以直接将实例代理的数据放在页面上--> {{msg}} </div> <script src="./node_modules/vue/dist/vue.js"></script> <script> //引入vue文件后会白给你一个vue类,通过new可以创建该类的实例 let vm=new Vue({ el:"#app", //那个部分归该实例管理 data(){ //对象中函数可以简写 //data中的数据会被vue实例代理,即实例.msg能取到"hello world" return { msg:"hello world" } } }) </script>

- v-for要循环谁就在谁身上增加该指令

- methods,data,props中的数据会放在实例上如果重名会报错

  - methods方法中的this都是实例(vm)。如果是箭头函数的话this的指向会变成window这不是我们想要的

<script>
    new Vue({
        el:"#app",
        data:{a:1},                 //data中的的数据都挂载到实例上。所以在任何地方都可以通过vm.xxx获取xxx数据
        methods:{
            fn:()=>{
                console.log(this.a);//this指向变成window取不到挂载到实例上的数据a。所以methods中的方法不能使用箭头函数,里层的就无所谓了
            }
        }
    })
</script>

指令,事件

//指令5
<input v-model="msg"></input>       双向数据数据

<div v-text="msg"></div>与{{msg}}功能一样,但前面那个的好处是网速慢的时候也不会看到小胡子,另一个网如果不好会看到小胡子

<div v-once>{{content}}</div>       只绑定一次,以后不会再受数据变化就更新了

<div v-html="msg"></div>        把HTML字符当HTML代码渲染,如msg:"<p>hello</p>"页面显示就是hello,但如果用小胡子显示数据的话就是<p>hello</p>

<li v-for="(item,index) in list"></li>要循环谁就在谁身上添加该属性,item就是当前项,index是索引


//事件
v-on:click="函数名"可以简写成@click="函数名"。              函数名要在methods里注册

1. vue会自动给函数传递事件源,即如果绑定事件的时候后面什么都不写,methods里面的方法可以直接拿到事件源e。
    <button @click="fn">点我呀</button>
    
    methods:{
        fn:function (e) {console.log(e)}
    }
    
2. 如果写了()想要拿到事件源则绑定函数时括号里需要写$event作为第一个参数
    <button @click="fn($event)">点我呀</button>
    
    methods:{
        fn:function (e) {console.log(e)}
    }

3. 如果想要拿到事件又想传参。则第一个参数是$event从第二位开始传参数,接收参数时也是与之对应,第一个参数接收事件从第二个参数开始接收参数。
   <button @click="fn($event,'liqian')">点我呀</button>
   
    methods:{
        fn:function (e,a) {console.log(e,a)}//
    }
4. 如果不需要事件源只传参数。可以不写$event,传参和接收参数一样还是一一对应
    <button @click="fn('liqian')">点我呀</button>
   
    methods:{
        fn:function (a) {console.log(a)}//
    }

- 一个简易功能

  - 点击按钮,将前面表单的内容展示在下面,并且表单清空

<div id="app">
    <div>
        <input type="text" placeholder="请输入" v-model="onemsg">
        <input type="submit" value="点击提交" @click="fn">
    </div>
    <div v-for="(item,index) in datalist" :key="index">{{item}}</div>
</div>

<script src="./node_modules/vue/dist/vue.js"></script>
<script>
    let vm=new Vue({
        el:"#app",
        data(){
            return {
                onemsg:"",
                datalist:[]//展示在页面上
            }
        },
        methods:{
            fn(){//当点击提交时将表单中的数据放入定义好的datalist里,并清空表单
                //只有表单能实现双向绑定,表单改变时数据自动发生变化
                this.datalist.push(this.onemsg);//获取到最新的数据放入数据表里
                this.onemsg=""
            }
        }
    })
</script>

  

 

posted @ 2019-08-09 13:23  匆匆那年cc  阅读(246)  评论(0)    收藏  举报