好几天没写东西了,发一下之前总结的笔记。。。

实例化vue

<div id="app"></div>
<sctipt>
new Vue({
    el:"#app",
    data:{},
    methods:{}
})
</sctipt>

标签:

el:element 需要获取的元素,一定是html中的跟容器元素

data:用于数据的存储

methods:用于存储各种方法

v-bind:绑定,例如 v-bind:value="test"

v-html:解析变量为html,例如

v-on:click:点击事件

v-on:dblclick:双击事件(同上)

v-on:mousemove:滑动事件

以上v-on:可以替换成@使用

@click.once:只触发一次

@click.prevent:阻止事件

v-on:keyup:键盘输入事件

v-on:keyup.enter:点击enter键触发

v-on:keyup.alt.enter:点击alt+enter键触发

v-text:解决插值表达式闪烁的问题

v-if & v-for

<div id="app">
<button v-on:click="error = !error"></button>
<p v-if="error">网络连接错误:404</p>
    
<ul>
    <li v-for="(user,index) in users">
    	{{index+1}}. {{user.name}} - {{user.age}}
    </li>
</ul>
    <template v-for="(user,index) in users">
        <div v-for="(val,key) in user">
            <p>{{key}} - {{val}}</p>
        </div>
    </template>
</div>
<script>
new Vue({
el:'#app',
data:{
	error:false,
    users:[
    {name:"Henry",age:28},
    {name:"Emily",age:25},
    {name:"Bucky",age:27}
    ]
}
});
</script>

双向绑定:v-model

也可以这样实现

<div id="app">
	<input ref="username" type="text" v-on:keyup="bind" />
	<span>{{name}}</span>
</div>
<script >
new Vue({
    el:"#app",
    data:{
    	name:""
    },
    methods:{
    	bind:function(){
    		this.name = this.$refs.username.value;
    	}
    }
})
</script>

methods与computed区别

<div id="app">
	<button v-on:click="a++">123</button>
	<button v-on:click="b++">321</button>
	<p>{{aa}}</p>
	<p>{{bb}}</p>
</div>
<script >
new Vue({
    el:"#app",
    data:{
    	a:0,
    	b:0
    },
    methods:{
    	/*aa:function(){
    		console.log("123");
    		return this.a;
    	},
    	bb:function(){
    		console.log("321");
    		return this.b;
    	}*/
    }
    computed:{
        aa:function(){
    		console.log("123");
    		return this.a;
    	},
    	bb:function(){
    		console.log("321");
    		return this.b;
    	}
    }
})
</script>

component模板

<script>
Vue.component("greeting",{
    template:'
    <p>{{name}}:大家好,给大家介绍一下我女朋友@关晓彤
    <button v-on:click="changeName">改名</button>
    </p>
    ',
    data:function(){
        return{
            name:"鹿晗"
        }
    },
    methods:{
        changeName:{
        	this.name = "Henry";
        }
    }
});
new Vue({
    el:"#app1"
});
new Vue({
    el:"#app2"
});
</script>
<div id="app1"></div>
<div id="app2"></div>

生命周期(钩子函数)

<script>
    new Vue({
        el:"#app",
        data:{},
        methods:{},
        beforeCreate:function(){
            alert("组件实例化之前执行的函数");  
        },
        created:function(){
            alert("组件实例化完毕,单页面还未显示");
        },
        beforeMount:function(){
            alert("组件挂在前,页面仍未展示,但虚拟DOM已配置");
        },
        mounted:function(){
        	alert("组件挂在后,此方法执行后,页面显示");
        },
        beforeUpdate:function(){
            alert("组件更新前,页面仍未更新,但虚拟DOM已配置");
        },
        Update:function(){
            alert("组件更新,此方法执行后,页面显示");
        },
        beforeDestory:function(){
            alert("组件销毁前");
        },
        destoryed:function(){
            alert("组件销毁");
        },
        
	});
</script>

全局安装

#全局安装vue-cli
npm install --global vue-cli
#创建基于webpack模板项目(后面项目名自定义)
vue init webpack my-project
#安装依赖
cd my-project
npm install
npm run dev

简洁搭建脚手架使用:vue init webpack-simple my-project

路由

安装路由模块

npm install vue-roter --save-dev

main.js

import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App'
import HelloWorld from "./components/HelloWorld";
import Home from "./components/Home";

Vue.config.productionTip = false
Vue.use(VueRouter)
//配置路由
const router = new VueRouter({
  routes:[
    {path:"/",component:Home},
    {path:"/helloworld",component:HelloWorld}
  ],
  mode:"history" //去掉地址栏中的#
})

//全局注册组件
new Vue({
  router,//使用路由
  el: '#app',
  components: { App },
  template: '<App/>'
})

app.js

<template>
  <div id="app">、
      <router-link to="/">home</router-link>
      <router-link to="/helloworld">hello</router-link>
      <router-view></router-view>
  </div>
</template>

http请求

安装resource

npm install vue-resource --save-dev

main.js

import VueResource from 'vue-resource'//引入模块
Vue.use(VueResource)//使用

home.js

<template>
  <div class="home">
    <div v-for="user in users">{{user.name}}——{{user.email}}</div>
  </div>
</template>
<script>
  export default {
    name: 'Home',
    data () {
      return {
        users:""
      }
    },
    created(){
      this.$http.get("http://jsonplaceholder.typicode.com/users")
        .then((data)=>{
          console.log(data);
            this.users = data.body;
        })
    }
  }
</script>
<style scoped>
</style>

未完待续...

Q.E.D.