Vue3源码解析,打造自己的Vue3框架,领悟尤大思维精髓|无秘更新中第13章百度网盘下载点击快速获取相关资源
Vue3源码解析,打造自己的Vue3框架,领悟尤大思维精髓|无秘更新中第13章课程介绍(A001013):
这不是一个高+ p c j B ]冷、不接地气的源码课!而是一个从开发者实际工作角度出发,结合 Vue 3 的设计机制,通过产出一个精简版 Vu} 3 % Ve 3 框架的方式,让大家可以站在 Vue– ; % ; 0 X 2 P o 3 源码设计者的角度,俯视所有业务场景,彻B P q底搞清楚每一行 Vue 代码背后,? O &Vue 都做了什么!课程的核心设计原则:让更多的人,以更) m h _ t O a轻松的方式,学习Vue 3 源码!
课程目录:
文件目录:
Vue3源码解析,打造自己的VuK 2 Q * 2 a Te3框架,领悟尤大思维精髓无秘q ` `更新中第13章 |
│ ├& 9 Z q W .─vue-ne, r u Uxt-mini-master.z# v 5 / 0 9 g ~ip 83.37KB |
│ ├─{10}–第1# + @ , ) / X y0章runtime运行时-构建renderB V q ] Ler渲染器 |
│ │ ├─[10.10]–10-10框架实现:删除元素,ELEMENT节点的卸载操作.mp4 17.6MB |
│ │ ├─` n o } a h _ $ yv m \ v 3 1 6 o F[10.11]–10-11源码阅读:; . Cclass属性和其他属性c l T的区分挂载.mp4 78.46MB |
│ │ ├─[10.12]–10-12深入属性挂a L C P z载:HTMLAttributes和DO| x L g ^ SMPr.mp4 64.82MB |
│ │ ├─[10.13]–10-13框架实现:区分处理ELEMENT节点的各种属性挂载.mp4 28.85MB |
│ │ ├─[10.14]–10-14源码阅读:ELEMENT节点下,style属性的挂载和.mp4 65.08MB |
│ │ ├─[10.15]–10-15框架实现:EN H C MI 0 d d L . S ; M f zZ $ \ ?LEMENT节~ v q ( 9 8 ]点下,style属性的挂载和.mp4 31.6MBT o s n r P D |
│ │ ├─[10.16]–10-16源码阅读:ELEMENT节点下,事件的挂载和S _ h $ = 1 1 \ z更新.mp4 111R O 7 * S gM I $ m 2 m T m.88MB |
│ │ ├─[10.17]–10-17深入事件, : A 0 7 = O更新:vueeventinvokers_ ` _ d U p.mp4 51.[ c * u C V z69MB |
│] c ~ │ ├P r Y─[10.18]–10-18框架实现:ELEMENT节点下,事件的挂载和更新.mp4 36 D P * m z5B {I s i E K d + – U j V 9 + g vN c F 5 * 6 9 S.16MB |
│ │ ├─[10.19]–18 2 U ~ D # Q y0-19局部总结:ELEMENT节点的挂载、更新、props打.mp4 9.96o = O e ]MB |
│ │ ├─[10.1]–10-1前言.mp4 14.02MB |
│ │ ├n y F C Y 8 $ d─V I d[10.20]–R ` * T cQ % ! / ? D1k } f s E 20-20源码/ { ~ & # , R (阅读:renderer渲染器下,Text节点的挂载.mp4 36.9) p H +8MB |
│ │ ├─[10.21]–10-21框架实现:{ ) H ] ~ Brenderer渲染器下,Tex+ U 3 9 [t节点的挂载.mp4 28.38MB |
│B Q { ,E a u + H 1 $ M P – 0 Y │ ├─[10.22]–10-22源码阅读:renderer渲染器下,Comment节点.mp4 15.33MB |
│ │ ├─[10.23]–10-23框架实现:renderer渲染器下,Cod 7 & :mment节点.mp4 17.67MB |
│ │ ├─[10.24]–10-24源码阅读:renderer渲染器下,Fragment节.mp4 39.62MB |
│ │ ├─[10.25]–10-25框架实现:renderer5 6 M渲染器下,Fragment节.mp4 41.5MB |
│ │ ├─[10.26]–10-26总结.x @ q R % l Fmp4 16.34MB |
│ │ ├─[10.2]–10-( b O k2源码阅读:初见rX f N 4 [ f ` Dender函数,ELEMENT节点的挂载.mp4 111i – V 1 ? f.01MB |
│ │ ├─[10.3]–10-3框架实现:构建renderer基本架构.mp4 8d | u = J y 9 { 59.53MB |
│ │ ├─[10.4]–10-4框U M M I W t _ I架` l ( 9 b L 3 U实现:基于renderer完成ELEMENT节点挂载.mp4 4= nu r 7 y 5 1 K i3.49MB |
│ │ ├─[10.5]–10-5框架实现:r 0 f h l合并渲染架构,得到可$ 8 H G t用的render函数.mp4 49.61MB |
│ │ ├─[10.6]–10-6源码阅读:渲染_ a ; ^ P更新,ELEMENT节点的更新操作.mp4.ts 7.94Mv R u L 7 3B |
│ │ ├─[10.7]–10-7f T n x框架实现:渲染更新,ELEMENT节点的更新实现.mp4 92.84MB |
│ │ ├─[10.8]–10-8源码阅读:新旧节点不同元素时,ELEMENT节点的更新操.mp4 39.81MB |
│ │ └─[10.9]–10-9框架实现:处理新旧节点不同元素时,ELEMENT节点的更.mp4 27.28MB |
│ ├─{11Y I / ` g l Q}–第11章runtime运行时-A m [ _ ( |组件的设计原理与渲染方案 |
│ │ ├─O B ( M L p[11.10]–{ + # N11-10框架实现:组件生命周期回调处理逻辑.mp4 41.97MB |
│ │ ├─[11.11]–11-11源码阅读:生命回调钩子中访问响应性数据.mp4 40.16MB |
│ │ ├─[11.12]–11-12框架实现:生命回调钩子中访问响应性数据.mp4 12.7MB |
│ │ ├─[11.13]–11-13源码阅读:响应性数据改变,触发组件的响Z s {应性a X ) W D变化.mp4 54.83MB |
│ │ ├─[11.14]–11-14框架实现:响应性q R P 3 2 l r数据改变,触发组件的响应性变化.mpQ a y @4 19.28MB |
│ │ ├─[11.15]–11-15源码阅读:comD ! ppS v ; U ]os( 5 A I ]itH = ! .ionAPI,setup$ 7 3 i d 9 B函数.mp4 59.47MB |
│ │ ├─[11.16]–1A [ 2 A |1-16框架实现:compositionAPI,setup函数.mp4 27.46MB |
│ │ ├─[11.17]–11-17总结.mp4 15.83MB |
│ │ ├─[11.2]–11-2源码阅读:无状态基础组件挂载{ g . v K p 3逻辑.mp4 89.6MB |
│ │ ├─[11.3]–11-3源码阅读:无状态基v $ ) Q 3 Z础组件挂v Zl 1 ` ` m 6 E ^ Y [载逻辑.m! ! c y G K ~ cp4 69.93MB |
│ │ ├─[11.4]–11-4框架实现:完成无状态基础组件的挂载逻辑.mp4 67.R & ` ) ` – ` _51MB |
│ │ ├─[11.5]–11-5源码阅读:无状态基础组件更新逻辑.mp4 37.13Me T d SB |
│ │ ├─[11.6]–11-6局部总结:无状态u \ i {组件的挂载、更m $p t G P B E c | 0 Z /新、卸载总结.mp4 11.98MB |
│ │ ├─[11.7]–11-7源码阅S C g \ j读:有状.c T g X d n ) R态9 { T S 5 h的响b – / N应性组件挂载逻辑.mp4 85.56MB |
│ │ └─[11.8]–11-8框架实现:有状态的响应性组件挂载逻辑4 b – x.mp4 18.53MB |
│ ├─{12}–第12章runtS F d G ` L A rime运行时-diff算$ m l e法核心实现 |
│ │ ├─[12.10]–12ok 9 9 M d g D A s S A k-1X G 9 g ~ L k v0框a C 1 r o U R =架实现:场景四:旧节= v W点多于新节点时的di_ O A ] # jff比对./ 7 c = F W Gmp4 8.61MB |
│ │5 n $ : g t { ├─[12.11]–12-11局部总结:前W D ? F m四种diff场景的总结与乱序场景.mp4 33MB |
│ │ ├─[12.12]–12-12r G J 6前置知识:场; 4 n景五:最长递增子序列.mp4; h * 61.49MB |
│ │ ├─[12.13]–12-13源码逻辑:场景五:求解最长递增子序列.mp4 1W + * x k J71.24MB |
│ │ ├─[12.14]–12-14源I R 0 _ $ Y *码阅读:场景五:乱序t : I R / ) X v下的diff比Z 3 u E 1对.mp4 108.96MB |
│ │ ├─[12.15]–12-15源码阅读:场景五:乱序下的@ p 4diff比对.) ~ U Bmp4 150.53MA Z ( F + UB |
│ │ ├─[12.16]–12-16框架实q M r | & S M V 7现:k % h $ \ s x 2 O场景D [ a R & i w A r五:乱序下的diff比对.mp4* { = N p 36.09MBb b 3 H \ \ |
│ │ ├j W 9 A F ` s─[12.17]–12-17总结.mp4 30.05MB |
│z b 0 * ( │ ├─[12.1]–12, } # 7 J ` r ,-1前言.mp4 19.85MB |
│ │ ├─[12.2]–12-2前置知识:VNode虚拟节点key属性的作用.mp4 24~ ( O w u # D.86MB |
│ │ ├─[12.3]–12-3源码阅读J U o:场景一:自前向后的diff对比.mp4 74.85MB |
│ │ ├─[12.4]–16 } a g i =2-4框架实现:场景一:自前向后的diff对比.mp4 40.08MB |
│ │ ├─[12.5]–12-5源码阅读:场景二:\ $ Xz r ` P P j % L 8自后向前的diff对比.mp4 36.24MBf w b \ D 8 |
│ │ ├i a h # ) S M─[12.6]–12-6框架实现:场景F g E z !二:+ 0 g ! B f 2自后向前的diff对比.q h q f e imp4 15.8p ^ 5 { ,8MB |
│ │ ├─[12.7]–12-7源码阅读:场景三:新节点多余旧节点时的d$ @ V ) p ! tiff比对.mp4 6? % T 6 ~ d R3.07MB |
│ │ ├─[12.8]–12-8d ) ) \ T R !框架T o j v + z D h !实现:场景三:新节点多余旧节点时的diff比对.mp4 1_ ^ \ , J5.98MB |
│ │ └─[12.9]–12-9源码阅读:场景四:旧节点E w L多于新节点时的diff比对.mp4 21.17MB |
│ ├s d _ V ^─{13}–第1A f Y – @ = Z m T3章compiler编译器-编译时核心设计原则iclass= |
│ │ ├─[13.1]–1+ [ + q ( P3-1前言.mp4 41.58MB |
│ │ ├─[13.2]–13-2模板编译的核心流程.mp4 18.82MB |
│ │ ├─l { f \[13.3]–13-3抽象语法树-AST.mp4 30.02MB |
│ │ ├─[13.4]–13-4AST转化为JavaScriptAST,获取codege.mp4 37.14MB |
│ │ ├─[13.5]–13-5JaF ) } z e hvaSy ) – T !cripq U n L ? W 8 =2 o m U x ] ! z F ytA1 g – s + ,x D H & ? 1 S Q / KST生成rende9 $ ~ z B U } !r函数# U @ N D N代码.I I Bmp4 28.23MB |
│ │ └─[13.6]–13-6总结.mp4 6.96MB |
│ ├─{1}–第1章课程导读 |
│ │ └─[1.1]–1-1课程导读.mp4 50.9MB |
│ ├─{2}–第2章框架设计前瞻-框架设计中的一些基本概念 |
│ │ ├─u o s Q l # b ![2.10]–2-10运行( i / O时+编译时.mp4 102.79MB |
│ │ ├─[2.11]–o s \ B G 8 b q g2-E B * ^11什么是副作用.mp4 24.52MB |
│ │ ├─[2.12]–2-12Vu4 L 0 I w h , He3框架设计概述.h : R p 8 ymG % A ~ A – 8 |p4 29.N 3 # 5 M 9 ] ~ ?48D H l Q ` z { h fMB |
│ │ ├─[2.13]–2-U s 0 ,13扩展:所谓良好的`TypeScr& J Q R 1ipt`支持,是如何提供.mp4 39.22MB |
│ │ ├─[2.14]–2-14总结.mp4a ) m v U T 3 N 6.53MB |
│ │ ├m ; 4 $ S $─[2.1]–# ( X 7 ~ ` } _ Q2-1前n 5 | T H 3言.m\ F [ Z + r | Sp4 11.99MB |
│ │ ├─[2.2]–2-2编? i \ r f L程范式之命令式编程.mp4 40.577 X JMB |
│ │ ├─[2.3]–2-3编程范式之声明式编程.mp4 26.71MB |
│ │ ├─[2.4]–2-4命令式7 f c f wVS声明式.mp4 43.33MB+ . S 9 ; 1 |
│4 w ] H 6 O PY 5K 7 : g g P , } G & m m D _ │ ├─[2.5]–2-5企业应用的开发与设计原则.mp4 43.37MB |
│ │ ├─[2.6]–2-6为什么说框架的设计过程其实是一个不断取舍的过n ; ` f . n 6 p程?.mp4 36.33MB |
│ │ ├| S _ U ! c B─[2.7]–2-7.vue中的html是真实的html吗?.mp4 31.13MB |
│ │ ├─[2.8]–2-8什么是运行时?.mp4 102.11MB |
│ │ └─[2.9]–2-9什么是编译时?.mp4 44.92MB |
│ ├─{3}–第3章Vue3源u % r f 9 # E X码结构-搭S | l g s建框架雏形 |
│ │ ├─[3.10]–3-10模块Q b 0打包器:rollup.mp4 76.31M. F p DB |
│ │ ├─[3.11]–3-11初见框架雏形:配置路径映射.mp4 36.09MB |
│ │ ├─[3.12]–3-& D ] x x12总结.mp4 9.22MB |
│ │ ├─[3.1]–3-1前言.mp4 9.05MB |
│ │ ├─[3.2]–= | | S c3-2探索源码设计:Vue3源码设计大解析.mp4 72.1, a g4MB |
│ │ ├─[3.3]–3-3创建测试实例:在Vue源码中运行测试实例.mp4 53.94MB |
│ │ ├─[3.4]–3-4跟踪解析运行行为:为# U 3 Ovue开启SourceMap{ t @ K.mp4 58.2MB |
│ │ ├─[3.5]–3-5授人以鱼:如何针对源码进行debugger.mp4 32O w ( J u? d 8 b ~ 3 K d { $ b.46MB8 ^ C C i C f |
│ │ ├─[3.6]–+ ! & ` Z f K3-6授人以渔:\ @ f P 4 k如何阅读源码.mp4 43.76MB |
│ │ ├─[3.7]–3-7开始搭建自己的框架:创建vue-next-mini.mp P f 8 # r/ T H A 1 a j q }p4 41.11MB |
│ │ ├─[3.8]–3-; 8 , z I8为框架进行配置:导k 8 S N入ts.mp4 47.7MB |
│ │ └─[3.9]–3-9引入代码格式化工具:prettiers 8 |让你的代码结构更加规范.mp4 36.45MB |
│ ├─{4}–第4章响应系统-响应系J ^ q : ,统的核心设计原则 |
│ │ ├─[4.1]–4-1前言.mp4 12.52MB |
│ │ ├─[4.2]–4-2JS的程序性.mp4n x Q w | Q S 34A I 9 # 7 K =.07MB |
│ │ ├─[4.3]–4-3如何让你的程序变得更加&am, ) , L 1 Y ; Fp;ldquo;聪明&& z z B t ` \;rdquo;?.mp4 3[ D ~ % ~4S V 1 e , 9 g.03MB@ ? R |
│ │ ├─[4.4]–4-4vue2的响应性核心API:ObjY ` + ` sect.definePr.mp4 49.66s E G q z Z O G XMB |
│ │= 5 b h 5 ├─[4.5]–4-5Obu o e 4 w : z P rjectB m K.define\ , i j ZProperty在设计层– 6 t _ r Y a 2的缺陷.mp4 55.816 U + =MB |
│ │ ├─[4.6]–f { Z ) X t =4-6vue3的响应性核心API:proxy.mp4% E W f 91.13M? 6 H ~ O Z ) P 3B |
│ │ ├─[4.7]–4-7proxy的最佳拍档:^ 8 | n CReflr J 9 b \ ~ect&am= Z p } _ * ` !p;mdash;拦截js.mp4 93.54MB |
│ │ └─[4.8]–4-8总结.mp4 11.95MB |
│ ├─{5}–第5章响应系) F r Q p 7统-初见reactivity模块 |
│ │ ├─5-13 功能升级:响应数据对应多个 effect.mp4 25.43MB |
│ │ ├─5-2 源码阅读:rP D { g e a 2 ) heactive 的响应性,跟踪 Vu& , f f – V ^ $e 3 源码实现逻辑(1).mp4 112.3MB |
│A ! b } X P z f { │ ├─5-8 框架实现:构建 effect 函数,生成 Rea} KA O n R y ^ 7 n H S 4 * TctiveEffect 实例.mp4 36.76MB |
│ │ ├─[5.10]–5-10框架实现:构建track依赖收集函数.mpd t _4 35.13MB |
│ │x M $ E ├─[5.11]–5-3 \ A 0 ( \ c 7 T11框架实现:构建trigger触发依赖.mp4 23.48MB |
│ │ ├─[5.12]–5-18 ( { (2总结:单一依赖的reactive.mp4 24.52MB |
│C } d u G 6 N Z │L O 2 4 e 0 3 ├─[5.14]–5-14框架实现:构建Dep模块,处理一对多的依赖关系.mp4 52.5^ [ z W 6 h B9MB |
│ │ ├─[5.15]–5-_ 1 415reactive函数的局限性.mp4I d _ d . I . j [ 33.65MB |
│ │ ├─[5.16]–5-16总结.mp4 9.28MB |
│ │ ├─[5.1]–5-1前言.mp4 12.15MB |
│ │ ├─[5.3]–5-3源码阅读:reactive的响应性,跟踪Vue3源码实现逻.mp4 99.74MB |
│ │ ├─[5.4]–5-4框架实现:Q M j T 3 | R构建reacq } y r z . btive函数,获取proxy实例.mp4 75.88MB |
│ │ ├─[5.5]–5-5框架实现:什么是Weak; H C v ] Q S r nMap?它和Map有什么区别?.mp4 58.2M. $ k %B |
│ │ ├─[5.6]–5-6框架实现:createGetter&8 u @;amp;&y 9 $ . z te I / 4 H R U D } lamp;cr.` * Vmp4N s x Rl N G 7 g ! . ~ u = j 0 g 54.97MB |
│ │ ├─[5.7]–5-7热更新+ 5 0 f | y ? – v的开发时:提升开发体验.mp4 18.96MB |
│ │ └─[5.9]–5-9框架实现:N x P s , w !track&&trigger.mp4 35.43MB |
│ ├─{6}–第6章响应系统-ref的响应性 |
│ │ ├─[6.1]–6-1前言7 m _ x P W.mp4 6.96MB |
│ │ ├─[6.2]–6-2源码阅读:ref复y d! 9 – .杂数据类型的响应性(1).mp4 94.06( C `MB |
│ │ ├─h n v : 9 %[6.3]–6-3源码阅1 ! c 0读:ref复y c @ 0 s o % #杂数据类型的响\ ) B 0 / ,应性(2).mp4 77.24MB |
│ │ ├─[6.4]–] B D }6-4Z & 9 S ! y框架实现:ref函数-构建复杂数据类型的响应性.mp4 67.94I 0 2 u 4 ~ (MB |
│ │ ├─[6.5]–X p c x6J . I-5总结:ref复杂数据类型的响应性.mp4 12.6~ N I I , V e4MBy Y K |
│ │ ├─[6.6]–6-6源码阅读:ref简单数据类型的响应性.mp4 66p P / H M.03MB |
│ │ ├─[6.7]–6-7框架实现:ref函数-构建简单数据类型的响应性.mp4 32.85MB |
│ │ ├─[6.8]–M A b 1 @6-80 i t a o j f #总结:ref简z C y # t D /单数据类型响b i , .应性.mp4 16.9MB |
│ │ └─[6.9]–6-9总结.mp4 16.08MB |
│[ | J = ├─{7}–第7章响应系统-watch&&computed |
│ │ ├─[7.10]–7-10框架实现:深入scheduler调度系统实现机H y U q Z , ; P #制.mp4 14} L e % * v B 4 n9.89MB |
│ │ ├─[7.11]–1 w n + , &7-11框架实现| 1 Q m t f a c n:初步实现watch数据监听器.mp4 112.2MB |
│ │ ├─[7.12]–x k z } R7-12问题分析:watch下的依赖收集O t o Z F d原则.mp4 31.W O A * ! ( Y23MB |
│ │ ├─[7.13]–7-13框架实现:完成watch数据监听器的依赖收5 y 4集.mp4 21.1e $ [ ^ $ +9MB |
│ │ ├─[7.14]–7-14总结:watch数据w V 3 t a _ 5侦听器.mp4 9.5MB |
│ │ ├─[7.15]–7-15总结.mp4 12.5MB |
│ │ ├─[7.1]–7-1开篇.mp4V y Z v 7.29MB |
│ │ ├─[7.2]–7-2源码阅读:k , Gcomputed的响应性,跟踪Vue3源码实现逻.mp4 99P 7 N w t.96MB |
│ │ ├─[7.3]–7-3源码阅读:computed的响应性,跟踪Vue3源码实U 6 , $ [ y Y ; X现逻.mp4 102.3y ] L A $ t ,1MB |
│b x 3 y n q j │ ├─[7.4]–7-4框架实现:构建ComputedRJ Q 8 =9 u T { s f 5efImpl,读取计算属性.mp4 62.08MB |
│ │ ├─[7.5]–7-5框架实现:comput~ W wed的P 8 / ]响应性:初见调度器,处理脏的– , 9状.mp4 59.36MB |
│ │ ├─[7.6]–7-6框架实现:computed的缓存性.mp4 148.65MB |
│ │ ├─[7.7]–7-7总结:computed计算属性.mp4 8.57MB |
│ │ ├─[7.8]–7-8源码阅读:Q E w m / A O E \响应性的数据监听器watch,跟踪源码实现逻辑(.m\ A 1 RE – b w 2 ] + Mp4 120.34MB |
│ │h N 4 / + E r 2 ^ └─[7.9]–7-9源码阅读:响应性的数据监听器watch,跟踪源码实现逻辑Q F – S P y u h y(.mp4 100.35MB |
│ ├─{9}–第9章runtime运行时-构建h函数,生成V7 r 1node |
│ │ ├─[9.10]–9-10框架实现:实现剩余场景Text、Comment、Frag.mp4 17.6MB |
│ │ ├─[9.11]–9-11源码阅读:对class和style的增强% K z ^ h s R M 5处理.mp4 44+ I d h m # d.94MB |
│ │ ├─[9.12]–9-12框架实现{ S ^ : & ! &:完成t ` \虚拟节点下的class和style的增强.mp4 30.9MM) i \ { b F 6 k % ZB |
│ │ ├─[9.13]–9-13总结.mp4 12.5p 9 W F , oMB |
│ │ ├─[9.1]–9-1前言.? + Z $ s 0mp4 10.05MB |
│ │ ├─[9.2]–9-2阅读源码:初见h函数,跟踪Vu0 C 7 Me3源码实现基础逻辑(1).mp4 56.96MB |
│ │ ├─[9.4]–9-4框架实现:构建h函数,处理ELEMENTd W P | n i R g+TEXTCHIt { } [ [ 0 1 V.mp4 100.96MB |
│O ) 6 M # h F │ ├─[9.5]–9-5源码阅读:h函数,跟踪EL] , # n e o O k TEMENT+ARRAYCHIL.mp4 66.14MB |
│ │ ├─[9.6]–9-6框架实现:构建h函数,处理ELEM3 * ? yENT+ARRAYCH.mp4 2g F 84.06MB |
│ │ ├─[9.7]–9-7r 5 m 4 n源码阅读8 N – – V:h函数,组件的本质与对6 k # ` a \ k w w应的VNode.mp4 55.66MB |
│ │ ├─[9.8]–9-8框架实现:处理组件t 0 L ~ i J M P ?的VNode.mp4 31.94MB |
│ │ └─[9.9]–9-9源码阅读:h函数@ / p 0 a E ] 0@ K C,跟踪Text、CoA 9 )j = M Y 4 O p D Hn Y w R 9 X H Y C { F Pm$ Z / ^ment、Fragm.mp4 43.24MB |
https://www.1 1 P t51zxl c O 6 f * b Glm.com/zyjn/65052.html?ref=9400