| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> JavaScript知识库 -> vue重点知识速览 -> 正文阅读 |
|
|
[JavaScript知识库]vue重点知识速览 |
小知识点
total(){
let a = 0
this.goodlist
.filter(x=>x.goods_state)
.forEach(x => {
a += x.goods_count
});
return a
}
const findResult = this.goodlist.find(x=>x.id===e.id)
创建vite工程npm init vite-app 工程名 cd 工程名 npm install npm run dev 自定义事件//声明自定义事件--step1
emits:['change']
//触发自定义事件--step2
<button @click="onBtnClick">+1</button>
emits:['change'],
methods:{
onBtnClick(){
this.$emit('change')//点击按钮,触发自定义事件change
}
}
//注册组件1---MyCounter省略
//监听自定义事件---step3
<my-counter @change="getCount"></my-counter>
methods:{
getCount(){
console.log('监听到了count值的变化')
}
}
axios的使用全局挂载axios import { createApp } from 'vue'
import App from './App.vue'
import './index.css'
//导入axios
import axios from 'axios'
const app = createApp(App)
//全局挂载axios
axios.defaults.baseURL = 'https://www.escook.cn'
app.config.globalProperties.$http = axios
app.mount('#app')
调用get方法举例 methods: {
async getGoodList(){
const {data:res} = await this.$http.get('/api/cart')
if(res.status !==200) return alert('商品请求失败')
console.log(res)
this.goodlist = res.list
},
拦截器 拦截器会在每次发起axios请求和得到响应时触发。 请求拦截器 import { loading } from 'element-ui'
let loadingInstance = null
axios.interceptors.request.use(config=>{
loadingInstance = loading.server({ fullscreen: true })
return config
}[,第二个参数是请求失败的可以不写])
响应拦截器 axios.interceptors.response.use(response=>{
loadingInstance.close()
return response
}[,第二个参数是请求失败的可以不写])
proxy跨域代理
axios请求根路径改成项目运行路径 import axios from 'axios' axios.defaults.baseURL = 'http://127.0.0.1:4000'//改成了项目运行路径 app.config.globalProperties.$http = axios 配置proxy代理(根目录下创建vue.config.js) module.exports = {
devServer:{
proxy:'真正要请求的地址'
}
}
该功能仅在开发调试阶段生效 数据共享父组件向子组件共享数据
//父组件通过v-bind绑定向子组件共享数据--step1
<my-test-1 :msg="massage" :user="userinfo"></my-test-1>
data(){
return {
message: 'hello vue',
userinfo: { name:'zs', age: 20 },
}
}
<template>
<p>{{msg}}</p>
<p>{{user}}</p>
</template>
//子组件使用props接收数据---step2
<script>
export default {
props: ['msg', 'user'],
}
子组件向父组件共享数据
//自定义事件
emits:['n1change'],//声明自定义事件
data(){
return{
n1:0,
}
},
methods: {
addN1(){
this.n1++,
this.$emit('n1change',this.n1)//数据变化触发自定义事件
}
}
父子之间数据双向同步
兄弟之间数据共享
//要先安装第三方包mitt //npm i mitt import mitt from 'mitt' const bus = mitt() export default bus <template>
<div>
<h3>数据发送方---count的值为{{count}}</h3>
<button type="button" class="btn btn-primary" @click="add">+1</button>
</div>
</template>
<script>
import bus from './eventBus.js'
export default {
name:'Left',
data() {
return {
count:0,
}
},
methods: {
add(){
this.count++
bus.emit('countChange',this.count)
}
},
}
</script>
template>
<div>
<h3>数据接收方---num的值为:{{num}}</h3>
<!-- <button type="button" class="btn btn-primary" @click="count+=1">+1</button> -->
</div>
</template>
<script>
import bus from './eventBus.js'
export default {
name:'Right',
data() {
return {
num:0,
}
},
created() {
bus.on('countChange',(count)=>{
this.num = count
})
},
}
</script>
资料
vue-router路由基本步骤
<!-- 声明路由链接 --> <router-link to="/home">首页</router-link>  <router-link to="/movie">电影</router-link>  <router-link to="/about">关于</router-link> <!-- 声明路由占位符 --> <router-view></router-view>
在项目中创建 router.js 路由模块,在其中按照如下 4 个步骤创建并得到路由的实例对象: ① 从 vue-router 中按需导入两个方法 ② 导入需要使用路由控制的组件 ③ 创建路由实例对象 ④ 向外共享路由实例对象 ⑤ 在 main.js 中导入并挂载路由模块 // createRouter可以让我们创建路由实例对象
// createWebHashHistory可以指定路由工作模式
import { createRouter, createWebHashHistory} from 'vue-router'
// createRouter可以让我们创建路由实例对象
// createWebHashHistory可以指定路由工作模式
import { createRouter, createWebHashHistory} from 'vue-router'
//导入组件c
import Home from './MyHome.vue'
import Movie from './MyMovie.vue'
import About from './MyAbout.vue'
// 创建路由实例对象
const router = createRouter({
// 通过history属性指定路由工作模式
history:createWebHashHistory(),
//通过routers数组指定路由规则
//其中path是哈希地址,component是要展示的组件
routes:[
{ path: '/',redirect: '/home'}, //路由重定向
{ path: '/home',component: Home},
{ path: '/movie',component: Movie},
{ path: '/about', component: About}
]
})
export default router
通过路由规则的 redirect 属性,指定一个新的路由地址,可以很方便地设置路由的重定向。 main.js中导入并挂载路由 import router from './components/10.next/router'
const app =createApp(App)
//挂载路由模块
app.use(router)
app.mount('#app')
路由高亮效果
嵌套路由
<!-- 声明子路由链接 -->
<router-link to="/about/tab1">Tab1</router-link> 
<router-link to="/about/tab2">Tab2</router-link>
<!-- 声明子路由占位符 -->
<router-view></router-view>
const router = createRouter({
history:createWebHashHistory(),
routes:[
{ path: '/',redirect: '/home'},
{ path: '/home',component: Home},
{ path: '/movie',component: Movie},
{
path: '/about',
component: About,
redirect: '/about/tab1',//重定向
//嵌套路由----------------嵌套路由----------------嵌套路由--
children:[
{ path: 'tab1', component: Tab1},
{ path: 'tab2', component: Tab2 },
]
//嵌套路由----------------嵌套路由----------------嵌套路由--
}
]
})
动态路由匹配---语雀吧 main中路由规则
主件中props接收动态参数id,再应用到path
编程式导航
命名路由
(这个是路由规则处) |
|
|
| JavaScript知识库 最新文章 |
| ES6的相关知识点 |
| react 函数式组件 & react其他一些总结 |
| Vue基础超详细 |
| 前端JS也可以连点成线(Vue中运用 AntVG6) |
| Vue事件处理的基本使用 |
| Vue后台项目的记录 (一) |
| 前后端分离vue跨域,devServer配置proxy代理 |
| TypeScript |
| 初识vuex |
| vue项目安装包指令收集 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/13 20:34:08- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |