当前位置:首页>鸿蒙APP>鸿蒙ArkUI开发入门:UI范式状态管理精讲

鸿蒙ArkUI开发入门:UI范式状态管理精讲

  • 2026-04-19 14:32:53
鸿蒙ArkUI开发入门:UI范式状态管理精讲

接触鸿蒙ArkUI开发有一段时间,最开始被状态管理搞得一头雾水——官网罗列了一堆装饰器,从@State到@AppStorage,从V1到V2版本,看着都懂,上手就错:要么状态改了UI不刷新,要么滥用装饰器导致页面卡顿,甚至分不清父子组件间状态该怎么传递。

后来慢慢摸索出一套“先懂逻辑、再记用法、最后练实战”的学习方法,避开了很多新手踩过的坑,也摸清了鸿蒙状态管理的核心技术特点——它不像安卓需要手动调用刷新方法,也不像前端Vue的状态管理那么繁琐,而是以“数据驱动UI”为核心,用简洁的装饰器实现精准、高效的状态联动,尤其适配鸿蒙“一次开发、多端部署”的特性。

这篇博文不照搬官网文档,全程结合我的学习历程,拆解状态管理的核心逻辑、技术特点,分享独家学习技巧,再用实战案例落地,帮新手快速吃透鸿蒙UI范式的状态管理,少走弯路。

一、先搞懂:鸿蒙状态管理的核心逻辑(新手入门第一步,别直接记装饰器)

很多新手学习状态管理,一上来就死记硬背@State、@Link这些装饰器的用法,结果越记越乱,遇到复杂场景还是不会用。我的学习经验是:先理解“为什么需要状态管理”,再记“怎么用”,逻辑通了,用法自然就记住了。

1. 核心本质:UI是状态的“映射”

鸿蒙ArkUI是声明式UI范式,核心逻辑是“UI = f(状态)”——UI界面的样子,是由状态数据决定的,当状态发生变化时,UI会自动同步更新,不需要我们手动操作控件(比如安卓的setText、setVisibility)。

举个最直观的例子:一个点击按钮改变文本的场景,我们只需要定义一个状态变量,绑定到文本组件,点击按钮修改这个变量,UI就会自动刷新文本内容。这就是状态管理的核心价值——解放手动操作UI的繁琐,让开发者专注于数据逻辑

这里要区分一个新手常踩的坑:普通变量和状态变量的区别。只有被装饰器修饰的变量,才是状态变量,才能驱动UI刷新;普通变量哪怕修改了,UI也不会有任何变化(后面会用实操案例验证)。

2. 我的独家学习逻辑:从“范围”分类,拒绝碎片化记忆

官网把状态管理分为V1和V2两个版本,还按功能罗列装饰器,新手很容易混淆。我自己总结了一套“按状态共享范围分类”的学习方法,把所有装饰器归为3类,记起来更清晰,也能快速匹配实战场景:

1组件内状态:只在当前组件(页面)内使用,不与其他组件共享,比如单个页面的计数器、开关状态;

1组件间状态:需要在父子组件、跨层级组件间传递的状态,比如父组件的用户信息,需要传递给子组件展示;

1应用级状态:整个APP全局共享的状态,比如用户登录token、全局主题、语言设置,切换页面也能保持状态一致。

学习顺序建议:先掌握“组件内状态”(最基础、最常用),再学“组件间状态”(实战高频),最后攻克“应用级状态”(复杂场景必备),循序渐进,不贪多求快。

二、鸿蒙状态管理的核心技术特点(区别于安卓/前端,新手必懂)

在学具体用法之前,先搞懂鸿蒙状态管理的技术特点,能帮我们更好地理解设计思路,避免用其他平台的开发思维套用到鸿蒙上。结合我的实操体验,总结了4个核心特点,每一个都结合实际场景说明,好懂不抽象。

1. 装饰器驱动,简洁高效(核心特点)

鸿蒙状态管理的核心是“装饰器”,不需要编写复杂的状态监听逻辑,只需要给变量加上对应的装饰器,就能实现状态与UI的联动。这和安卓的状态管理有本质区别——安卓需要手动调用setState()或invalidate()刷新界面,而鸿蒙通过装饰器自动完成状态监听和UI刷新,代码更简洁,也减少了人为失误。

比如最基础的@State装饰器,只需要一行代码,就能让变量具备响应式能力,这也是鸿蒙状态管理最易用的地方。但要注意:装饰器不是随便用的,不同场景对应不同装饰器,滥用会导致性能问题(后面会讲避坑技巧)。

2. 数据驱动,精准刷新(性能优势)

鸿蒙状态管理采用“精准更新”机制:当一个状态变量发生变化时,框架只会刷新与该状态绑定的UI组件,而不是整个页面。这一点比很多前端框架更高效,也是鸿蒙适配多端(手机、平板、车机)的重要保障——避免不必要的刷新,提升页面流畅度。

举个例子:一个页面有两个文本组件,分别绑定两个不同的@State变量,修改其中一个变量,只有对应的文本组件会刷新,另一个不会动。这种精准刷新机制,在复杂页面(比如列表、表单)中,能显著提升性能。

这里分享一个实操心得:官网建议每个状态变量关联的组件数少于20个,这样能进一步减少不必要的刷新,提升性能。如果多个同级组件需要绑定同一个状态变量,可以把状态绑定到它们的父组件上,减少刷新次数。

3. 版本迭代:V2优于V1,新手优先学V2

鸿蒙状态管理分为V1和V2两个版本,V2是V1的增强版,解决了V1的很多痛点(比如无法深度观测对象、装饰器配合繁琐等)。对于新手来说,直接学习V2版本更高效,不用走V1的弯路。

V2版本的核心优势的是:状态变量独立于UI,支持对象的深度观测和属性级精准更新,装饰器更易用、拓展性更强,能更好地支持组件化开发。如果是老项目用V1版本,且能满足需求,也不用强行切换,新手重点掌握V2即可。

4. 天然支持跨设备同步(鸿蒙特色)

这是鸿蒙状态管理区别于其他平台的核心特色——通过@Distributed装饰器,就能实现跨设备的状态同步,比如手机上修改的主题设置,平板上打开同一个APP,自动同步主题状态,不需要额外编写跨设备通信逻辑。

而安卓的跨设备协同需要依赖第三方框架,开发复杂度高,这也是鸿蒙生态的一大优势。对于新手来说,前期可以先掌握本地状态管理,后续再学习跨设备状态同步,循序渐进。

三、分场景实战:核心装饰器用法(结合我的学习技巧,避坑指南)

结合前面的“范围分类”学习法,这里拆解3类场景的核心装饰器,每一个装饰器都附上“用法+实操案例+避坑点”,都是我实操中总结的干货,比官网的示例更贴合新手需求。

场景1:组件内状态(最基础,必学)

核心装饰器:@State(V2版本,新手首选),还有@Local(非响应式,用于临时数据)。

我的学习技巧:先练“简单交互场景”,比如计数器、开关,感受“状态变、UI变”的逻辑,再记@State的核心规则。

实操案例:计数器(新手入门必练)

arkts                  @Entry                  @Component                  struct CounterDemo {                  // 组件内状态变量:用@State修饰,响应式,修改后UI自动刷新                  @State count: number = 0;                  // 普通变量:@Local修饰,非响应式,修改后UI不刷新(新手对比练习)                  @Local tempCount: number = 0;                  build() {                  Column({ space: 20 }) {                  // 绑定@State变量,会自动刷新                  Text(`响应式计数:${this.count}`)                  .fontSize(24)                  .fontWeight(FontWeight.Bold)                  // 绑定@Local变量,修改后不刷新                  Text(`非响应式计数:${this.tempCount}`)                  .fontSize(24)                  .fontColor('#666')                  // 点击按钮,修改两个变量                  Button('点击计数+1')                  .width(200)                  .height(50)                  .onClick(() => {                  this.count++; // @State变量修改,UI自动刷新                  this.tempCount++; // @Local变量修改,UI无变化                  })                  }                  .width('100%')                  .height('100%')                  .justifyContent(FlexAlign.Center)                  }                  }                  

避坑点(我踩过的坑,新手必看)

1@State变量必须初始化,不能赋值为null/undefined,否则会报错;

1不要把不需要驱动UI的变量用@State修饰(比如临时计算的变量),会增加性能开销;

1修改@State变量时,要直接赋值(比如this.count++),不能修改对象内部属性或数组下标(比如@State obj: {name: 'test'},obj.name = 'new'不会触发刷新,需重新赋值this.obj = {name: 'new'})。

场景2:组件间状态(实战高频,重点掌握)

核心装饰器:@Prop(父→子单向传递)、@Link(父→子双向传递)、@ObjectLink(优于@Prop,无深拷贝,性能更好)。

我的学习技巧:用“父子组件通信”场景练习,明确“单向”和“双向”的区别——@Prop是“子组件只读”,@Link是“子组件可改,且同步回父组件”,@ObjectLink适合子组件不需要修改状态的场景,避免深拷贝带来的性能损耗。

实操案例:父子组件双向通信(修改用户名)

父组件:维护用户名状态,传递给子组件;子组件修改用户名,同步回父组件。

arkts                  // 父组件                  @Entry                  @Component                  struct ParentComponent {                  @State userName: string = '鸿蒙新手';                  build() {                  Column({ space: 20 }) {                  Text(`父组件显示:${this.userName}`)                  .fontSize(24)                  // 子组件:传递@Link双向绑定                  ChildComponent(userName: $userName)                  }                  .width('100%')                  .height('100%')                  .justifyContent(FlexAlign.Center)                  }                  }                  // 子组件                  @Component                  struct ChildComponent {                  // @Link双向绑定,子组件修改会同步回父组件                  @Link userName: string;                  build() {                  Column({ space: 10 }) {                  Text(`子组件显示:${this.userName}`)                  .fontSize(20)                  .fontColor('#FF2196F3')                  Button('修改用户名')                  .width(180)                  .height(45)                  .onClick(() => {                  this.userName = 'ArkUI状态管理学习者'; // 子组件修改,父组件同步更新                  })                  }                  }                  }                  

避坑点(实战高频坑)

1@Prop装饰的变量,子组件修改不会同步回父组件,适合“父传子、子只读”的场景(比如传递标题、配置信息);

1如果子组件不需要修改父组件状态,优先用@ObjectLink代替@Prop,因为@Prop会进行深拷贝,增加性能开销;

1@Link传递时,父组件必须用$变量名(比如$userName),不能直接传递变量值,否则绑定失败。

场景3:应用级状态(复杂场景,按需掌握)

核心装饰器:@AppStorage(全局内存状态,APP重启后丢失)、@StorageLink(全局持久化状态,关机后仍存在)。

我的学习技巧:用“全局主题切换”“用户登录状态”场景练习,理解“全局共享”的逻辑——只要在一个组件修改状态,所有绑定该状态的组件都会同步刷新。

实操案例:全局主题切换(APP内所有页面同步)

arkts                  // 1. 全局状态初始化(可在entryability.ts中初始化)                  AppStorage.setOrCreate('themeColor', '#FFFFFF'); // 初始主题色:白色                  // 2. 页面1:修改主题色                  @Entry                  @Component                  struct Page1 {                  // 绑定全局持久化状态                  @StorageLink('themeColor') themeColor: string = '#FFFFFF';                  build() {                  Column() {                  Text('页面1')                  .fontSize(24)                  Button('切换深色主题')                  .width(200)                  .height(50)                  .onClick(() => {                  this.themeColor = '#1E1E1E'; // 修改全局状态,所有绑定的组件同步刷新                  })                  }                  .width('100%')                  .height('100%')                  .backgroundColor(this.themeColor)                  }                  }                  // 3. 页面2:同步显示主题色                  @Component                  struct Page2 {                  // 绑定同一个全局状态                  @StorageLink('themeColor') themeColor: string = '#FFFFFF';                  build() {                  Column() {                  Text('页面2(同步主题)')                  .fontSize(24)                  .fontColor(this.themeColor === '#1E1E1E' ? '#FFFFFF' : '#000000')                  }                  .width('100%')                  .height('100%')                  .backgroundColor(this.themeColor)                  }                  }                  

避坑点

1@AppStorage是内存状态,APP重启后会丢失,适合存储临时全局数据(比如当前页面索引);

1@StorageLink是持久化状态,会保存在本地存储,适合存储需要长期保留的数据(比如用户ID、登录token);

1全局状态不要滥用,只存储需要跨页面共享的数据,否则会增加全局状态管理的复杂度。

四、我的独家学习方法(新手必看,少走90%的弯路)

结合前面的内容,总结一套我亲测有效的状态管理学习方法,适合新手从零开始,不用死记硬背,上手快、记得牢。

1. 第一步:先练“最小可运行案例”,拒绝碎片化学习

不要一上来就看复杂的文档,先从最简单的案例入手:比如用@State实现计数器、用@Link实现父子组件通信,每一个案例都跑通,观察UI刷新效果,理解装饰器的作用。

我的做法是:每个装饰器只练一个核心场景,跑通后再修改代码(比如把@State改成@Local,看UI是否刷新),通过对比,加深对装饰器的理解,比单纯看文档记得牢。

2. 第二步:用“对比法”区分易混淆装饰器

新手最容易混淆@Prop和@Link、@AppStorage和@StorageLink,我的方法是做“对比表格”,把用法、场景、区别列清楚,随时翻看,比如:

装饰器

核心用法

适用场景

关键区别

@Prop

父→子单向传递,子组件可改副本

子组件只读父组件数据(如标题)

子组件修改不同步回父组件,会深拷贝

@Link

父→子双向传递

子组件需要修改父组件数据(如表单)

子组件修改同步回父组件,无深拷贝

@ObjectLink

父→子单向传递,无深拷贝

子组件不需要修改父组件数据

性能优于@Prop,避免深拷贝开销

3. 第三步:实战复盘,总结避坑清单

每练一个案例,都记录自己踩过的坑(比如忘记用$传递@Link变量、@State变量修改对象属性不刷新),整理成避坑清单,后续遇到类似问题,直接翻看,避免重复踩坑。

比如我整理的高频避坑清单:① 状态变量必须初始化;② @Link传递必须用$变量名;③ 避免滥用@State修饰非UI相关变量;④ 子组件不修改状态时,优先用@ObjectLink代替@Prop。

4. 第四步:从简单到复杂,逐步升级场景

学习顺序:组件内状态(@State)→ 父子组件通信(@Prop/@Link/@ObjectLink)→ 应用级状态(@AppStorage/@StorageLink)→ 跨设备状态(@Distributed),每个阶段练熟后,再进入下一个阶段,不贪多求快。

五、总结:鸿蒙状态管理的核心,是“精准、简洁、高效”

其实鸿蒙UI范式的状态管理,核心不难,难的是新手容易陷入“死记装饰器”的误区,忽略了“数据驱动UI”的核心逻辑。我的学习感悟是:状态管理不是“记装饰器”,而是“理解状态与UI的关系”,根据场景选择合适的装饰器,用最少的代码实现最精准的UI刷新。

对于新手来说,不用一开始就掌握所有装饰器,先把@State、@Link、@AppStorage这三个核心装饰器练熟,能应对80%的实战场景,后续再逐步学习@ObjectLink、@Distributed等装饰器,以及V2版本的高级特性。

最后分享一句我的学习心得:鸿蒙开发的核心是“简洁、高效、多端适配”,状态管理正是这一理念的体现——用最简单的装饰器,实现最精准的状态联动,让开发者专注于业务逻辑,而不是繁琐的UI操作。

按照我分享的学习方法,多练、多复盘、多避坑,相信你也能快速吃透鸿蒙UI范式的状态管理,从新手成长为能独立开发的鸿蒙开发者~

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-19 19:36:58 HTTP/2.0 GET : https://c.mffb.com.cn/a/480935.html
  2. 运行时间 : 0.152500s [ 吞吐率:6.56req/s ] 内存消耗:4,401.63kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=3a06dace5ce4df895aa8753de7ead2bd
  1. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/runtime/temp/cefbf809ba1a84190cb04b0cb7abcf79.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001080s ] mysql:host=127.0.0.1;port=3306;dbname=c_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001435s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.004296s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000775s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001439s ]
  6. SELECT * FROM `set` [ RunTime:0.001970s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001558s ]
  8. SELECT * FROM `article` WHERE `id` = 480935 LIMIT 1 [ RunTime:0.001700s ]
  9. UPDATE `article` SET `lasttime` = 1776598618 WHERE `id` = 480935 [ RunTime:0.002313s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000698s ]
  11. SELECT * FROM `article` WHERE `id` < 480935 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001102s ]
  12. SELECT * FROM `article` WHERE `id` > 480935 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002106s ]
  13. SELECT * FROM `article` WHERE `id` < 480935 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003909s ]
  14. SELECT * FROM `article` WHERE `id` < 480935 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.005999s ]
  15. SELECT * FROM `article` WHERE `id` < 480935 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003188s ]
0.156373s