Vue的入门

认识Vue

  • Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

在这里插入图片描述

js中的ECMA5与ECMA6

  • ECMA是欧洲计算机协会的缩写,E5和E6推出了许多新功能。

var、let、const的区别:
var是全局变量,无论是在哪个位置,都可以使用,像类中的实例变量;
let是局部变量,只能在方法内部使用,像java中方法的局部变量;
const是最终的,一旦赋值初始值,就不可以改变,像java中的static final;

解构表达式:

  • 定义一个整型数组,进行操作:

let arr = [23,78,65,42,98];
需求1,取出第一个元素和第二个元素:
let a = arr[0],b= arr[1];
需求2,取出除了第一个元素的其他元素:
let [,…rest] = arr;

  • 定义一个json格式的数据:

let p = {name:“steven”,age:21};
需求1,取出name和age,第一种:
let {name,age} = p;
需求1,取出name和age,第二种(不想使用原有的名称):
let {name:a,age:ag} = p;

let p = {name:“steven”,age:21,girl:{name:“xielan”,age:22}};
需求,取出girl数组中的内容:
let {girl:{name:n,age:a}} = p;

案例:

		function sum(a,b){
			return a+b;
		}
		
		const add = (a,b) => a + b;
		
		const p = {
			name:"Jack",
			age:21
		};
		
		const hello = function(person){
			console.log(person.name+" "+person.age);
		}
		
		const hello2 = function({name,age}){
			console.log(name+" "+age);
		}
		
		hello(p);
		hello2(p);

map和reduce

let s = ["21","37","46"];

let arr2 = s.map(arr => parseInt(arr));//map是将一个个元素进行拆分

arr2.reduce((a,b) => a + b);//reduce是将拆分的结果按照指定的格式进行合并

arr2.reduce((a,b) => a * b,0);//reduce是将拆分的结果按照指定的格式进行合并,并将第一个元素置为0
-- reduce是将第一个元素和第二个元素进行逻辑运算,第二次进来时,将第一次运算的结果作为第一个参数,第三个参数作为第二个参数,以此类推...

安装npm、nrm

  • 1、下载node.js

点击网址: https://nodejs.org/en/,下载windows的msi版本;

  • 2、下载安装之后,在控制台输入node -v命令:

在这里插入图片描述

  • 3、Node自带了NPM了,在控制台输入npm -v查看

在这里插入图片描述

  • npm默认的仓库地址是在国外网站,速度较慢,建议大家设置到淘宝镜像。但是切换镜像是比较麻烦的。推荐一款切换镜像的工具:nrm
    我们首先安装nrm,这里-g代表全局安装。可能需要一点儿时间

npm install nrm -g

  • 然后通过nrm ls命令查看npm的仓库列表,带*的就是当前选中的镜像仓库

在这里插入图片描述

  • 通过nrm use taobao来指定要使用的镜像源

在这里插入图片描述

  • 然后通过nrm test npm来测试速度

创建工程,使用vue

  • 1、通过npm对工程中加入vue

进入hello-vue目录,先输入:npm init -y 进行初始化

  • 2、安装Vue

输入命令:npm install vue --save

vue声明式渲染

<body>
	<div id="app">
    <h2>{{name}},非常帅!!!</h2>
	</div>
</body>
<script src="node_modules/vue/dist/vue.js" ></script>
<script>
// 创建vue实例
var app = new Vue({
    el:"#app", // el即element,该vue实例要渲染的页面元素
    data:{ // 渲染页面需要的数据
        name: "峰哥"
    }
});
</script>
  • 首先通过 new Vue()来创建Vue实例
  • 然后构造函数接收一个对象,对象中有一些属性:
    • el:是element的缩写,通过id选中要渲染的页面元素,本例中是一个div
    • data:数据,数据是一个对象,里面有很多属性,都可以渲染到视图中
      • name:这里我们指定了一个name属性
  • 页面中的h2元素中,我们通过{{name}}的方式,来渲染刚刚定义的name属性。

双向绑定使用v-model指令

事件处理

-- 也可以使用@click,可以直接写js代码,也可调用已经写好的js代码
<button v-on:click="num++">点我</button>
<button v-on:click="add">点我</button>
-- js
var vm = new Vue({
    el:"#app",
    data:{
        num: 0
    },
    methods:{
        add:function(){
            // this代表的当前vue实例
            this.num++;
        }
    },
    created: function () {//vue初始化时就会执行的函数
        this.num = 100;
    }
});

vue指令

1.1 插值表达式:{{}},两个花括号包在中间的内容;
1.2 插值闪烁,用v-text、v-html代替:

  • v-text:将数据输出到元素内部,如果输出的数据有HTML代码,会作为普通文本输出

  • v-html:将数据输出到元素内部,如果输出的数据有HTML代码,会被渲染

      HTML:
      <div id="app">
      v-text:<span v-text="hello"></span> <br/>
      v-html:<span v-html="hello"></span>
      <input type="checkbox" v-model="language" value="Java" />Java<br/>
      <input type="checkbox" v-model="language" value="PHP" />PHP<br/>
      <input type="checkbox" v-model="language" value="Swift" />Swift<br/>
      <h1>
      你选择了:{{language.join(',')}}
      </h1>
      </div>
      JS:
      var vm = new Vue({
      	el:"#app",
      	data:{
     		 hello: "<h1>大家好,我是峰哥</h1>",
     		 language:[]
      	}
      })
    

v-on

语法:v-on:事件名=“js片段或函数名”

事件绑定可以简写,例如v-on:click='add’可以简写为@click=‘add’;

v-for

语法:v-for=“item in items”

  • items:要遍历的数组,需要在vue的data中定义好。
  • item:迭代得到的数组元素的别名

数组角标

语法:v-for="(item,index) in items"

  • items:要迭代的数组
  • item:迭代得到的数组元素别名
  • index:迭代到的当前元素索引,从0开始。

遍历对象

语法:
v-for=“value in object”
v-for="(value,key) in object"
v-for="(value,key,index) in object"

  • 1个参数时,得到的是对象的属性
  • 2个参数时,第一个是属性,第二个是键
  • 3个参数时,第三个是索引,从0开始

v-if、v-show

<button @click="random = Math.random()">点我呀</button><span>{{random}}</span>
    <h1 v-if="random > 0.75">
        看到我啦?if 0.75
    </h1>
    <h1 v-else-if="random > 0.5">
        看到我啦?if 0.5
    </h1>
    <h1 v-else-if="random > 0.25">
        看到我啦?if 0.25
    </h1>
    <h1 v-else>
        看到我啦?else
    </h1>
  • v-if,v-else-if,v-else代码之间不能写入其他代码;
  • v-if是直接将代码去除,v-show是将代码片段的display置为none;

计算属性

<h1>您的生日是:{{
new Date(birthday).getFullYear() + '-'+ new Date(birthday).getMonth()+ '-' + new Date(birthday).getDay()
}}
</h1>
var vm = new Vue({
    el:"#app",
    data:{
        birthday:1429032123201 // 毫秒值
    },
    computed:{
        birth(){// 计算属性本质是一个方法,但是必须返回结果
            const d = new Date(this.birthday);
            return d.getFullYear() + "-" + d.getMonth() + "-" + d.getDay();
        }
    }
})
<div id="app">
   <h1>您的生日是:{{birth}} </h1>
</div>

watch实时监控

  • watch可以让我们监控一个值的变化。从而做出相应的反应。

      <div id="app">
      	<input type="text" v-model="message">
      </div>
      <script src="./node_modules/vue/dist/vue.js"></script>
      <script type="text/javascript">
      	var vm = new Vue({
          el:"#app",
          data:{
              message:"",
              person:{name:"余海",age:23}
          },
          watch:{
              message(newVal, oldVal){
                  console.log(newVal, oldVal);
              },
              person:{
      			deep:true,//监控对象需开启深度监控
      			handler(val){//对象监控的方法名称必须是handler
                  console.log(val.age);
              }
      		}
          }
      })
      </script>
    

全局组件与局部组件

	<head>
	    <meta charset="UTF-8">
	    <title>组件化</title>
	    <script src="node_modules/vue/dist/vue.js"></script>
	</head>
	<body>
	    <div id="app">
	        <counter></counter>
	        <counter></counter>
	        <counter></counter>
	    </div>
	</body>
	<script type="text/javascript">
	    /*//定义全局组件
	    Vue.component('counter',{//全局组件,组件名称为counter
	        template : "<button v-on:click='count ++'>你点了我{{count}}次</button>",
	        data(){
	           return {
	               count : 0
	           }
	        }
	    });*/
	    //定义局部组件
	    const counter = {
	        template : "<button v-on:click='count ++'>你点了我{{count}}次</button>",
	        data() {
	            return {
	                count: 0
	            }
	        }
	    };
	    var app = new Vue({
	        el : "#app",
	        data:{
	
	        },
	        components:{
	        counter//局部组件需要在此进行注册
	         }
	    });
	</script>
</head>

当我们定义这个 < counter > 组件时,它的data 并不是像这样直接提供一个对象

	data: {
	  count: 0
	}

取而代之的是,一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝

	data: function () {
	  return {
	    count: 0
	  }
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值