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

上海知名网站建设公司帮企业建网站

上海知名网站建设公司,帮企业建网站,广告软文范例,电商网站设计多少钱Vue 高级技巧深度解析 mindmaproot(Vue2高级技巧)组件通信EventBusprovide/inject$attrs/$listeners性能优化虚拟DOM优化函数式组件按需加载状态管理Vuex模块化持久化存储严格模式高级指令自定义指令动态组件异步组件渲染控制作用域插槽渲染函数JSX支持一、组件通信的进阶之道 …Vue 高级技巧深度解析 mindmaproot(Vue2高级技巧)组件通信EventBusprovide/inject$attrs/$listeners性能优化虚拟DOM优化函数式组件按需加载状态管理Vuex模块化持久化存储严格模式高级指令自定义指令动态组件异步组件渲染控制作用域插槽渲染函数JSX支持一、组件通信的进阶之道 1.1 跨层级通信方案对比 #mermaid-svg-rrMvBTPp82nInEAi {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-rrMvBTPp82nInEAi .error-icon{fill:#552222;}#mermaid-svg-rrMvBTPp82nInEAi .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-rrMvBTPp82nInEAi .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-rrMvBTPp82nInEAi .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-rrMvBTPp82nInEAi .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-rrMvBTPp82nInEAi .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-rrMvBTPp82nInEAi .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-rrMvBTPp82nInEAi .marker{fill:#333333;stroke:#333333;}#mermaid-svg-rrMvBTPp82nInEAi .marker.cross{stroke:#333333;}#mermaid-svg-rrMvBTPp82nInEAi svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-rrMvBTPp82nInEAi .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-rrMvBTPp82nInEAi .cluster-label text{fill:#333;}#mermaid-svg-rrMvBTPp82nInEAi .cluster-label span{color:#333;}#mermaid-svg-rrMvBTPp82nInEAi .label text,#mermaid-svg-rrMvBTPp82nInEAi span{fill:#333;color:#333;}#mermaid-svg-rrMvBTPp82nInEAi .node rect,#mermaid-svg-rrMvBTPp82nInEAi .node circle,#mermaid-svg-rrMvBTPp82nInEAi .node ellipse,#mermaid-svg-rrMvBTPp82nInEAi .node polygon,#mermaid-svg-rrMvBTPp82nInEAi .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-rrMvBTPp82nInEAi .node .label{text-align:center;}#mermaid-svg-rrMvBTPp82nInEAi .node.clickable{cursor:pointer;}#mermaid-svg-rrMvBTPp82nInEAi .arrowheadPath{fill:#333333;}#mermaid-svg-rrMvBTPp82nInEAi .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-rrMvBTPp82nInEAi .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-rrMvBTPp82nInEAi .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-rrMvBTPp82nInEAi .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-rrMvBTPp82nInEAi .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-rrMvBTPp82nInEAi .cluster text{fill:#333;}#mermaid-svg-rrMvBTPp82nInEAi .cluster span{color:#333;}#mermaid-svg-rrMvBTPp82nInEAi div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-rrMvBTPp82nInEAi :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} props props provide inject 父组件 子组件 孙子组件 EventBus 通信方案性能测试 方法100组件通信耗时内存占用适用场景Props/Events120ms低父子组件直接通信EventBus85ms中任意组件间低频通信Vuex45ms高中大型应用状态管理provide/inject65ms低跨多层级组件通信 1.2 高阶属性传递 // 父组件 templatechild 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优化技巧 // 优化前 templatedivdiv v-foritem in list :keyitem.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-persistedstateexport 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-permissiondelete删除/button4.2 渲染函数与JSX // 普通模板 templatediv :classwrapperClassslot nameheader/slotulli v-foritem 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查询50ms100ms200msTCP连接100ms300ms500ms首字节(TTFB)200ms500ms1s可交互时间2s3s5s
http://www.zqtcl.cn/news/320825/

相关文章:

  • 企业自建站案例网站基础知识域名5个点
  • 咸宁建设网站海口市网站建设
  • 认识电子商务网站建设技术网站交换链接怎么做?
  • 定制商城网站建设全球搜索引擎排名2021
  • 徐州百度网站快速优化做网站视频图片加载不出来
  • 网站被host重定向处理浙江网新股吧
  • asp国外网站什么页游好玩
  • 高端简约30平米办公室装修广州搜索seo网站优化
  • 海口的网站建设公司wordpress二次元极简主题
  • 南京快速建站公司国家网站域名
  • 兰州装修公司哪家好网站seo推广员招聘
  • 郑州网站推广 汉狮网络易企秀类似的软件
  • 做外单网站成都网页制作公司排名
  • 成都优化网站关键词搜索引擎有哪些平台
  • 福建百川建设有限公司网站郑州手机软件开发公司
  • 盐城企业做网站多少钱88建网站
  • 南京网站制作报价wordpress主题 yusi
  • 北京建网站已备案网站新增接入
  • 做搬家服务网站问卷调查的目的房产网签是什么意思
  • 江苏品牌网站设计美团后台管理系统登录
  • 没有备案的网站会怎么样深圳的互联网公司排名
  • 阿里云 建设网站北京百度竞价托管公司
  • 怎么样做长久的电影网站安卓手机应用市场
  • 网站建设账户搭建济南网络优化哪家专业
  • 宜兴城乡建设局网站wordpress调用logo
  • 让他人建设网站需要提供的材料女生读电子商务好就业吗
  • 北大荒建设集团网站国内开源代码网站
  • 高端企业网站要多少钱中企动力z云邮箱登录
  • 网站建设视频教程百度云那种自行提取卡密的网站怎么做
  • 网站外链建设与维护网站建设客户调研表