当前位置: 首页 > news >正文

关于做视频网站的一些代码网站备案号是什么样子

关于做视频网站的一些代码,网站备案号是什么样子,国外免费做网站软件,好用的在线地图网站Vue 高级技巧深度解析 mindmaproot(Vue2高级技巧)组件通信EventBusprovide/inject$attrs/$listeners性能优化虚拟DOM优化函数式组件按需加载状态管理Vuex模块化持久化存储严格模式高级指令自定义指令动态组件异步组件渲染控制作用域插槽渲染函数JSX支持一、组件通信的进阶之道 …

Vue 高级技巧深度解析


在这里插入图片描述

mindmaproot(Vue2高级技巧)组件通信EventBusprovide/inject$attrs/$listeners性能优化虚拟DOM优化函数式组件按需加载状态管理Vuex模块化持久化存储严格模式高级指令自定义指令动态组件异步组件渲染控制作用域插槽渲染函数JSX支持

一、组件通信的进阶之道

1.1 跨层级通信方案对比

props
props
provide
inject
父组件
子组件
孙子组件
EventBus

通信方案性能测试

方法100组件通信耗时内存占用适用场景
Props/Events120ms父子组件直接通信
EventBus85ms任意组件间低频通信
Vuex45ms中大型应用状态管理
provide/inject65ms跨多层级组件通信

1.2 高阶属性传递

// 父组件
<template><child v-bind="$attrs" v-on="$listeners"></child>
</template>// 子组件
export default {inheritAttrs: false,mounted() {console.log(this.$attrs); // 获取非props属性console.log(this.$listeners); // 获取所有监听器}
}

最佳实践

  • 使用inheritAttrs: false避免自动绑定到根元素
  • 结合v-bind="$attrs"实现属性透传
  • 通过$listeners批量处理事件监听

二、性能优化深度策略

2.1 虚拟DOM优化技巧

// 优化前
<template><div><div v-for="item in list" :key="item.id">{{ item.content }}</div></div>
</template>// 优化后:使用函数式组件
Vue.component('functional-list', {functional: true,render(h, context) {return context.props.list.map(item => h('div', { key: item.id }, item.content)}
})

优化效果对比

列表长度普通组件渲染时间函数式组件时间提升幅度
1000120ms45ms62%
5000680ms220ms67%

2.2 按需加载实现

// 路由配置
const routes = [{path: '/dashboard',component: () => import(/* webpackChunkName: "dashboard" */ './views/Dashboard.vue')}
]// 异步组件工厂
Vue.component('async-component', (resolve) => {setTimeout(() => {resolve(import('./components/HeavyComponent.vue'))}, 1000)
})

性能提升数据

优化项首屏体积加载时间内存占用
全量打包2.8MB3.2s150MB
按需加载1.1MB1.4s80MB

三、Vuex 高级应用模式

3.1 模块化状态设计

// store/modules/user.js
export default {namespaced: true,state: () => ({profile: null}),mutations: {SET_PROFILE(state, payload) {state.profile = payload}},actions: {async fetchProfile({ commit }) {const res = await api.getProfile()commit('SET_PROFILE', res.data)}}
}// 组件中调用
this.$store.dispatch('user/fetchProfile')

3.2 持久化存储方案

// 使用vuex-persistedstate
import createPersistedState from 'vuex-persistedstate'export default new Vuex.Store({plugins: [createPersistedState({key: 'vuex_storage',paths: ['user.profile'],storage: window.sessionStorage})],modules: {user}
})

存储方案对比

方案容量限制安全性生命周期
localStorage5MB永久
sessionStorage5MB会话期间
Cookie4KB可设置过期时间
IndexedDB250MB+永久

四、自定义指令与渲染控制

4.1 权限控制指令实现

// 注册全局指令
Vue.directive('permission', {inserted(el, binding) {const { value } = bindingconst permissions = store.state.user.permissionsif (!permissions.includes(value)) {el.parentNode && el.parentNode.removeChild(el)}}
})// 使用示例
<button v-permission="'delete'">删除</button>

4.2 渲染函数与JSX

// 普通模板
<template><div :class="wrapperClass"><slot name="header"></slot><ul><li v-for="item in items">{{ item }}</li></ul></div>
</template>// 等价渲染函数
export default {render(h) {return h('div', {class: this.wrapperClass}, [this.$scopedSlots.header(),h('ul', this.items.map(item => h('li', item)))])}
}// JSX写法
export default {render() {return (<div class={this.wrapperClass}>{this.$scopedSlots.header()}<ul>{this.items.map(item => <li>{item}</li>)}</ul></div>)}
}

五、项目最佳实践

5.1 错误监控集成

// 全局错误处理
Vue.config.errorHandler = (err, vm, info) => {console.error(`Error: ${err.toString()}\nInfo: ${info}`)Sentry.captureException(err)
}// 异步错误捕获
window.addEventListener('unhandledrejection', event => {event.preventDefault()console.error('Unhandled promise rejection:', event.reason)
})

5.2 性能监控方案

// 使用Performance API
const perfData = {dns: performance.timing.domainLookupEnd - performance.timing.domainLookupStart,tcp: performance.timing.connectEnd - performance.timing.connectStart,ttfb: performance.timing.responseStart - performance.timing.requestStart,domReady: performance.timing.domContentLoadedEventEnd - performance.timing.navigationStart
}// 发送监控数据
axios.post('/perf-log', perfData)

关键性能指标

指标优秀值可接受值需优化值
DNS查询<50ms<100ms>200ms
TCP连接<100ms<300ms>500ms
首字节(TTFB)<200ms<500ms>1s
可交互时间<2s<3s>5s

http://www.dtcms.com/a/406443.html

相关文章:

  • 专业定制网站开发上海手机网站建设价格
  • 《postman》软件下载_《postman》安装包下载_《postman》安装教程下载_《postman》网盘下载
  • 双模更超模!飞利浦双模办公娱乐显示器27E2N5900RW优雅登场!
  • TDengine 聚合函数 HYPERLOGLOG 用户手册
  • 威海网站优化公司济南简单的网站制作
  • 书法网站开发的前景西部数码网站管理助手2
  • 使用rabbitmq发送消息时消息体转换报错
  • rabbitmq分布式事务
  • vue动态插槽 #[i] 和 v-slot:[i] 对于Prettier的区别
  • EasyGBS如何构建全域覆盖的应急管理与安全生产解决方案?
  • 【数据结构OJ】BFS算法的可视化:二叉树“层序遍历”
  • RabbitMQ:在Linux上安装RabbitMQ
  • 大数据毕业设计选题推荐:基于Hadoop+Spark的全球能源消耗数据分析与可视化系统
  • 从避障到实时建图:机器学习如何让无人机更智能、更安全、更实用(附微型机载演示示例)
  • ui做的好的网站专业的深圳网站建设公司哪家好
  • 最简单的 Web 打印方案:用 5 分钟上手 web-print-pdf(npm 包)
  • 深度学习在自动驾驶上应用(二)
  • OpenLayers地图交互 -- 章节十二:键盘平移交互详解
  • Unity 透视摄像机视野适配不同分辨率的屏幕
  • 可持续金融的新范式:拆解欧盟ESG监管体系及其全球影响力
  • 【数据保护】一种安全高效的全匿踪纵向联邦学习方法
  • 阿里云物联网平台seo站外优化平台
  • 网站开发软件 手机网站做app有什么意义
  • WorldSimBench: 迈向作为世界模拟器的视频生成模型——论文解读
  • 嵌入式 - 内核驱动1 - 配置linux驱动
  • 工作中学习自己的Qt知识误区-Version3
  • C#连接达梦(DM)数据库
  • 服务器独立显卡可以亮机但进不了系统怎么办
  • 超高密度2kW GaN基低压电机驱动器的设计
  • 「日拱一码」100 机器学习辅助定向进化MLDE