Vue.js
整理笔记
Vue.js
是一套用于构建用户界面的轻量级的MVVM渐进式前端框架,通过简单的API
提供高效的数据绑定和灵活的组件系统。
基础语法
创建第一个 Vue
实例
1 |
|
el
:是 element
的缩写,指要操作或绑定的元素
data
:写需要操作改变的内容。
注意:学
javascript
时,很多时候都是操作DOM
的模式,而vue
则更多是操作数据的双向绑定。
挂载点、模板与实例
- 挂载点:
需要操作的元素。例如:<div id="app"></div>
并在实例中通过 el: '#app'
进行数据的双向绑定。
Vue只会去处理挂载点下的内容。
- 模板:
挂载点内部的内容我们把它叫做模板内容。也可以将模板在实例中编写,不过渲染时要加上 H5
标签例如:
1 | <div id="root"></div> |
Vue
实例:
自动根据 el
,template
,data
数据生成最终的效果。最后放在挂载点之中。
Vue
实例中的数据、事件和方法
插值法:
插值表达式
- 双大括号
- 双大括号
指令
v-text
和v-html
- 监听事件指令
v-on
- 属性绑定指令
v-bind
- 表单输入绑定指令
v-model
- 计算属性
- 条件渲染:
v-if
和v-show
v-text
:
1 | <div id="root"> |
输出:
<h2>HEOOL!!!</h2>
v-html
:
1 | <div id="root2"> |
v-on
:监听事件
1 | <div id="app"> |
v-on
:可以简写为@
,即v-on:click
等价于@click
Vue
中的属性绑定和双向数据绑定
v-bind
:属性绑定
1 | <div id="app2"> |
v-bind
:可以简写为:,即v-bind:title
等价于:title
v-model
:双向数据绑定
1 | <div id="app3"> |
当
input
框中的数据改变,div
中content
的内容也会相应的发生改变。
Vue
中的计算属性和侦听器
- 计算属性:
1 | <div id="app4"> |
侦听器
:
1 | <div id="app4"> |
v-if
、v-show
和 v-for
指令
v-if
:控制DOM
存在与否
1 | <div id="app5"> |
v-show
:控制DOM
的显示与否
1 | <div id="app5"> |
区别:
v-if
是直接将div
在DOM
中移除;而v-show
是通过display:none
来达到隐藏,DOM
结构依然存在。
v-for
:循环显示
1 | <div id="app5"> |
Vue
中的组件
使用
Vue
中的组件开发一个TodoList
todolist
功能开发
Add
:
1 | <!-- TodoList --> |
TodoList
中组件的拆分
- 全局组件:
1 | ... |
- 局部组件:
1 | <script> |
- 父组件向子组件传参
1 | <!-- TodoList --> |
实现TosoList的删除功能
- 子组件向父组件通信
1 | <!-- TodoList --> |
Vue-cli
(脚手架工具)的使用
脚手架的使用
在考虑到在大型项目中的可维护性,真实的
Vue
项目开发过程中,我们会借助Webpack
的打包工具,帮助构建大型项目的开发目录。Vue
提供了一个官方的CLI
,为单页面应用 (SPA
) 快速搭建繁杂的脚手架。
- 安装
node
和npm
环境
官网https://nodejs.org/en/download/
下载安装 node
,npm
会附带安装
终端node -v
,npm -v
查看是否成功,打印出版本号则为安装成功。
- 安装使用淘宝
npm
镜像,加快访问速度
官网http://npm.taobao.org/
终端命令行输入npm install -g cnpm --registry=https://registry.npm.taobao.org
之后的 npm
命令可以用 cnpm
进行替换,速度上会快一点
- 在终端进行全局安装
Vue-cli
1 | npm install -g vue-cli |
- 创建一个基于Webpack模板的新项目
1 | vue init webpack my-project |
涉及项目名、项目描述、作者默认可随意,项目构建选 Runtime + Compiler
、是否安装 vue-router
视情况而定、代码检查工具ESLint
、单元测试工具暂时可以选NO
、然后选择 npm
安装
- 进入项目,安装依赖
1 | cd my-project |
组件化开发 TodoList
main.js
:
1 | import Vue from 'vue' |
TodoList.vue
:
1 | <template> |
components.TodoItem.vue
:
1 | <template> |
至此,已经将原项目改为组件化的形式。