vue学习第一天 - 安装

164 阅读3分钟

Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定组合的视图组件

Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能模拟的 ECMAScript 5 特性

下载好vue.js文件,在HTML文件中如正常的js文件引入

开发版本 => 推荐使用,可以调试报错

生成版本 => 删除了警告,意味着不知道自己错在哪

CDN版本 => 保持和 npm 发布的最新的版本一致,看了一下,是2.6版本,最新好像是3.0

// 这个是CDN模式
<script src="https://unpkg.com/vue/dist/vue.js">

NPM安装

在用 Vue.js 构建大型应用时推荐使用 NPM 安装

npm install vue

HTML代码:

{{}}是插值表达式,这是声明式渲染,用来在标签中渲染vue实例对象中data里的数据,只能解析纯文本,不能解析为HTML

<div id="app">
	{{message}}
</div>
<div id="div">
	{{message2}}
</div>

javascript代码:

let app = new Vue({
    el: '#app',
    data: {
        message: 'vue学习第一天'
    }
})
let app = new Vue({
    el: '#div',
    data: {
        message2: '第二个vue实例'
    }
})

运行结果:

vue学习第一天
第二个vue实例

一、vue实例

每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例 启动的

let app = new Vue({
    el: '#app',  // 挂载元素
    data: {
        message: 'vue学习第一天' // data是数据,所有的数据都在这里面写
    },
    created: function () {}  // created是vue的生命周期钩子函数,这个有11个,常用的只有八个
})

1、生命周期钩子函数

生命周期钩子函数 作用范围
beforeCreate el,data都为undefined,还没有初始化
created data数据有了,但是el依旧undefined,即DOM没有
beforeMount el和data已经完成初始化,可以使用,但是data里面的内容还没有初始化
mounted vue实例挂载完成,data成功渲染
beforeUpdate data更新完成之前触发
updated data更新完成之后触发
beforeDestroy 组件注销之前触发
destroyed 组件注销之后触发

测试效果:

beforeCreate

beforeCreate: function () {
    console.log(this.$el)
    console.log(this.$data)
    console.log(this.message)
}

====

undefined
undefined
undefined

created

created: function () {
    console.log(this.$el)
    console.log(this.$data)
    console.log(this.message)
}

====

undefined
{message: "vue学习第一天"}
vue学习第一天

beforeMount

beforeMount: function () {
    console.log(this.$el)
    console.log(this.$data)
    console.log(this.message)
}

====

<div id="app">
	{{message}}
</div>
{message: "vue学习第一天"}
vue学习第一天

mounted

mounted: function () {
    console.log(this.$el)
    console.log(this.$data)
    console.log(this.message)
}

====

<div id="app">
	vue学习第一天
</div>
{message: "vue学习第一天"}
vue学习第一天

beforeUpdate

在控制台输入:app.message = '修改message'

beforeUpdate: function () {
    console.log(this.$el)
    console.log(this.$data)
    console.log(this.message)
}

====

<div id="app">
    修改message
</div>
{message: "修改message"}
修改message

updated

在控制台输入:app.message = '修改message'

beforeUpdate: function () {
    console.log(this.$el)
    console.log(this.$data)
    console.log(this.message)
}

====

<div id="app">
    修改message
</div>
{message: "修改message"}
修改message

二、vue拓展实例

使用基础 Vue 构造器,创建一个“子类”,参数是一个包含组件选项的对象 ,data 选项是特例,需要注意 - 在 Vue.extend() 中它必须是函数

<div id="app"></div>
<myvue></myvue>
let vueExtend = Vue.extend({
	template: '<p>{{firstName}}{{lastName}} is {{gender}}</p>',
    data: function () {
        return {
			firstName: '前端',
			lastName: '小白',
			gender: '男孩纸'
        }
    }
})

// 将拓展构造函数实例化,并声明成一个组件,不需要在components里面注入,可以直接使用
new vueExtend().$mount('myvue')
    
// 将拓展构造函数实例化并挂载到一个元素上,有点类似JQ,直接通过类选择器或者id选择器
new vueExtend().$mount('#app')

// 输出结果为:
vue学习第一天
前端小白 is 男孩纸