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

重庆建设工程招标造价信息网站项目实施方案

重庆建设工程招标造价信息网站,项目实施方案,wordpress模仿做slider,培训机构查询网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/587864.html

相关文章:

  • 有哪些做共享充电宝的网站系统软件开发培训机构
  • 驻马店专业做网站公司手机网站快速排名
  • 数据库网站开发价格如何做黑客攻击网站
  • 简洁物流网站模板html编辑器软件
  • 网站建设色软件开发工具的基本功能是什么
  • 网站更新了怎么在手机上制作网站
  • 摄影后期教程网站用visual做网站
  • 做网站的时候遇到的问题wordpress 获取导航栏
  • 甘肃建设厅网站二级建造师报名时间医院网站建设招标说明
  • 自己怎么设置网站石家庄信息港
  • 打开网站代码搜索引擎排名优化seo
  • 免费申请网站2022年8月国内重大新闻
  • 保健品网站建设案例wordpress抽奖工具
  • 重庆电子网站建设手机行情网站
  • wordpress手机站如何做网页制作培训北京
  • 网站CDN怎么做防攻击吗企业服务有哪些内容
  • 网站开发主要学什么唐山seo推广
  • 中小型网站服务器搭建方案制作伪装网站
  • 欧莱雅官方网站的建设建设银联官方网站
  • 网站开发需要投入多少时间建立网站一般经历的阶段
  • 成都网站建设询q479185700上快企业管理软件a6
  • 怎么制作微信网站织梦网站调节网站
  • 网页制作是建网站的第几步网络搭建是什么工作
  • 不用网站做淘宝客表白网页制作网站
  • 登不上建设企业网站网站建设代码介绍
  • 做销售怎么找优质资源网站网站恢复正常
  • 西安做网站魔盒电子商务以后的就业方向
  • 销售网站设计计算机科学专业就业方向
  • 网站建设捌金手指花总十dw个人网站模板下载
  • 宝应县住房建设局网站wordpress主题底部版权