<li v-for="item in arr" key="item">{{ item }}li>
<li v-for="(item,index) in arr" key="item">{{ index + 1 }}-{{ item }}li>
<li v-for="(value,key,index) in obj" key="item">{{ index + 1 }}-{{ item }}li>
- push(...nums) //-> 插入到最后一个位置
- pop(...nums) //-> 删除最后一个元素
- shift(...nums) //-> 删除第一个元素
- unshift(...nums) //-> 添加到第一位
- splice(start , deleteNumber , ...insert) //-> 插入、删除、替换元素
- sort() //-> 排序
- reverse() //-> 翻转数组
- //直接用索引改变数组没有响应式(set()方法可以实现
<div id="app">
<ul>
<li v-for="(item,index) in arr" key="item">{{ index + 1 }}-{{ item }}li>
<button @click="liClick()">按钮button>
ul>
div>
<script>
const app = new Vue({
el: '#app',
data: {
arr: ['A', 'B', 'C', 'D', 'E']
},
methods: {
liClick() {
// return this.arr.push('a')
// return this.arr.pop('A')
// return this.arr.splice(3,0 ,'x','y','z')
// return this.arr.reverse()
}
}
}
)
script>
```html
1.
2.
````
props -> 父组件向子组件传
const cpn = {
templete:'#cpn',
// 1. props:[cmovies,cmessage]
// 2. props:{
cmovies:{
type:Array,
defult(){
return [1,1,1,1,1,1,1]
}
},
cmessage:{
type:String,
defult(){
return "Hello World "
},
required:true
}
}
}
自定义事件 -> 子组件向父组件传递
Vue.component('my-component', {
props: {
// 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证)
propA: Number,
// 多个可能的类型
propB: [String, Number],
// 必填的字符串
propC: {
type: String,
required: true
},
// 带有默认值的数字
propD: {
type: Number,
default: 100
},
// 带有默认值的对象
propE: {
type: Object,
// 对象或数组默认值必须从一个工厂函数获取
default: function () {
return { message: 'hello' }
}
},
// 自定义验证函数
propF: {
validator: function (value) {
// 这个值必须匹配下列字符串中的一个
return ['success', 'warning', 'danger'].indexOf(value) !== -1
}
}
}
})
modeule.exports={
flag:true,
sum(a,b){
return a+b
},
multiplication(a,b){
return a*b
}
}
// commonJS 模块
let {
test,demo,flag
}=require('moduleA');
//等同于
let _mA=require("moduA");
let sum=_mA.sum;
let mulitip=_mA.multiplication;
let flag= _mA.flag;
导出
// 1. 导出方式一
export{
sum,flag
}
// 2. 导出方式二
export var flag=true;
export var num=100;
export function sum(num1,num2){
return num1+num2;
}
export class Person{
constructor(){}
}
const address="北京市";
export default address;
import addr from '/aaa.js'
导入
import {flag,sum} from '/aaa.js'
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack --mode development",
"build": "webpack --mode production"
}
const path = require('path');
module.exports = {
//entry: path.join(__dirname, './src/main.js'), 3.0版本
entry: './src/index.js',
output: {
//path: path.join(__dirname, './dist'), 3.0版本
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js'
},
mode: 'development' // 这也是 4.0 版本刚出来的 一行,
}
- webpack提供了一个本地服务器,基于node.js搭建
- 安装 --> npm install --save-dev webpack webpack-dev-server
- 配置 -->
const Webpack = require('webpack');
const WebpackDevServer = require('webpack-dev-server');
使用方法
Router 实例
动态路由
routes:[
path: '/user:id',
name: 'user', // 个人信息页面
component: () => import('@/components/user.vue')
]
```
````javascript
export default {
name: 'user',
computed:{
userId(){
return this.$route.params.id
}
}
}
```
路由懒加载
component: () => import('@/components/user.vue')
路由嵌套 => 创建组件并在route 父路由 的children方法 配置路由
参数传递
导航守卫
导航守卫官方文档
keep-alive 页面缓存
promise是异步编程的一种解决方案。
从语法上说,Promise,是一个对象,从它可以获取异步操作的消息。
Promise 异步操作有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。除了异步操作的结果,任何其他操作都无法改变这个状态。
Promise 对象只有:从 pending 变为 fulfilled 和从 pending 变为 rejected 的状态改变。只要处于 fulfilled 和 rejected ,状态就不会再变了即 resolved(已定型)。
vuex 是专为 Vue.js 开发的状态管理模式
Vuex中文文档
axios中文文档
==> axios.all([axiosA,axiosB])
==> axios.spread((res1,res2) => {})
类似于类的继承,定义mixin实例然后导入
export const mixin = {
data () {
a = 1
},
methods: {
getDatas (res) {
console.log(res)
}
}
}
a={{a}}