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

闵行网站设计wordpress 不收录设置

闵行网站设计,wordpress 不收录设置,泗泾做网站,WordPress微信域名防封源码简易版Vue 实现ref功能 ref功能主要是收集依赖和触发依赖的过程。 export class Dep { // 创建一个类#xff0c;使用时使用new Depconstructor(value) { // 初始化可传入一个值this._val value;this.effects new Set(); //收集依赖的容器#xff0c;使用set数据结构}…简易版Vue 实现ref功能 ref功能主要是收集依赖和触发依赖的过程。 export class Dep { // 创建一个类使用时使用new Depconstructor(value) { // 初始化可传入一个值this._val value;this.effects new Set(); //收集依赖的容器使用set数据结构}get value() { //对value值进行拦截获取时收集依赖到effects中this.depend();return this._val;}set value(val) { // 设置的同时触发所有收集到的依赖this._val val;this.notice()}depend() {if (currentEffect) {this.effects.add(currentEffect); //将依赖放入effects中}}notice() {this.effects.forEach( fn { //触发所有收集的依赖fn();})} }let currentEffect null;export function effectWatch(fn) { //收集依赖的函数所有函数必须用这个函数包裹currentEffect fn;fn()currentEffect null; }// index.js const a new Dep(10); let b 0; effectWatch( () {b a.value 10;console.log(b) }) a.value 20;实现reactive功能 reactive主要是让对象也可以进行依赖的收集这就需要为对象的每一个key创建对应的Dep。 const targetsMap new Map(); // 用map数据结构来存储因为它的key可以是对象export function reactive(raw) { //传入的raw是一个对象return new Proxy(raw, { //拦截raw上所有的get和setget(target, key) {let depMap targetsMap.get(raw); // 为每一个raw创建对应的mapif (!depMap) {depMap new Map();targetsMap.set(raw, depMap);}let dep depMap.get(key); // 给raw上的每一个值创建Depif (!dep) {dep new Dep();depMap.set(key, dep);}dep.depend();return Reflect.get(target, key)},set(target, key, value) {let depMap targetsMap.get(raw);if (!depMap) {depMap new Map();targetsMap.set(raw, depMap);}let dep depMap.get(key);if (!dep) {dep new Dep();depMap.set(key, dep);}const result Reflect.set(target, key, value)dep.notice();return result;}}) }//test const user reactive({age: 10 }) let nextAge 0; effectWatch( () {nextAge user.age 1;console.log(nextAge); }) user.age;简易版Vue雏形 使用上面的reactive和effectWatch功能可以实现miniVue的雏形 import { effectWatch, reactive } from ./core/index.js;const App {render(context) {effectWatch(() {document.querySelector(#app).textContent ;const element document.createElement(div);const text document.createTextNode(nihao);const text1 document.createTextNode(context.obj.count);element.append(text);element.append(text1);document.querySelector(#app).append(element)})},setup() {const obj reactive({count: 1})window.obj objreturn{obj}} }App.render(App.setup()) //通过在console中输入obj.count的值修改视图优化 将代码抽离effectWatch在框架中调用视图的清空和append也在框架中调用 export function createApp(rootComponent) {return {mount(rootContainer) {const setupResult rootComponent.setup();effectWatch(() {rootContainer.textContent ;const element rootComponent.render(setupResult);rootContainer.append(element);})}} }export const App {render(context) {const element document.createElement(div);const text document.createTextNode(nihao);const text1 document.createTextNode(context.obj.count);element.append(text);element.append(text1);return element;},setup() {const obj reactive({count: 1})window.obj objreturn {obj}} }优化并使用虚拟Dom 在上面的代码中每次都会更新所有节点需要进行优化只更新变化的节点 将节点关键信息转化成一个对象。props是一个对象代表节点上的attrschildren是一个数组可以有多个 export function h(tag, props, children) {return {tag,props,children} }在App中 import { reactive, h } from ./core/index.js;export const App {render(context) {return h(div, {}, [h(p, {}, nihao), h(p, {}, context.obj.count)])},setup() {const obj reactive({count: 1})window.obj objreturn {obj}} }此时获取的element只是一个对象需要将其映射成真实的Dom 映射真实Dom 依次处理tag props 和children把他们变成真实的节点 function createElement(tag) {return document.createElement(tag); } function patchProps(el, key, prevValue, nextValue) {el.setAttribute(key, nextValue); } export function mountElement(element, root) {const { tag, props, children } element;const el createElement(tag);for (const key in props) {const val props[key];patchProps(el, key, null, val);}if (typeof children string) {const textNode document.createTextNode(children);el.append(textNode)} else if (Array.isArray(children)) {children.forEach((v) {mountElement(v, el)})}root.append(el)}
http://www.dnsts.com.cn/news/91066.html

相关文章:

  • 进行网站开发 如何搭建环境河北省承德市兴隆县建设局网站
  • 网站规划与设计期末大作业怎么做wordpress 轮播
  • 公司想建个网站怎么弄天津网站建设制作系统
  • 乌海市建设工程网站湖南营销推广网站多少费用
  • 福州企业建站系统珠海品牌网站建设
  • 更改网站名字网站建设西班牙语
  • saas电商建站系统深圳网站建设找智恒网络
  • 网站转微信小程序开发wordpress 安装文件
  • 河北邯郸做网站的公司织梦网站被挂马怎么处理
  • 网站建设的设计思路桂林市内旅游必去景点
  • 高端设计网站制作凡客诚品网站地址
  • 做精神科网站山东进一步优化
  • 大气的企业网站源码无锡网络公司排名
  • 中国国家住房和城乡建设部网站首页延吉网站建设多少钱
  • 网站备案做网站要转移吗建站之星好不好
  • 南京在线网站制作2017年做那个网站致富
  • 中国建设信息港网站制作wordpress静态首页
  • wordpress缓存加速抖音seo点击软件排名
  • 鸿鑫建设集团有限公司网站广告公司名字大全20000个
  • 网站建设方案书要写吗广州手机软件开发定制
  • 做seo时网站更新的目的北京哪里有网站建设设计
  • 广州建网站多少钱资阳seo
  • 河南城市建设网站门户网站什么意思
  • 做网站应该先从什么地方开始网站建设酷万网络
  • 深圳建网站一般多少钱如何建设企业网站ppt
  • dedecms 资源类网站珠宝网站建设公司
  • 自助建站 知乎免费发链接的网站
  • php网站如何攻击短视频营销概念
  • 佛山做企业网站北京软件外包公司
  • 开网站做网站.net电商网站开发设计