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

汉服网站设计目的学编程哪个机构好

汉服网站设计目的,学编程哪个机构好,网站建设服务预算,雇人做淘宝网站多少钱前言 上一篇文章介绍了vue/composition-api是什么#xff0c;以及为什么要用#xff0c;现在来系统地解析一下 vue/composition-api 的实现原理#xff0c;希望可以加深对其工作机制的理解。 老规矩先分享下AI评价#xff1a;对vue/composition-api实现原理的介绍整体上非…前言 上一篇文章介绍了vue/composition-api是什么以及为什么要用现在来系统地解析一下 vue/composition-api 的实现原理希望可以加深对其工作机制的理解。 老规矩先分享下AI评价对vue/composition-api实现原理的介绍整体上非常详细和准确展示了核心代码以及关键逻辑这为理解其工作机制提供了很好的分析。 核心代码分析 install 引入vue/composition-api时需要手动通过Vue.use()来调用该插件的install所以我们看看安装时到底做了什么 export function install(Vue: VueConstructor) {setVueConstructor(Vue)mixin(Vue) }这里最重要的其实是mixin函数定义了在beforeCreate钩子中去执行初始化 构建props和上下文ctx对象执行setup函数 export function mixin(Vue: VueConstructor) {Vue.mixin({beforeCreate: functionApiInit,mounted(this: ComponentInstance) {afterRender(this)},beforeUpdate() {updateVmAttrs(this as ComponentInstance)},updated(this: ComponentInstance) {afterRender(this)},})function functionApiInit(this: ComponentInstance) {const vm thisconst $options vm.$optionsconst { setup, render } $optionsconst { data } $options// wrapper the data option, so we can invoke setup before data get resolved$options.data function wrappedData() {// 在data周期时进行setup函数的执行initSetup(vm, vm.$props)return data || {}}}function initSetup(vm: ComponentInstance, props: Recordany, any {}) {const setup vm.$options.setup!// 构造ctx对象有以下key// slots: 组件的插槽,默认为 {}// root: 组件的根实例// parent: 组件的父实例// refs: 组件的 ref 引用// listeners: 组件的事件监听器// isServer: 是否是服务端渲染// ssrContext: 服务端渲染的上下文// emit: 组件的自定义事件触发函数const ctx createSetupContext(vm)const instance toVue3ComponentInstance(vm)instance.setupContext ctx// 通过Vue.observable对props进行响应式监听def(props, __ob__, createObserver())} }ref ref函数可以把一个普通的值转成响应式的数据。它返回一个可变的ref对象,对象上挂载了一个.value属性,我们可以通过这个.value属性读取或者修改ref的值。 其本质还是基于reactive来实现的响应式只不过做了一个前置的get、set封装源码如下 export function ref(raw?: unknown) {// ref的本质其实还是调用的reactive// 然后通过 get/set 方法操作这个对象的值来实现对 ref 值的跟踪和响应const value reactive({ [RefKey]: raw })return createRef({get: () value[RefKey] as any,set: (v) ((value[RefKey] as any) v),}) }createRef最后还是基于Object.defineProperty export function proxy(target: any,key: string,{ get, set }: { get?: Function; set?: Function } ) {Object.defineProperty(target, key, {enumerable: true,configurable: true,get: get || noopFn,set: set || noopFn,}) }reactive 底层基于Vue.observable来建立响应式监听Vue.observable 在 Vue2 和 Vue3 中的实现方式有所区别而已 export function reactiveT extends object(obj: T): UnwrapRefT {// 基于Vue.observableconst observed observe(obj)setupAccessControl(observed)return observed as UnwrapRefT }computed computed函数用来创建一个计算属性它根据依赖进行缓存和懒执行。 构建get、set函数通过vue的Watcher对象进行监听绑定。 export function computedT(getterOrOptions: ComputedGetterT | WritableComputedOptionsT ): ComputedRefT | WritableComputedRefT {const vm getCurrentScopeVM()let getter: ComputedGetterTlet setter: ComputedSetterT | undefinedgetter getterOrOptions.getsetter getterOrOptions.setlet computedSetterlet computedGetterconst { Watcher, Dep } getVueInternalClasses()let watcher: anycomputedGetter () {if (!watcher) {watcher new Watcher(vm, getter, noopFn, { lazy: true })}if (watcher.dirty) {watcher.evaluate()}if (Dep.target) {watcher.depend()}return watcher.value}computedSetter (v: T) {if (setter) {setter(v)}}return createRefT({get: computedGetter,set: computedSetter,},!setter,true) as WritableComputedRefT | ComputedRefT }watch watch函数用于侦听特定的数据源,并在回调函数中执行副作用。 底层是通过Vue.$watch来实现的 // 底层是通过Vue.$watch来实现 function createVueWatcher(vm: ComponentInstance,getter: () any,callback: (n: any, o: any) any,options: {deep: booleansync: booleanimmediateInvokeCallback?: booleannoRun?: booleanbefore?: () void} ): VueWatcher {const index vm._watchers.length// ts-ignore: use undocumented optionsvm.$watch(getter, callback, {immediate: options.immediateInvokeCallback,deep: options.deep,lazy: options.noRun,sync: options.sync,before: options.before,})return vm._watchers[index] }toRefs toRefs 可以把一个 reactive 对象的属性都转成 ref 形式。 底层是一个个遍历key去调用toRef然后基于createRef来保留响应式能力 export function toRefT extends object, K extends keyof T(object: T,key: K ): RefT[K] {if (!(key in object)) set(object, key, undefined)const v object[key]if (isRefT[K](v)) return vreturn createRef({get: () object[key],set: (v) (object[key] v),}) }生命周期 生命周期其实是一个临时覆盖 // 利用 Vue 的选项合并策略(option merge strategies), // 通过给组件实例的 $options 注入自定义的生命周期hook函数,来override原有的生命周期选项。// 生命周期hook函数需要通过 getCurrentInstance() 获取当前活跃的组件实例, // 并在执行回调前通过 setCurrentInstance()绑定实例,在回调执行完毕后恢复之前的实例。export const onBeforeMount createLifeCycle(beforeMount) export const onMounted createLifeCycle(mounted) export const onBeforeUpdate createLifeCycle(beforeUpdate) export const onUpdated createLifeCycle(updated) export const onBeforeUnmount createLifeCycle(beforeDestroy) export const onUnmounted createLifeCycle(destroyed) export const onErrorCaptured createLifeCycle(errorCaptured) export const onActivated createLifeCycle(activated) export const onDeactivated createLifeCycle(deactivated) export const onServerPrefetch createLifeCycle(serverPrefetch)
文章转载自:
http://www.morning.mknxd.cn.gov.cn.mknxd.cn
http://www.morning.zrlms.cn.gov.cn.zrlms.cn
http://www.morning.nwpnj.cn.gov.cn.nwpnj.cn
http://www.morning.hqbnx.cn.gov.cn.hqbnx.cn
http://www.morning.mxhgy.cn.gov.cn.mxhgy.cn
http://www.morning.msgcj.cn.gov.cn.msgcj.cn
http://www.morning.tdmr.cn.gov.cn.tdmr.cn
http://www.morning.jcxqc.cn.gov.cn.jcxqc.cn
http://www.morning.hkswt.cn.gov.cn.hkswt.cn
http://www.morning.24vy.com.gov.cn.24vy.com
http://www.morning.hqrkq.cn.gov.cn.hqrkq.cn
http://www.morning.pakistantractors.com.gov.cn.pakistantractors.com
http://www.morning.smygl.cn.gov.cn.smygl.cn
http://www.morning.bzlsf.cn.gov.cn.bzlsf.cn
http://www.morning.pbsfq.cn.gov.cn.pbsfq.cn
http://www.morning.srndk.cn.gov.cn.srndk.cn
http://www.morning.bsgfl.cn.gov.cn.bsgfl.cn
http://www.morning.wqmpd.cn.gov.cn.wqmpd.cn
http://www.morning.ai-wang.cn.gov.cn.ai-wang.cn
http://www.morning.schwr.cn.gov.cn.schwr.cn
http://www.morning.rhgtc.cn.gov.cn.rhgtc.cn
http://www.morning.psgbk.cn.gov.cn.psgbk.cn
http://www.morning.fmkbk.cn.gov.cn.fmkbk.cn
http://www.morning.jtdrz.cn.gov.cn.jtdrz.cn
http://www.morning.bnrnb.cn.gov.cn.bnrnb.cn
http://www.morning.yqsq.cn.gov.cn.yqsq.cn
http://www.morning.nxbsq.cn.gov.cn.nxbsq.cn
http://www.morning.rnjgh.cn.gov.cn.rnjgh.cn
http://www.morning.dnbkz.cn.gov.cn.dnbkz.cn
http://www.morning.fyxtn.cn.gov.cn.fyxtn.cn
http://www.morning.yfnhg.cn.gov.cn.yfnhg.cn
http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn
http://www.morning.tqrbl.cn.gov.cn.tqrbl.cn
http://www.morning.kbdrq.cn.gov.cn.kbdrq.cn
http://www.morning.xbnkm.cn.gov.cn.xbnkm.cn
http://www.morning.jqswf.cn.gov.cn.jqswf.cn
http://www.morning.gwjqq.cn.gov.cn.gwjqq.cn
http://www.morning.pkmcr.cn.gov.cn.pkmcr.cn
http://www.morning.bzbq.cn.gov.cn.bzbq.cn
http://www.morning.ymtbr.cn.gov.cn.ymtbr.cn
http://www.morning.ssxlt.cn.gov.cn.ssxlt.cn
http://www.morning.hmqwn.cn.gov.cn.hmqwn.cn
http://www.morning.qnkqk.cn.gov.cn.qnkqk.cn
http://www.morning.xjpnq.cn.gov.cn.xjpnq.cn
http://www.morning.dddcfr.cn.gov.cn.dddcfr.cn
http://www.morning.ykbgs.cn.gov.cn.ykbgs.cn
http://www.morning.xbmwh.cn.gov.cn.xbmwh.cn
http://www.morning.hrzhg.cn.gov.cn.hrzhg.cn
http://www.morning.yskhj.cn.gov.cn.yskhj.cn
http://www.morning.fyxr.cn.gov.cn.fyxr.cn
http://www.morning.nlysd.cn.gov.cn.nlysd.cn
http://www.morning.qcygd.cn.gov.cn.qcygd.cn
http://www.morning.knlgk.cn.gov.cn.knlgk.cn
http://www.morning.cfynn.cn.gov.cn.cfynn.cn
http://www.morning.ykwbx.cn.gov.cn.ykwbx.cn
http://www.morning.dfqmy.cn.gov.cn.dfqmy.cn
http://www.morning.phlrp.cn.gov.cn.phlrp.cn
http://www.morning.xnnxp.cn.gov.cn.xnnxp.cn
http://www.morning.fssmx.com.gov.cn.fssmx.com
http://www.morning.ydxwj.cn.gov.cn.ydxwj.cn
http://www.morning.fnfhs.cn.gov.cn.fnfhs.cn
http://www.morning.bncrx.cn.gov.cn.bncrx.cn
http://www.morning.ddgl.com.cn.gov.cn.ddgl.com.cn
http://www.morning.clbgy.cn.gov.cn.clbgy.cn
http://www.morning.fjntg.cn.gov.cn.fjntg.cn
http://www.morning.txtzr.cn.gov.cn.txtzr.cn
http://www.morning.mhmcr.cn.gov.cn.mhmcr.cn
http://www.morning.bnrff.cn.gov.cn.bnrff.cn
http://www.morning.gywxq.cn.gov.cn.gywxq.cn
http://www.morning.knswz.cn.gov.cn.knswz.cn
http://www.morning.xczyj.cn.gov.cn.xczyj.cn
http://www.morning.mjats.com.gov.cn.mjats.com
http://www.morning.gwdkg.cn.gov.cn.gwdkg.cn
http://www.morning.qphgp.cn.gov.cn.qphgp.cn
http://www.morning.qbrdg.cn.gov.cn.qbrdg.cn
http://www.morning.qnjcx.cn.gov.cn.qnjcx.cn
http://www.morning.cwzzr.cn.gov.cn.cwzzr.cn
http://www.morning.cnqwn.cn.gov.cn.cnqwn.cn
http://www.morning.qcwrm.cn.gov.cn.qcwrm.cn
http://www.morning.yxnfd.cn.gov.cn.yxnfd.cn
http://www.tj-hxxt.cn/news/256722.html

相关文章:

  • 旅游网站系统设计与开发网络营销推广与策划第二版答案
  • 东方网站建设网站建设行业广告语
  • 网站设计一般多长时间期刊类网站建设
  • 网站后台编辑器内容不显示wordpress完整模板下载
  • 网站建设都分几个阶段城阳城市规划建设局网站
  • 女性做网站很有名的网站建设的切片是什么
  • 深圳建设网站公司简介wordpress widget修改
  • 做购物网站那个好wordpress阿里云插件
  • 学院网站建设服务招生宣传潍坊市作风建设年活动网站
  • 做策划有帮助的网站外发加工费用会计处理
  • 电商网站开发系列周易起名网唯一官网免费
  • 广东个人网站备案网红营销模式分析
  • 如何查看网站是否被k魔兽做宏网站
  • 百度快照网站怎么做做文案选图片素材的网站
  • 公司免费网站模板万户做的网站安全吗
  • 网站建设做网站wordpress -editor
  • 效果图网站有哪些WordPress要学多久
  • 最好的外贸网站建设小程序 网站建设 app 开发
  • seo优化网站建设公司ppt成品免费下载的网站
  • 我是做化工回收的做哪个网站比较好前端技术包括哪些
  • 洛阳网站的优化广州定制网站建设方案书
  • wordpress建站方向软件开发文档工具
  • 设计本官方网站电脑版网站首页在哪个文件夹
  • 公司网站模板大全一级a做片性视频网站
  • 中国城乡建设部官网佛山市企业网站seo联系方式
  • 宁波高端网站开发小米发布会直播入口
  • 上海网站定制价格低网站标题堆砌关键词
  • 网站开发员工结构做网站 需要了解什么
  • 网站设计为什么要域名在征婚网站上认识做期货
  • 网站下载视频方法微博图片怎么做外链到网站