Vue入门 使用Typora打开
vue中文官网教学 安装与使用,我也经常看这个
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架
安装Node.js
- 安装,直接下一步即可
- 安装完成查看node版本号
- 安装完成,node自带npm,查看npm版本号
- 安装nrm(镜像切换工具),输入命令,等待安装好就行了
- 查看所有镜像源
*
代表当前所选镜像源
- 如果不是
taobao
可以更换taobao
IDEA操作Vue
- IDEA安装vue插件
- 创建一个空工程
- File>>>New>>>Project>>>Empty Project>>>Empty Project>>>Next>>>输入Project Name>>>Finish
- 创建一个Module
- File>>>New>>>Module>Static Web>>>Static Web>>>Next>>>输入Module Name>>>Finish
- 这时此Module还为空,打开IDEA最下面Terminal
- 进行Module初始化,如果Terminal执行不了npm,需要设置一下cmd
- 重启之后,再进入 IDEA 的 Terminal 进入当前的目录目录,输入下面命令
npm init -y
- 安装 放在node_modules下文件夹为 vue
npm install vue --save
- 这时的工程解构
谷歌浏览器安装vue插件
- GitHub搜索IMI-SOURCE-CODE,下载第一个crx的文件
- 把.crx改.rar,再解压到一个文件夹,然后开发者模式添加
生命周期
初步操作
v-model
v-on:click
new Vue
el
data
methods
1 |
|
created() mounted()
created()
视图渲染前,还没有形成HTMLmounted()
视图已经渲染,已形成HTML
1 |
|
数据使用
花括号
1 | 格式{{表达式}} |
单项绑定:v-text,v-html
1 | <h1 v-text="vtext"></h1> |
双向绑定:v-model
v-model的可使用的元素
- input
- select
- textarea
- checkbox
- radio
- components(Vue中的自定义组件)
对应类型
- 多个checkbox对应一个model时,model的类型是一个数组,单个checkbox值默认是boolean类型
- radio对应的值是input的value值
- text和textarea默认对应的model是字符串
- select单选对应字符串,多选对应也是数组
测试
1
2
3
4
5
6
7
8
9...
<div id="app">
<input type="checkbox" value="ios" v-model="language">ios<br>
<input type="checkbox" value="java" v-model="language">java<br>
<input type="checkbox" value="php" v-model="language">php<br>
您选择了:{{language}}<br>
您选择了:{{language.join(',')}}<br>
</div>
...1
2
3
4
5
6
7
8...
const app = new Vue({
el: "#app",
data: {
language: []
}
});
...v-on
页面元素绑定事件
语法
v-on:事件名="js片段或函数名"
v-on:click
鼠标左键点击
1 | <div id="app"> |
v-on:contextMenu
鼠标右键点击
- 指令后缀
.stop
阻止事件冒泡到父元素.prevent
阻止默认事件发生.capture
使用事件捕获模式.self
只有元素自身触发事件才执行。(冒泡或捕获的都不执行).once
只执行一次
.prevent
演示
1 | <div id="app"> |
v-on:keyup
按键修饰符
- enter 回车调用submit方法代码
1 | <input v-on:keyup.enter="submit"> |
- 事件类型,对应键盘字母
- .enter
- .tab
- .delete (捕获“删除”和“退格”键)
- .esc
- .space
- .up
- .down
- .left
- .right
- .13 等于.enter
- .65表示a按键
- .66表示b按键,以此类推
- 组合件按钮,对应按键
- .ctrl
- .alt
- .shift
1 | <!-- Alt + C 因为65是a 66是b 67为c 依次类推 --> |
v-for
遍历数据
遍历数组
- 语法
v-for="元素别名 in 数组名"
角标从0开始
1 | <div id="app"> |
- 数组角标语法
v-for="(元素别名,角标别名) in 数组名"
角标从0开始
1 | <ul> |
遍历对象
- 语法
v-for="(value别名,key别名,角标别名) in 对象名"
1 | <div id="app"> |
- key 标注一个key数组索引,唯一,可以让你读取vue中的属性,并赋值给key属性
1 | <li v-for="(value1, key1, index1) in daniu" :key=index1></li> |
v-if,v-show
if效率高
1 | <div id="app"> |
- 默认显示
- 点击一下
- 点击两下
- v-if与v-for并用
1 | <div id="app"> |
v-if与v-else-if与v-else结合
注意:中间不要间隔任何东西,例如br标签,p标签,span标签
1 | <div id="app"> |
v-bind 绑定
简写
v-bind:class
可以简写为:class
1 |
|
- 如果文本框1改为大于100值
computed 计算属性
计算属性,里面也是定义方法,但是必须要有返回值,可以像数据模型去使用
与方法不同,无论birthday是否变化,方法都会重新执行一次
计算属性会对之前的结果进行缓存,如果birthday变化,才会重新执行计算属性
1 | <div id="app"> |
watch
watch可以让我们监控一个值的变化。从而做出相应的反应。
1 | <div id="app"> |
- 依次输入123456789 显示
组件化
template中只能有一个根标签
1 | //可以 |
全局组件,组件复用,可在其他vue模块内使用,new Vue可写上面或下面
1 | <div id="app"> |
局部组件,只能在自己vue中使用,引入之后才可使用,new Vue写下面
components就是当前vue对象子组件集合,在这里counter就为key,用双引号””,counter1就是value,组件对象名
1 | <div id="app"> |
- 点击两次按钮
组件通信
props
父向子传递,父自定义属性
1 | <div id="app"> |
- 点击两次后显示
$emit
子向父的通信,父自定义事件
1 | <div id="app"> |
vue-router
路由
安装vue-router
- 进入IDEA下面Terminal
- 进入项目
cd hello-vue
- 安装
npm install vue-router --save
模块结构
- index.html
1 |
|
- login.js
1 | const loginForm = { |
- register.js
1 | const registerForm = { |
- 使用vue-router,改写后index.html
1 |
|