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

做外贸推广的网站有哪些wordpress页面编辑

做外贸推广的网站有哪些,wordpress页面编辑,外管局网站收汇如何做延期,做网站 需要什么商标1.命令式和声明式框架 命令式框架关注过程 声明式框架关注结果#xff08;底层对命令式的DOM获取和修改进行了封装#xff09; 2.vue2 Object.defineProperty()双向绑定的实现 bodydiv idappinput typetext /h1…1.命令式和声明式框架 命令式框架关注过程 声明式框架关注结果底层对命令式的DOM获取和修改进行了封装 2.vue2 Object.defineProperty()双向绑定的实现 bodydiv idappinput typetext /h1/h1button按钮/button /div /body script// vue2实现双绑const input document.getElementsByTagName(input)[0]const h1 document.getElementsByTagName(h1)[0]const btn document.getElementsByTagName(button)[0]let data { text: }// input框输入数据h1数据和text一致实现点击按钮时h1 标签数据和input框数据同时更改Object.defineProperty(data, text, {get() {return data[text];},set(value) {// 获取到值后将h1后的内容设置为texth1.innerText value;input.value value;return true;}});input.oninput function (e) {data.text e.target.value;}btn.onclick function () {data.text 你好} /script 3.同样页面Vu3实现 new Proxy() // vue3实现双绑const input document.getElementsByTagName(input)[0]const h1 document.getElementsByTagName(h1)[0]const btn document.getElementsByTagName(button)[0]let data { text: }let obj new Proxy(data, {get(target, property) {return target[property]},set(target, property, value) {h1.innerText value;input.value value;return true;}})input.oninput function (e) {obj.text e.target.value;}btn.onclick function () {obj.text 你好} 4.响应式数据的基本实现 响应式数据的关键是拦截对象属性的设置和读取操作 const data { text: } function effect () {document.body.innerText data.text } 5. vue2与vue3响应式数据实现区别 vue2的实现当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项Vue 将遍历此对象所有的 property并使用Object.defineProperty() 把这些 property 全部转为 getter/setter。vue3的实现当我们从一个组件的 data 函数中返回一个普通的 JavaScript 对象时Vue 会将该对象包裹在一个带有 get 和 set 处理程序的Proxy 中 6.vue3 proxy的简单实现响应式数据拦截 // 初始数据 const data { text: } // 存储副作用函数的桶 const bucket new Set() // 对数据进行代理 const obj new Proxy(data, {get(target, key) {bucket.add(effect)return target[key]},set(target, key, newVal) {target[key] newValbucket.forEach(fn fn())return true} })function effect () {document.body.innerText obj.text }effect()setTimeout(() {obj.text 你好 }, 1000) 7.简单实现中出现的问题 思考一下 这一段代码的问题。 1. 副作用函数的名称被写死2. 没有建立副作用函数和目标字段之前明确的关系 副作用函数的名称被写死——解决 名称写死问题真实情况下副作用函数不可能只有一个那如果有多个函数时每个函数执行都会调用一个副作用函数。比如设置obj.a  2,同样会调用set方法中的bucket.forEach(fn  fn())方法。 通用一个副作用作用函数将执行DOM修改的函数以闭包形式回调函数传入副作用函数这样每次返回的都不是同一个函数 let activeEffectfunction effect(fn) {activeEffect fnfn() }effect(() {document.body.innerText obj.text })const obj new Proxy(data, {get(target, key) {if (activeEffect) {bucket.add(activeEffect)}return target[key]},set(target, key, newVal) {target[key] newValbucket.forEach(fn fn())return true} }) 没有建立副作用函数和目标字段之前明确的关系——解决 以上代码对每个属性都绑定了同一个副作用函数实际上真实需要的时修改text时调用他自己的函数修改a时又调用a对应的函数 解决 使用Map键值数据结构分两层进行存储副作用函数将每个数据对象对应一个map的键一个数据对象下不同属性又存储到一个Map数据下这个map的值则存储的副作用函数Set形式存使用时通过获取对象的map数据对象下的对应属性key每个对象的key的值的set数据针对每个属性操作的副作用函数并进行遍历执行即可 const obj new Proxy(data, {get(target, key) {console.log(activeEffect, activeEffect)// 没有副作用函数容错处理 直接returnif (!activeEffect) return target[key]// 判断桶中是否已经存在key与target的关联关系let depsMap bucket.get(target)// 创建一个新的Map结构与 target 关联if (!depsMap) {bucket.set(target, (depsMap new Map()))}// 判断当前Map数据中是否存在key与effect的关联关系let deps depsMap.get(key)// 不存在的话 则新建一个Set 与 key关联if (!deps) {depsMap.set(key, (deps new Set()))}// 最后将当前激活的副作用函数添加到bucket中deps.add(activeEffect)return target[key]},set (target, key, newVal) {target[key] newVal// 获取bucket下对应的数据const depsMap bucket.get(target)if (!depsMap) return// 根据key 获取副作用的执行函数const effects depsMap.get(key)// 执行副作用函数effects effects.forEach(fn fn())} })effect(() {document.body.innerText obj.text }) effect(() {document.title obj.a }) 8.完全实现——我的测试 const data { text: 这是obj.title, a:vue响应式数据的实现原理 }// 存储副作用函数的桶const bucket new Map()// 存储副作用函数的变量let activeEffect;// 对数据进行代理const obj new Proxy(data, {get(target, key) {// 设置副作用函数到map数据的桶中// 判断不存在activeEffect直接返回if (!activeEffect) return target[key];// 存在activeEffect时将副作用函数设置到桶中let targetMap bucket.get(target); //target对象存在才能判断key是否存在(targetMap既是bucket的值targetMap new Map()又是keyMap的键的定义)if (!targetMap) {bucket.set(target, (targetMap new Map()));}let keyMap targetMap.get(key); // keyMap既是targetMap的值又是if (!keyMap) {targetMap.set(key, (keyMap new Set()))}keyMap.add(activeEffect); //副作用函数最终是存在Set结构里面的return target[key]},set(target, key, newVal) {target[key] newVal;//获取桶里面的对象Map的key的map集合的值即所有的副作用函数进行循环执行let targetMap bucket.get(target);if (!targetMap) return;let effects targetMap.get(key);effects.forEach(fn fn())return true}})function effect(fn) {// 将函数赋值给activeEffect数据劫持到activeEffect有值时会将其设置到bucket存储副作用的桶中当拦截到数据更改时再获取对应函数并执行activeEffect fn;fn();}// 副作用函数执行一次effect(() {document.body.innerText obj.text})effect(() {document.title obj.a})
http://www.hkea.cn/news/14352225/

相关文章:

  • 吴江市中云建设监理有限公司网站长春房产网官网
  • 免费1级做爰片在线观看网站手机app开发软件免费
  • 网站做产品的审核网站手机版管理链接
  • 做炭化料的网站vi设计费用
  • 找素材的网站北京网站模板
  • 服务器网站带宽体育新闻最新消息今天
  • 做网店有哪些网站怎么把自己的网站上传到百度
  • 备案的网站换空间有什么推广的平台
  • 大型网站seo增城做网站公司
  • 备案不关闭网站的方法企业服务网站
  • 网站建设学习视频请人做网站需要注意什么
  • 网站编程用什么语言好网站栏目划分怎么做
  • 打开这个网站深圳品牌做网站
  • 沈阳做购物网站电话html5响应式网站开发教程
  • wordpress 多站点 404工程公司排名
  • 国外社交网站设计欣赏建设工程施工合同专属管辖
  • 百度不收录网站做网站老板嫌弃太丑谁的锅
  • 秦皇岛做网站汉狮网络appui界面设计
  • 成都建立网站营销设计无锡哪家做网站好
  • 做金融类网站建网站需要买些什么
  • 超值的扬中网站建设给个网址兄弟
  • 网投网站怎么做谷歌关键词推广怎么做
  • 网站可以自己做服务器么怎样制作3d立体效果图
  • 上海公司做网站网站 后台
  • ps网站子页怎么做的怎么用cms做网站
  • 成都网站的优化罗夫曼三大社区模式
  • 贵阳商城网站建设电影网站建设
  • 网站seo推广方案wordpress 侧边栏
  • 中国建设网站齐齐哈尔市如何做线上销售
  • 郑州响应式网站简历网