? Vue build runtime
? Install vue-router? Yes
? Use ESLint to lint your code? No
? Set up unit tests No
? Setup e2e tests with Nightwatch? No
? Should we run `npm install` for you after the project has been created? (recommended) npm
vue-cli · Generated "vue2proj".
```
--offline 离线安装,需要下载webpack-develop.zip解压后改名为webpack放在用户目录中的.vue-templates目录下
运行初始化的项目:
```
cd vue2proj
npm run dev
```
### vue-router路由
安装:
```
npm install vue-router --save
```
路由模式
1. hash,路径上带有#号
2. history,正常路径
配置路由模式,在src/router/index.js文件中配置:
```js
export default new Router({
mode: "history", //设置路由模式
routes
})
```
router-link属性
1. tag 设置链接显示类型,默认是a标签
2. replace 加了之后没法回到上一页
3. active-class 设置链接激活的class
active-class全局设置,在src/router/index.js文件中配置:
```javascript
...
export default new Router({
linkActiveClass:"active",//路由链接激活class统一设置之后自定义的全部失效
routes
})
```
### element-ui的使用
安装element-ui
```sh
npm i element-ui -S
```
在main.js中加入
```
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
```
[Element文档](https://element.eleme.cn/#/zh-CN/component/quickstart)
快速工程化:[Cooking](https://github.com/elemefe/cooking) [element-starter](https://github.com/ElementUI/element-starter)
[Vue2.0 新手入门 — 从环境搭建到发布](https://www.runoob.com/w3cnote/vue2-start-coding.html)
### 插槽
有插槽的组件:
HasSlot.vue
```html
```
ScopeSlot.vue
```html
我是作用域插槽
```
ScopeSlot2.vue
```html
```
使用插槽:
TestSlot.vue
```html
测试插槽
使用插槽,覆盖默认内容
使用具名插槽,覆盖默认内容
使用作用域插槽
{{ var1 }}
使用作用域插槽 遍历数据
{{ var1.obj.name }}
```
### vuex
安装vuex:
```sh
npm i vuex@3.6.2
```
见代码:vue2proj/src/views/testVuex/TestVuex.vue
### Promise
见代码:vue2proj/src/views/promise/TestPromise.vue
### axios
安装axios
```sh
npm install axios --save
```
见代码:[TestAxios.vue](vue2proj/src/views/axios/TestAxios.vue)

### sass
使用淘宝镜像
```
npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass
```
## 官网示例
### 声明式渲染
```html
Hello Vue 声明式渲染
{{message}}
悬停看提示信息
```
### 条件与循环
```html
条件与循环
```
### 处理用户输入
```html
处理用户输入
```
### 组件化应用构建
```html
组件化应用构建
```
### 实例数据与方法
```html
数据与方法
```
### 实列生命周期钩子
```html
实例生命周期钩子
```
### 语法-插值
```html
插值
Message: {{msg}}
{{rawHtml}}
绑定属性id
{{ num + 1 }}
{{ ok ? 'Yes':'No'}}
{{ msg.split('').reverse().join('') }}
绑定id属性
```
### 语法-指令
```html
指令
```
### 语法-缩写
```html
缩写
```
### 计算属性
```html
计算属性
Msg:{{ msg }}
Reverse Msg:{{ reverseMsg }}
方法反转Msg:{{ reverseMsgMethod() }}
```
### 监听器
```html
侦听器
```
### 绑定class
```html
绑定 HTML Class
```
### 绑定内嵌样式
```html
绑定内联样式
```
### 条件渲染 v-if
```html
v-if
```
### 条件渲染 v-show
```html
v-show
```
### 列表渲染 v-for
```html
v-for
遍历消息加父级消息
-
{{ item.msg }},{{parentMsg}}
加索引
-
{{ item.msg }}-{{ index}}
遍历对象信息
-
{{ value }}
遍历对象信息 使用 of
-
{{ value }}
遍历对象信息和属性名
-
{{name}}:{{ value }}
遍历对象信息和属性名加索引
-
{{ index+1 }}.{{ name }}:{{ value }}
v-for遍历数字
- {{ n }}
template上使用v-for
- {{item.msg}}
v-for 与 v-if 一块使用
-
{{item.msg}}
条件置于循环外层
-
{{item.msg}}
```
### 列表渲染-过滤排序
```html
过滤、排序
计算属性
{{ num + ',' }}
使用方法
{{ num + ',' }}
```
### 在组件上使用 v-for
```html
在组件上使用 v-for
```
### 监听事件
```html
监听事件
数量:{{num}}
```
### 事件修饰符
```html
事件修饰符
.stop 阻止点击继续传播,父级div上的点击事件失效
百度
.capture 捕获冒泡,会被最先触发
.self 避免冒泡影响,只有点击自身才触发
.once 只触发一次
.passive 不阻止事件的默认行为
使用.passive 可以提高性能,让浏览器不用再去判断有没有调用event.preventDefault()
.native 用于自定义的组件上,在根节点上使用
```
### 按键修饰符
```html
按键修饰符
使用按键名,比如page down
vue的示例按键名:
.enter
.tab
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right
自定义按键码,13
<回车键br>
```
### 系统修饰符
```html
系统修饰键
使用组合键触发事件
常用搭配组合键:Ctrl、Alt、Shift、Meta(Win系统为开始键)
Ctrl + C 组合
.exact修饰符
问题:按下Ctrl与Shift和Alt任意组合再点击按钮A,都会触发
只有按下Ctrl再点击按钮B才会触发
没有按下Ctrl、Shift和Alt任意键时或任意组合键时点击按钮C才会触发
鼠标按钮修饰符
```
### 表单
```html
表单输入绑定基础用法
```
### 组件示例及复用
```html
组件基本示例
组件基本示例
组件除了没有el属性外,其他属性及方法跟Vue属性一样
组件的复用
每使用一次组件都会创建一个组件实例,每个实例维护着自己的数据
```
### 组件通过 Prop 向子组件传递数据
```html
通过 Prop 向子组件传递数据
```
### 组件单个根元素
```html
单个根元素
```
### 监听子组件事件
```html
监听子组件事件
```
### 组件-插槽
```html
使用插槽
```