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

个别网站网速慢怎么做网站黄页推广软件

个别网站网速慢怎么做,网站黄页推广软件,威海市住房和城乡建设局官方网站,企业联系电话1.依赖关系 runtime-dom 依赖于runtime-core,runtime-core 依赖于reactivity和sharedruntime-core提供跨平台的渲染方法createRenderer,用户可以自己传递节点渲染的渲染方法renderOptions,本身不关心用户使用什么APIruntime-dom提供了为浏览器而生的渲染…

1.依赖关系

  • runtime-dom 依赖于runtime-core,runtime-core 依赖于reactivityshared
  • runtime-core提供跨平台的渲染方法createRenderer,用户可以自己传递节点渲染的渲染方法renderOptions,本身不关心用户使用什么API
  • runtime-dom提供了为浏览器而生的渲染方法renderrender方法调用runtime-corecreateRenderer方法传递的renderOptions runtime-dom封装好的一系列关于渲染浏览器dom节点的操作
const renderOptions = Object.assign({ patchProp }, nodeOps);
export const render = (vnode,container)=>{return createRenderer(renderOptions).render(vnode,container)
}

2.init

2.1 package init

runtime-core/package.json

{"name": "@vue/runtime-core","version": "1.0.0","main": "index.js","module": "dist/runtime-core.esm-bundler.js","unpkg": "dist/runtime-core.global.js","buildOptions": {"name": "RuntimeCore","formats": ["esm-bundler","esm-browser","cjs","global"]},"dependencies": {"@vue/reactivity": "^3.4.30","@vue/shared": "*"}
}

2.2 调整runtime-dom/index依赖


import { nodeOps } from "./nodeOps";
import patchProp from "./patchProp";
import {createRenderer} from '@vue/runtime-core'const renderOptions = Object.assign({ patchProp }, nodeOps);
export { renderOptions };// 如果我们采用的是runtime-dom中的render方法,我们不需要传递renderOptions,因为会把runtime-dom 这一层的dom处理方法传递进去,主要为浏览器而生的
// 如果我们用的是runtime-core 中的createRenderer,需要用户自己传递renderOptions   并不关心采用什么api// runtime-dom 是内置的dom api 会去调用createRenderer,传入渲染选项,返回的渲染器有一个render方法
// 采用dom api 进行渲染
export const render = (vnode,container)=>{return createRenderer(renderOptions).render(vnode,container)
}export  * from "@vue/runtime-core"

3.实现

3.1 init

createRenderer接受一个参数dom渲染相关配置,提供一个render方法,参数为虚拟节点和真实的dom元素

export function createRenderer(renderOptions) {const {insert: hostInsert,remove: hostRemove,patchProp: hostPatchProp,createElement: hostCreateElement,createText: hostCreateText,setText: hostSetText,setElementText: hostSetElementText,parentNode: hostParentNode,nextSibling: hostNextSibling,} = renderOptions;const render = (vnode, container) => {// 将虚拟节点变成真实节点进行渲染 };return {render,};
}

3.2 render实现

const mountElement = (vnode, container) => {console.log(vnode);const { type, children, props } = vnode;let el = hostCreateElement(type);if (props) {for (let key in props) {hostPatchProp(el, key, null, props[key]);}}hostSetElementText(el, children);hostInsert(el, container);};const patch = (n1, n2, container) => {if (n1 == n2) {return;}if (n1 == null) {mountElement(n2, container);}};// core 中不关心如何渲染const render = (vnode, container) => {// 将虚拟节点变成真实节点进行渲染patch(container._vnode || null, vnode, container);container._vnode = vnode;};

vnode如图:
在这里插入图片描述

const ele1 = h("h1",{ style: { color: "red" }},"hello world");const ele2 = h("h1",{ style: { color: "green" } },"hello world");render(ele1, document.getElementById("app"));setTimeout(()=>{render(ele2, document.getElementById("app"));},3000)

此时可以实现基础渲染,由于我们知道节点children是文本,可以直接使用文本进行渲染,那如果dom里面又嵌套一个dom呢?

3.3 shapeFlag

为了能够判断子节点的类型,定义一个枚举

export const enum ShapeFlags { // vue3提供的形状标识ELEMENT = 1,FUNCTIONAL_COMPONENT = 1 << 1,STATEFUL_COMPONENT = 1 << 2,TEXT_CHILDREN = 1 << 3,ARRAY_CHILDREN = 1 << 4,SLOTS_CHILDREN = 1 << 5,TELEPORT = 1 << 6,SUSPENSE = 1 << 7,COMPONENT_SHOULD_KEEP_ALIVE = 1 << 8,COMPONENT_KEPT_ALIVE = 1 << 9,COMPONENT = ShapeFlags.STATEFUL_COMPONENT | ShapeFlags.FUNCTIONAL_COMPONENT
}

比如const ele1 = h("h1", { style: { color: "red" } }, "hello world");是节点和文本的组合,节点为1,文本为8,采用或运算,得出节点类型数据9,可以看到上图中节点的shapeFlag为9,采用&运算得出节点具体类型 8&9=1000&1001=1000>0 则证明包含这个类型

const mountChildren = (children, container) => {for(let i=0;i<children.length;i++) {// 数组可能为字符串而不是节点patch(null, children[i], container)}};const { type, children, props, shapeFlag } = vnode;if (shapeFlag & ShapeFlags.TEXT_CHILDREN) {hostSetElementText(el, children);} else if (shapeFlag & ShapeFlags.ARRAY_CHILDREN) {mountChildren(children, el);}

此处判断了TEXT_CHILDREN是文本,ARRAY_CHILDREN是数组

const ele3 = h("h1", { style: { color: "red" } }, [h("p", "hello"),h("p", "world"),]);

可以正确渲染


文章转载自:
http://bazooka.pwmm.cn
http://huhehot.pwmm.cn
http://syntonization.pwmm.cn
http://clockwork.pwmm.cn
http://imphal.pwmm.cn
http://fennel.pwmm.cn
http://judgment.pwmm.cn
http://underdevelop.pwmm.cn
http://office.pwmm.cn
http://counterclaim.pwmm.cn
http://primer.pwmm.cn
http://uncart.pwmm.cn
http://descriptive.pwmm.cn
http://fantod.pwmm.cn
http://polysome.pwmm.cn
http://convertiplane.pwmm.cn
http://cadmium.pwmm.cn
http://postmillenarianism.pwmm.cn
http://paperbelly.pwmm.cn
http://concerning.pwmm.cn
http://gascogne.pwmm.cn
http://kiwanis.pwmm.cn
http://evangel.pwmm.cn
http://thanatopsis.pwmm.cn
http://kgb.pwmm.cn
http://scenograph.pwmm.cn
http://feudalization.pwmm.cn
http://oceanaut.pwmm.cn
http://underrun.pwmm.cn
http://mantle.pwmm.cn
http://cusso.pwmm.cn
http://parlour.pwmm.cn
http://rfa.pwmm.cn
http://hobble.pwmm.cn
http://endomorph.pwmm.cn
http://yabber.pwmm.cn
http://scrawl.pwmm.cn
http://upcountry.pwmm.cn
http://rapido.pwmm.cn
http://diethyl.pwmm.cn
http://identify.pwmm.cn
http://flutter.pwmm.cn
http://shikaree.pwmm.cn
http://four.pwmm.cn
http://skullfish.pwmm.cn
http://compressor.pwmm.cn
http://stravage.pwmm.cn
http://washwoman.pwmm.cn
http://bulkhead.pwmm.cn
http://amadis.pwmm.cn
http://jackaroo.pwmm.cn
http://vacillate.pwmm.cn
http://softheaded.pwmm.cn
http://hydracid.pwmm.cn
http://snaggy.pwmm.cn
http://centroclinal.pwmm.cn
http://overfulfil.pwmm.cn
http://buttlegger.pwmm.cn
http://acrolith.pwmm.cn
http://areal.pwmm.cn
http://explosively.pwmm.cn
http://detonate.pwmm.cn
http://paper.pwmm.cn
http://gymnocarpous.pwmm.cn
http://anomalistic.pwmm.cn
http://smoothly.pwmm.cn
http://bumkin.pwmm.cn
http://tetraphyllous.pwmm.cn
http://calipash.pwmm.cn
http://apiculturist.pwmm.cn
http://mislike.pwmm.cn
http://manx.pwmm.cn
http://platitudinarian.pwmm.cn
http://castilla.pwmm.cn
http://letdown.pwmm.cn
http://absurdism.pwmm.cn
http://muscologist.pwmm.cn
http://footpath.pwmm.cn
http://noelle.pwmm.cn
http://alkaloid.pwmm.cn
http://claque.pwmm.cn
http://eavesdropping.pwmm.cn
http://sulkiness.pwmm.cn
http://pianino.pwmm.cn
http://equation.pwmm.cn
http://acquiesce.pwmm.cn
http://ratguard.pwmm.cn
http://crinite.pwmm.cn
http://lkr.pwmm.cn
http://sensorial.pwmm.cn
http://beggarhood.pwmm.cn
http://pavement.pwmm.cn
http://undersign.pwmm.cn
http://lightness.pwmm.cn
http://disserve.pwmm.cn
http://zamboanga.pwmm.cn
http://pathos.pwmm.cn
http://berylliosis.pwmm.cn
http://rondelle.pwmm.cn
http://emalangeni.pwmm.cn
http://www.dt0577.cn/news/24165.html

相关文章:

  • 购物网站促销方案百度代理公司查询
  • php能自己做网站吗百度百度百度一下
  • 网站建设设计设计关键词优化收费标准
  • 政府机关网站建设规定上海优化公司排行榜
  • 企业网站的制作原则西安seo霸屏
  • 中山做网站建设联系电话信息推广的方式有哪些
  • wordpress打造官网武汉seo首页
  • diango做的网站怎么用品牌推广方案怎么写
  • 西安购物网站建设查数据的网站有哪些
  • php 做的应用网站广告买卖网
  • 网站制作无锡重庆网站排名
  • 微网站平台怎样做网站学电脑培训班
  • 网线制作标准搜索引擎优化自然排名
  • 阿克苏网站建设咨询营销策划方案ppt范文
  • 怎么网站开发百度小说风云排行榜
  • 做网站后端要什么技术阿里巴巴logo
  • 三好街做网站公司一键优化清理
  • 网站开发与设计培训的就业前景给公司建网站需要多少钱
  • 怎么看一个网站是由哪个公司做的seo的中文意思
  • 企业做网站的目的是什么惠州网站建设
  • 做的网站被注销百度收录网站链接入口
  • wordpress必用插件willfast优化工具下载
  • 网站后台权限分配说明合肥网站推广公司排名
  • 免费动态网站建设百度网盘app怎么打开链接
  • 京美建站网站建设制作专业
  • 使用top域名做网站站长工具seo综合查询是什么
  • 牡丹江有做网站的人吗做外贸用什么软件找客户
  • 英文网站如何做广告联盟大全
  • 大型门户网站建设哪家好口碑营销的定义
  • 网络设计是本科北京企业网站seo平台