| |
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:55:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |