不是gpt牛吗,让他给我写个vue响应试的原理出来,写来写去还是重复的代码?

因为我对VUE 的功能用的不多,顶多就是初始化一个绑定,然后ajax请求过来一个绑定,我寻思能不能自己写个简单点的双向绑定。于是有了这些代码!

<div id="app">
    姓名:{{name}}<br/>
    电话:{{phone}}<br/>
    微信:{{weixin}}
</div>

  let data = {
      name:'李大国',
      phone:'13800',
      weixin:'22839202'
  }

  let _data = new Proxy(data,{
      set(target,property,value,reciver){
          data[property] = value;
          console.log('你改了属性')
      },
      get(target,property){
          console.log('你读取了属性')
      }
  })
  let app = document.querySelector('#app')
  let template = app.innerHTML;
  let regex = /\{\{(.*?)\}\}/g
  let matches = Array.from(template.matchAll(regex))
  let html = template;
  matches.forEach((key)=>{
      html = html.replace(key[0],data[key[1]]);
  })
  app.innerHTML = html

这个执行后是没有毛病是可以更新的,问题是我改了data.name属性后模板上不变,原因应该是{{name}} 已经渲染了,在用正则去找,是找不到的。我说给gpt发个消息,他也写不出来。是不是我问的不对。
不是gpt牛吗,让他给我写个vue响应试的原理出来,写来写去还是重复的代码?
文心一言问了,还是这个问题,是我问得不对,还是他们被我带偏了。

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5

原因应该是 {{name}} 已经渲染了,在用正则去找,是找不到的。 你这不是清楚原因嘛, 你直接一开始就把 template 的东西存在变量里, 别每次都从 app.innerHTML 哪里拿不就行了。

9个月前 评论

你需要先聊更多相关的上下文,再让实现

9个月前 评论

大哥的思路有点没看懂 :see_no_evil:

9个月前 评论

给你推荐一本书《Vue.js 设计与实现》,把渲染器和响应式系统的实现掰开了揉碎了给你分析!

file

9个月前 评论

似乎还差点意思,但是也有点样子了:

file

file

9个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!