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> |
至此,已经将原项目改为组件化的形式。