这篇笔记是我根据尚硅谷的前端讲师张天禹老师的尚硅谷Vue2.0+Vue3.0全套教程整理的,这个教程真的强推,是我目前看过的最好的教程,讲解细致,吐字清晰,读者们也可以体验一下。
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
官方文档:https://cn.vuejs.org/
script
标签引入,这也是我们学习中比较常用的一种方式,vue.js文件有生产者和开发者两种版本,**我们初学当然要使用开发版本,**生产者版本包含了包含完整的警告和调试模式,而开发者版本删除了所有的警告信息,体积更精简。<script type="text/javascript" src="../js/vue.js">script>
引入了这个文件后,就会多了一个Vue
的全局对象。
<script src="https://cdn.jsdelivr.net/npm/[email protected]">script>
前面我们说过Vue
是一个全局的对象,那我们要使用Vue
就必须要先new
出来一个对象,对这个对象进行一些配置,我们传入一个配置对象作为Vue
的构造函数的参数。
<body>
<div id="root">
<h1>{{msg}}h1>
div>
<script>
Vue.config.productionTip = false //关闭Vue的生产提示 Vue2中的
const vm = new Vue({
el: '#root',
data: {
msg: 'atguigu',
},
})
script>
body>
配置对象中的属性名不能乱写,要按照原有的属性名写。我们先建立了一个div
的容器,附上id
,id为root
,在配置对象里,我们这样写:
el
:element,表示挂载,将容器与vue
联系起来,接着我们就可以在容器里使用vue
了,也可以用类名挂载。data
:顾名思义,既数据,vue
能将内部的数据显示在容器中,上面的例子用了插值语法实现,既{{}}
,中间放上数据的名字。注意区分:js表达式 和 js代码(语句)
表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方:
(1). a
(2). a+b
(3). demo(1)
(4). x === y ? ‘a’ : ‘b’
js代码(语句)
(1). if(){}
(2). for(){}
<div id="demo">
<h1>Hello,{{name.toUpperCase()}},{{address}}h1>
div>
<script type="text/javascript" >
Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。
//创建Vue实例
new Vue({
el:'#demo', //el用于指定当前Vue实例为哪个容器服务,值通常为css选择器字符串。
data:{ //data中用于存储数据,数据供el所指定的容器去使用,值我们暂时先写成一个对象。
name:'atguigu',
address:'北京'
}
})
script>
Vue模板语法有2大类:
插值语法就是我们上面学过的。
{{xxx}}
,xxx是js表达式,且可以直接读取到data中的所有属性。<div id="root">
<h1>插值语法h1>
<h3>你好,{{name}}h3>
<hr/>
<h1>指令语法h1>
<a v-bind:href="school.url.toUpperCase()" x="hello">点我去{{school.name}}学习1a>
<a :href="school.url" :x="hello">点我去{{school.name}}学习2a>
div>
body>
<script type="text/javascript">
Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。
new Vue({
el: '#root',
data: {
name: 'jack',
school: {
name: '尚硅谷',
url: 'http://www.atguigu.com',
hello: '你好啊'
}
}
})
script>
v-bind:href="xxx"
或 简写为 :href="xxx"
,xxx同样要写js表达式,且可以直接读取到data
中的所有属性。v-bind
举个例子。vue
中的数据绑定分为单向和双向的:
v-bind
):数据只能从data流向页面。v-model
):数据不仅能从data流向页面,还可以从页面流向data。
在开发者工具下,改变name的值,单向绑定和双向绑定的值都会刷新。
在单向绑定的输入框中修改:
在双向绑定的输入框中修改:
数据发生了变化。
<div id="root">
单向数据绑定:<input type="text" :value="name"><br/>
双向数据绑定:<input type="text" v-model="name"><br/>
div>
body>
<script type="text/javascript">
Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。
new Vue({
el:'#root',
data:{
name:'尚硅谷'
}
})
备注:
v-model:value
可以简写为 v-model
,因为v-model
默认收集的就是value
值。el
与data
的两种写法el
new Vue
时候配置el
属性。 const v = new Vue({
el:'#root', //第一种写法
data:{
name:'你好'
}
})
Vu
实例,随后再通过vm.$mount('#root')
指定el的值。const v = new Vue({
data: {
name: '你好'
}
})
console.log(v)
v.$mount('#root') //第二种写法
data
dats
的写法有两种,一种是对象式,一种是函数式,等以后使用组件的时候,必须使用函数式。
new Vue({
el: '#root',
//data的第一种写法:对象式
/* data:{
name:'你好'
} */
//data的第二种写法:函数式
data() {
console.log('@@@', this) //此处的this是Vue实例对象
return {
name: '你好'
}
}
})