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

购买域名后怎么做网站滨州做网站建设价格

购买域名后怎么做网站,滨州做网站建设价格,大学生html5网页大作业,wordpress访客量文章目录 前言✅ 举例说明✅ 在 Vue 响应式系统中的鲁棒性✅ 总结一句话:✅ 1. **忽略非对象类型(null、number、boolean 等)**原因: ✅ 2. **避免重复代理(支持 isReactive() 和 WeakMap 缓存双保险)**原因…

文章目录

  • 前言
    • ✅ 举例说明
    • ✅ 在 Vue 响应式系统中的鲁棒性
    • ✅ 总结一句话:
    • ✅ 1. **忽略非对象类型(null、number、boolean 等)**
      • 原因:
    • ✅ 2. **避免重复代理(支持 isReactive() 和 WeakMap 缓存双保险)**
      • 原因:
    • ✅ 3. **防止循环引用死递归:递归时也判断是否已经代理**
    • ✅ 4. **兼容 `toRaw()` 还原原始对象**
    • 🧩 最终鲁棒版 `reactive.ts` 核心结构如下:
    • ✅ 附加:`isObject` 工具函数
    • ✅ 小结


前言

“鲁棒性”(Robustness) 是一个软件工程术语,意思是:

程序在面对异常情况、边界条件或不完美输入时,仍能稳定、正确运行的能力。


✅ 举例说明

情况鲁棒性体现
传入已经是代理的对象不重复代理,直接返回
出现循环引用不死递归,正确引用自己
用户传入 null/undefined/非对象不报错,直接返回原值或做容错处理
属性不存在返回 undefined 而不是抛异常

✅ 在 Vue 响应式系统中的鲁棒性

你的 reactive() 方法如果没有处理好这些情况:

  • 传入已经代理过的对象又再次代理,会导致多层代理或性能浪费;
  • 遇到循环引用没做缓存,会死栈;
  • getset 时没做 null 检查,会报错。

这些都说明鲁棒性不够。


✅ 总结一句话:

鲁棒性 = 出错时不崩溃,边缘条件下仍合理运行。

一个高质量的框架/库,必须具备良好的鲁棒性。

下面在现有 reactive() 实现上,增加 4 项关键的鲁棒性增强,确保 mini-vue 面对各种异常/边界情况都能稳定运行。


✅ 1. 忽略非对象类型(null、number、boolean 等)

if (!isObject(target)) {return target
}

原因:

非对象是不能被 Proxy 代理的,否则直接报错。


✅ 2. 避免重复代理(支持 isReactive() 和 WeakMap 缓存双保险)

if ((target as any)[ReactiveFlags.IS_REACTIVE]) {return target // 已是响应式,直接返回
}if (reactiveMap.has(target)) {return reactiveMap.get(target)
}

原因:

即使外部不小心再次调用 reactive(),也应返回已生成的代理对象。


✅ 3. 防止循环引用死递归:递归时也判断是否已经代理

if (isObject(result)) {return reactive(result)
}

需要进一步增强为:

if (isObject(result)) {// 优先使用 WeakMap 缓存中的代理const existingProxy = reactiveMap.get(result)return existingProxy ? existingProxy : reactive(result)
}

✅ 4. 兼容 toRaw() 还原原始对象

你已有:

if (key === ReactiveFlags.RAW) {return target
}

再配合:

export function toRaw(value: any): any {return value && (value as any)[ReactiveFlags.RAW] || value
}

这样你可以任意判断、恢复响应式对象。


🧩 最终鲁棒版 reactive.ts 核心结构如下:

export function reactive<T extends object>(target: T): T {if (!isObject(target)) {return target}if ((target as any)[ReactiveFlags.IS_REACTIVE]) {return target}if (reactiveMap.has(target)) {return reactiveMap.get(target)}const proxy = new Proxy(target, {get(target, key, receiver) {if (key === ReactiveFlags.IS_REACTIVE) return trueif (key === ReactiveFlags.RAW) return targetconst result = Reflect.get(target, key, receiver)track(target, key)if (isObject(result)) {const existingProxy = reactiveMap.get(result)return existingProxy ? existingProxy : reactive(result)}return result},set(target, key, value, receiver) {const result = Reflect.set(target, key, value, receiver)trigger(target, key)return result}})reactiveMap.set(target, proxy)return proxy
}

✅ 附加:isObject 工具函数

function isObject(val: any): val is object {return val !== null && typeof val === 'object'
}

✅ 小结

防御策略解决的问题
非对象返回原值防止 Proxy 报错
重复代理检测避免多层代理 / 死递归
IS_REACTIVE 检查允许 isReactive() 判定状态
RAW 支持toRaw() 安全还原原始对象
WeakMap 缓存优化性能 + 支持循环引用

http://www.dtcms.com/wzjs/575343.html

相关文章:

  • 广州企业建设网站沈阳专业网站建设公司
  • 企业网站建设课件黑人做爰视频免费网站
  • 广州做啊里巴巴网站多少钱北京企业网站建设方案
  • 制作个人网页图文教程seo短视频网页
  • 山东城市建设学院网站大连网站快速排名提升
  • 小程序开发流程详细常德百度seo
  • 创业做网站需要哪些一手房发帖网站怎样做
  • 行业门户网站模板下载it外包公司值得去吗
  • 建网站哪家最好wordpress数据库发布文章
  • 虚拟空间做网站最专业的网站建设价格
  • 建设数字官方网站简单网页html模板
  • 建官方网站的公司深圳建网站哪家公司好
  • 企业网站是企业在互联网上进行网络营销北京高端网站建设图片大全
  • 手机网站滑动效果梅州市网站制作
  • apache添加多个网站两个wordpress同步
  • 一个app一年可以赚多少优化营商环境 提升服务效能
  • 货代到哪个网站开发客户wordpress备案显示
  • 四川建设部网站官网公关公司是做什么的
  • 塔城地区建设工程信息网站呼和浩特做网站的公司
  • 网站ui外包设计院项目管理系统
  • wordpress站内查找wordpress怎么设置静态主页
  • 免费做海报的网站wordpress 漏洞
  • 在百度做推广需要网站吗网络公司优化关键词
  • osCommerce购物网站架设全攻略wordpress 主页模版
  • 创造网站无锡企业网站制作公司
  • 保定市网站建设建筑工程网签合同周末可以签吗
  • 用vs做的网站怎么打开吗晋江wap站是什么意思
  • 企业站seo案例分析网站点击软件排名
  • 介休网站建设自己做短视频的网站
  • filetype ppt 网站建设网站做系统叫什么软件