Vue环境搭建与快速入门

MVVM模式

  • M:即Model,模型,包括数据和一些基本操作
  • V:即View,视图,页面渲染结果
  • VM:即View-Model,模型与视图间的双向操作(无需开发人员干涉)

在MVVM之前,开发人员从后端获取需要的数据模型,然后要通过DOM操作Model渲染到View中。而后当用户操作视图,我们还需要通过DOM获取View中的数据,然后同步到Model中。而MVVM中的VM要做的事情就是把DOM操作完全封装起来,开发人员不用再关心Model和View之间是如何互相影响的:

  • 只要我们Model发生了改变,View上自然就会表现出来。
  • 当用户修改了View,Model中的数据也会跟着改变。

把开发人员从繁琐的DOM操作中解放出来,把关注点放在如何操作Model上。

1525828854056.png

认识Vue

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

前端框架三巨头:Vue.js、React.js、AngularJS,vue.js以其轻量易用著称,vue.js和React.js发展速度最快,AngularJS还是老大。

官网:https://cn.vuejs.org/

参考:https://cn.vuejs.org/v2/guide/

Git地址:https://github.com/vuejs

在这里插入图片描述

开发环境搭建

Node和NPM:

NPM是Node提供的模块管理工具,可以非常方便的下载安装很多前端框架,包括Jquery、AngularJS、VueJs都有。为了后面学习方便,我们先安装node及NPM工具。

下载Node.js:

下载地址:https://nodejs.org/en/,推荐下载LTS版本。
在这里插入图片描述

完成以后,在控制台输入:Node中自带了NPM

node -v
npm -v

看到版本信息:
在这里插入图片描述

npm默认的仓库地址是在国外网站,速度较慢,建议大家设置到淘宝镜像。但是切换镜像是比较麻烦的。推荐一款切换镜像的工具:nrm

首先安装nrm:npm install nrm -g这里-g代表全局安装。
然后通过nrm ls命令查看npm的仓库列表,带*的就是当前选中的镜像仓库:
通过nrm use taobao来指定要使用的镜像源
然后通过nrm test npm来测试速度

在这里插入图片描述
安装完成后重启电脑。

快速入门

创建一个新的空工程:
1529596874127.png

在这里插入图片描述

然后新建一个module:

1529597325121.png

选中static web,静态web项目:

在这里插入图片描述

位置信息:
在这里插入图片描述

安装vue:

方法一:官网下载
下载地址:https://github.com/vuejs/vue,下载解压,得到vue.js文件。

方法二:使用CDN

直接使用公共的CDN服务:

<!-- 开发环境版本,包含了用帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

或者:

<!-- 生产环境版本,优化了尺寸和速度 -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>

方法三:npm安装(推荐)

在idea的左下角,有个Terminal按钮,点击打开控制台,进入hello-vue目录,先输入:npm init -y 进行初始化。

在这里插入图片描述
安装Vue,输入命令:npm install vue --save
在这里插入图片描述
然后就会在hello-vue目录发现一个node_modules目录,并且在下面有一个vue目录。

在这里插入图片描述

node_modules是通过npm安装的所有模块的默认位置。

Vue基本使用

创建Vue实例:

每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的:

var vm = new Vue({
  // 选项
})

在构造函数中传入一个对象,并且在对象中声明各种Vue需要的数据和方法,包括:el、data、methods等等

el:每个Vue实例都需要关联一段Html模板,Vue会基于此模板进行视图渲染。我们可以通过el属性来指定,然后创建Vue实例,关联这个div。

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

<script>
	var vm = new Vue({
		el:"#app"
	})
</script>

这样,Vue就可以基于id为app的div元素作为模板进行渲染了。在这个div范围以外的部分是无法使用vue特性的。

数据: 当Vue实例被创建时,它会尝试获取在data中定义的所有属性,用于视图的渲染,并且监视data中的属性变化,当data发生改变,所有相关的视图都将重新渲染,这就是“响应式“系统。

<div id="app">
    <input type="text" v-model="name"/>
</div>

<script>
	var vm = new Vue({
	    el:"#app",
	    data:{
	        name:"张三"
	    }
	})
</script>
  • name的变化会影响到input的值
  • input中输入的值,也会导致vm中的name发生改变

方法: Vue实例中除了可以定义data属性,也可以定义方法,并且在Vue实例的作用范围内使用。

<div id="app">
    {{num}}
    <button v-on:click="add"></button>
</div>

<script>
	var vm = new Vue({
	    el:"#app",
	    data:{
	        num: 0
	    },
	    methods:{
	        add:function(){
	            // this代表的当前vue实例
	            this.num++;
	        }
	    }
	})
</script>

vue入门案例

在hello-vue目录新建一个HTML

测试:vue声明式渲染:

首先通过 new Vue()来创建Vue实例, 然后构造函数接收一个对象,对象中有一些属性:

  • el:是element的缩写,通过id选中要渲染的页面元素,本例中是一个div
  • data:数据,数据是一个对象,里面有很多属性,都可以渲染到视图中
    • name:这里我们指定了一个name属性
  • 页面中的h2元素中,我们通过{{name}}的方式,来渲染刚刚定义的name属性。
<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<!--Vue对象的html模板-->
<div id="app">
    <!--花括号:js表达式-->
    <h1>大家好,我是{{name}}</h1>
   
</div>
</body>

<!---->
<script src="node_modules/vue/dist/vue.js"></script>
<script>

    //初始化一个vue实例
    const app =new Vue({
        el: "#app", //element的缩写,选择器
        data: { //定义数据模型
            name: "小张",
       }
    })

</script>

</html>

打开页面查看效果:

在这里插入图片描述

双向绑定与事件处理

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<!--Vue对象的html模板-->
<div id="app">
    <!--花括号:js表达式-->
    <h1>大家好,我是{{name}}</h1>
    <!--双向绑定,v-model:数据模型-->
    <input type="text" v-model="name">

    <!--定义一个事件,v-on:事件名=js表达式 -->
    <input type="button" value="add1" v-on:click="num1++">
    <input type="button" value="add2" v-on:click="inc">
    <h1>{{num1}}+{{num2}}={{num1+num2}}</h1>
</div>
</body>

<script src="node_modules/vue/dist/vue.js"></script>
<script>

    //初始化一个vue实例
    const app =new Vue({
        el: "#app", //element的缩写,选择器
        data: { //定义数据模型
            name: "小张",
            num1: 1,
            num2: 2
        },
        methods: {
            inc(){
                this.num2++;
                this.dec()
            },
            dec(){
                this.num1--;
            }
        },
        created(){
            //ajax
            this.num1 = 1000;
        }
    })

</script>

</html>

在这里插入图片描述

当我们修改input输入框中的内容时,你会发现上面的内容也会发生变化:
在这里插入图片描述

input与name绑定,input的value值变化,影响到了data中的name,页面中的{{name}}与数据name绑定,因此name值变化,引起了页面效果变化。不需要任何dom操作,这就是双向绑定的魅力。

事件处理:用v-on指令绑定点击事件,而不是普通的onclick,然后直接操作num,普通click是无法直接操作num的。

在这里插入图片描述

生命周期钩子:

每个 Vue 实例在被创建时都要经过一系列的初始化过程 :创建实例,装载模板,渲染模板等等。Vue为生命周期中的每个状态都设置了钩子函数(监听函数)。每当Vue实例处于不同的生命周期时,对应的函数就会被触发调用。

在这里插入图片描述

  • beforeCreated:我们在用Vue时都要进行实例化,因此,该函数就是在Vue实例化时调用,也可以将他理解为初始化函数比较方便一点,在Vue1.0时,这个函数的名字就是init。
  • created:在创建实例之后进行调用。
  • beforeMount:页面加载完成,没有渲染。如:此时页面还是{{name}}
  • mounted:我们可以将他理解为原生js中的window.οnlοad=function({.,.}),或许大家也在用jquery,所以也可以理解为jquery中的$(document).ready(function(){….}),他的功能就是:在dom文档渲染完毕之后将要执行的函数,该函数在Vue1.0版本中名字为compiled。 此时页面中的{{name}}已被渲染成峰哥
  • beforeDestroy:该函数将在销毁实例前进行调用 。
  • destroyed:改函数将在销毁实例时进行调用。
  • beforeUpdate:组件更新之前。
  • updated:组件更新之后。

在测试代码中created代表在vue实例创建后调用;我们往往会使用它来初始化数据,在页面中可以看到num1=1000,而不是1。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙源lll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值