当前位置:首页>鸿蒙APP>鸿蒙ArkTS V1 vs V2 区别+实战:从用法到代码,一文分清(可直接运行)

鸿蒙ArkTS V1 vs V2 区别+实战:从用法到代码,一文分清(可直接运行)

  • 2026-04-13 22:09:24
鸿蒙ArkTS V1 vs V2 区别+实战:从用法到代码,一文分清(可直接运行)

在鸿蒙HarmonyOS原生开发中,ArkTS作为声明式开发的核心语言,经历了从V1到V2的重要迭代。很多开发者在升级DevEco Studio、开发新应用时,都会困惑:V1和V2到底有啥区别?该用哪个版本?旧项目要不要迁移?

其实核心结论很明确:V2是V1的增强版,重点优化了状态管理的灵活性和深度,解决了V1在复杂数据观测、组件通信上的痛点;新开发应用优先用V2,旧项目若能满足需求可暂不迁移,无需强行升级。

本文不聊复杂理论,只讲「能落地的区别+可运行的代码」,从核心差异、装饰器对比、实战案例、迁移建议四个维度,帮你快速分清V1和V2的用法,复制代码就能跑通,新手也能轻松上手。

提示:本文基于HarmonyOS NEXT(API 10),代码可直接在DevEco Studio 4.1+模拟器/真机运行;所有案例均包含V1和V2对比,一目了然。

一、核心区别:一句话看懂V1和V2的定位

ArkTS V1和V2的核心差异,集中在状态管理能力上,本质是「组件层级观测」与「数据深度观测」的区别:

  • ArkTS V1:强调「组件层级的状态管理」,观测能力有限,仅能观察复杂对象的第一层属性,装饰器配合限制多,适合简单UI场景开发;

  • ArkTS V2:增强「数据对象的深度观测与管理能力」,不再局限于组件层级,装饰器更灵活,支持深层属性观测、减少冗余更新,还新增了计算属性等实用功能,适合复杂应用开发。

简单说:V1够用就不用换,V2更灵活、更高效,是官方推荐的新版本范式。

二、关键区别:装饰器对比(核心,必看)

V1和V2的最大差异的是「状态装饰器」,很多开发者混淆用法,其实只要记住对应关系,就能快速切换。以下是最常用装饰器的对比,搭配极简代码示例,一看就懂:

1. 组件内部状态:@State(V1) vs @Local(V2)

核心用途:组件内部使用的状态,不对外暴露,触发自身UI刷新。

V1(@State)代码(可运行)

// ArkTS V1 - 组件内部状态@Component // V1用@Component@Entrystruct StateV1Demo {  // @State支持简单类型、复杂对象,可观察第一层属性  @State countnumber = 0;  @State user: { namestring } = { name"鸿蒙开发者" };  build() {    Column({ space20 }) {      Text(`V1计数:${this.count}`)        .fontSize(20);      Text(`V1用户名:${this.user.name}`)        .fontSize(20);      // 点击修改状态,UI自动刷新(可观察第一层属性)      Button("计数+1")        .onClick(() => this.count++);      Button("修改用户名")        .onClick(() => this.user.name = "ArkTS V1");    }    .padding(20);  }}

V2(@Local)代码(可运行)

// ArkTS V2 - 组件内部状态@ComponentV2 // V2必须用@ComponentV2@Entrystruct LocalV2Demo {  // @Local仅观察变量本身,复杂对象深层属性需配合@ObservedV2+@Trace  @Local countnumber = 0;  @Local userUser = new User(); // 复杂对象,需额外配置  build() {    Column({ space20 }) {      Text(`V2计数:${this.count}`)        .fontSize(20);      Text(`V2用户名:${this.user.name}`)        .fontSize(20);      Button("计数+1")        .onClick(() => this.count++);      Button("修改用户名")        .onClick(() => this.user.name = "ArkTS V2");    }    .padding(20);  }}// V2复杂对象需用@ObservedV2,属性用@Trace实现深度观测@ObservedV2class User {  @Trace namestring = "鸿蒙开发者"// @Trace标记需要观测的属性}

核心区别

  • V1 @State:支持外部初始化,可观察复杂对象的第一层属性,无需额外装饰;

  • V2 @Local:禁止外部初始化,仅观察变量本身,复杂对象的深层属性需搭配@ObservedV2和@Trace才能观测到变化。

2. 父子组件传参:@Prop/@Link(V1) vs @Param/@Event(V2)

核心用途:父子组件之间的数据传递,V1有固定双向绑定,V2更灵活,需手动实现双向同步。

V1(@Prop单向传参 + @Link双向传参)代码

// ArkTS V1 - 父子组件传参@Componentstruct ChildV1 {  // @Prop:单向传参,子组件只读,父组件修改同步子组件  @Prop msgstring;  // @Link:双向传参,子组件修改同步父组件  @Link countnumber;  build() {    Column({ space10 }) {      Text(`子组件(V1):${this.msg}`);      Text(`子组件计数:${this.count}`);      // @Link可修改,同步父组件      Button("子组件计数+1")        .onClick(() => this.count++);    }  }}@Component@Entrystruct ParentV1 {  @State parentCountnumber = 0;  build() {    Column({ space20 }) {      Text(`父组件(V1)计数:${this.parentCount}`);      // 传参:@Prop传常量,@Link传状态变量      ChildV1({ msg"父传子单向数据"count: $parentCount });      Button("父组件计数+1")        .onClick(() => this.parentCount++);    }    .padding(20);  }}

V2(@Param单向传参 + @Event实现双向同步)代码

// ArkTS V2 - 父子组件传参@ComponentV2struct ChildV2 {  // @Param:单向传参,子组件可修改复杂对象属性,简单类型只读  @Param msgstring;  @Param countnumber;  // @Event:通过回调实现子组件向父组件传值(双向同步)  @Event onCountChange(newCountnumber) => void;  build() {    Column({ space10 }) {      Text(`子组件(V2):${this.msg}`);      Text(`子组件计数:${this.count}`);      // 子组件通过回调通知父组件修改,实现双向同步      Button("子组件计数+1")        .onClick(() => this.onCountChange(this.count + 1));    }  }}@ComponentV2@Entrystruct ParentV2 {  @Local parentCountnumber = 0;  build() {    Column({ space20 }) {      Text(`父组件(V2)计数:${this.parentCount}`);      // 传参:@Param传值,@Event绑定回调      ChildV2({        msg"父传子单向数据",        countthis.parentCount,        onCountChange(newCount) => this.parentCount = newCount      });      Button("父组件计数+1")        .onClick(() => this.parentCount++);    }    .padding(20);  }}

核心区别

  • V1:@Prop单向、@Link双向,框架封装好,直接用即可,但灵活性低;

  • V2:@Param单向(复杂类型可修改属性),双向同步需通过@Event回调手动实现,更灵活,可自定义同步逻辑。

3. 状态监听:@Watch(V1) vs @Monitor(V2)

核心用途:监听状态变量的变化,执行自定义逻辑(如日志打印、数据校验)。

V1(@Watch)代码

// ArkTS V1 - 状态监听@Component@Entrystruct WatchV1Demo {  @State countnumber = 0;  // @Watch:监听count变化,只能监听单个变量,仅能观测第一层变化  @Watch("onCountChange")  @State msgstring = "初始值";  // 监听回调(固定写法,参数为变化后的值)  onCountChange(newValstring) {    console.log(`V1监听:msg变为${newVal}`);  }  build() {    Column({ space20 }) {      Text(`V1 msg:${this.msg}`);      Button("修改msg")        .onClick(() => this.msg = `count: ${this.count++}`);    }    .padding(20);  }}

V2(@Monitor)代码

// ArkTS V2 - 状态监听@ComponentV2@Entrystruct MonitorV2Demo {  @Local countnumber = 0;  @Local msgstring = "初始值";  build() {    Column({ space20 }) {      Text(`V2 msg:${this.msg}`);      Button("修改msg")        .onClick(() => this.msg = `count: ${this.count++}`)        // @Monitor:可监听多个变量,支持深层观测,能获取变化前的值        .onClick(() => {          this.$monitor("msg"(oldVal, newVal) => {            console.log(`V2监听:msg从${oldVal}变为${newVal}`);          });          this.$monitor("count"(oldVal, newVal) => {            console.log(`V2监听:count从${oldVal}变为${newVal}`);          });        });    }    .padding(20);  }}

核心区别

  • V1 @Watch:只能监听单个状态变量,仅能跟随状态变量观测第一层变化,无法获取变化前的值;

  • V2 @Monitor:可同时监听多个变量,支持深层观测(配合@Trace),能获取变化前/后的值,使用更灵活。

4. 新增功能:V2独有的@Computed(计算属性)

V1没有计算属性能力,重复计算会造成性能浪费;V2新增@Computed,可缓存计算结果,仅当依赖的状态变化时才重新计算。

V2(@Computed)代码(可运行)

// ArkTS V2 - 计算属性@Computed(V1无此功能)@ComponentV2@Entrystruct ComputedV2Demo {  @Local anumber = 10;  @Local bnumber = 20;  // @Computed:装饰getter方法,缓存计算结果,依赖变化才重新计算  @Computed get sum() {    console.log("计算sum:仅当a或b变化时执行");    return this.a + this.b;  }  build() {    Column({ space20 }) {      Text(`a: ${this.a}, b: ${this.b}`);      Text(`sum(计算属性): ${this.sum}`)        .fontSize(20)        .fontWeight(600);      Button("a+1")        .onClick(() => this.a++);      Button("b+1")        .onClick(() => this.b++);    }    .padding(20);  }}

三、实战对比:完整页面案例(V1 vs V2)

下面用一个「用户信息展示+修改」的完整案例,对比V1和V2的完整用法,代码可直接复制运行,更直观感受两者差异。

1. V1完整案例

// ArkTS V1 完整案例:用户信息展示+修改@Componentstruct UserCardV1 {  @Link user: { namestringagenumber };  build() {    Column({ space15 }) {      Text(`姓名:${this.user.name}`);      Text(`年龄:${this.user.age}`);      Button("年龄+1")        .onClick(() => this.user.age++);    }    .padding(15)    .border({ width1color"#eee" })    .borderRadius(8);  }}@Component@Entrystruct V1FullDemo {  // V1 @State可观察复杂对象第一层属性  @State user: { namestringagenumber } = { name"鸿蒙开发者"age25 };  @Watch("onUserChange")  @State tipstring = "未修改";  onUserChange(newValstring) {    console.log(`V1:用户信息变化,提示:${newVal}`);  }  build() {    Column({ space20 }) {      Text("ArkTS V1 完整案例")        .fontSize(22)        .fontWeight(600);      Text(`提示:${this.tip}`);      // 双向传参      UserCardV1({ user: $user });      Button("修改姓名")        .onClick(() => {          this.user.name = "ArkTS V1 实战";          this.tip = "姓名已修改";        });    }    .padding(20);  }}

2. V2完整案例

// ArkTS V2 完整案例:用户信息展示+修改@ObservedV2 // V2复杂对象需标记@ObservedV2class UserV2 {  @Trace namestring// @Trace标记需要观测的属性  @Trace agenumber;  constructor(namestringagenumber) {    this.name = name;    this.age = age;  }}@ComponentV2struct UserCardV2 {  @Param userUserV2;  @Event onAgeChange(newAgenumber) => void;  build() {    Column({ space15 }) {      Text(`姓名:${this.user.name}`);      Text(`年龄:${this.user.age}`);      Button("年龄+1")        .onClick(() => this.onAgeChange(this.user.age + 1));    }    .padding(15)    .border({ width1color"#eee" })    .borderRadius(8);  }}@ComponentV2@Entrystruct V2FullDemo {  @Local userUserV2 = new UserV2("鸿蒙开发者"25);  @Local tipstring = "未修改";  build() {    Column({ space20 }) {      Text("ArkTS V2 完整案例")        .fontSize(22)        .fontWeight(600);      Text(`提示:${this.tip}`);      // 单向传参+回调实现双向同步      UserCardV2({        userthis.user,        onAgeChange(newAge) => {          this.user.age = newAge;          this.$monitor("user.age"(oldVal, newVal) => {            console.log(`V2:年龄从${oldVal}变为${newVal}`);          });        }      });      Button("修改姓名")        .onClick(() => {          this.user.name = "ArkTS V2 实战";          this.tip = "姓名已修改";          // 监听姓名变化          this.$monitor("user.name"(oldVal, newVal) => {            console.log(`V2:姓名从${oldVal}变为${newVal}`);          });        });    }    .padding(20);  }}

四、关键补充:V1与V2混用&迁移建议

很多开发者关心“旧项目要不要迁移”“能不能混用”,结合官方文档和实战经验,给大家3条核心建议:

1. 混用原则

可以混用,但不推荐随意混用——编译器、工具链会校验不推荐的混用场景,强行绕过可能出现“双重代理”等问题,导致应用异常。若必须混用,需严格遵循官方混用文档。

2. 迁移建议

  • 新开发应用:优先使用V2,享受更灵活的状态管理、深层观测、计算属性等功能,后续迭代更顺畅;

  • 旧V1应用:若V1的功能和性能已能满足需求,无需立即迁移,避免浪费开发成本;

  • 需迁移场景:若应用需要深层数据观测、减少冗余更新,或新增复杂功能,可逐步迁移(推荐按模块迁移,降低风险)。

3. 快速迁移技巧

可使用官方推荐的迁移工具(如@idlizer/arkui-migrator),支持批量迁移、AI辅助迁移,能快速将V1代码转为V2代码,迁移后需重点检查装饰器替换和双向同步逻辑。

五、总结:V1和V2该怎么选?

用一张表格,快速总结核心区别和选择建议,一目了然:

对比维度

ArkTS V1

ArkTS V2

选择建议

核心能力

组件层级状态管理,仅支持浅层观测

数据深度观测,灵活状态管理

复杂应用选V2,简单应用V1够用

装饰器

@State、@Prop、@Link、@Watch等

@Local、@Param、@Event、@Monitor、@Computed等

新开发直接用V2装饰器

复杂对象观测

仅支持第一层属性观测

@ObservedV2+@Trace支持深层观测

有复杂对象场景选V2

性能

存在冗余更新问题

减少冗余更新,计算属性缓存优化

对性能有要求选V2

兼容性

旧版本SDK支持

API 10及以上支持(NEXT)

旧项目暂不迁移,新项目用V2

最后再强调一遍:ArkTS V2不是“替代”V1,而是“增强”——它解决了V1在复杂场景下的痛点,让状态管理更灵活、性能更优。

如果你是新手,直接从V2学起,避免走V1的弯路;如果你有旧项目,按需迁移即可,不用强行升级。

福利:本文所有V1、V2案例代码,可直接复制到DevEco Studio运行,无需修改配置。若迁移或运行中遇到问题,可留言反馈,逐一解答。

掌握V1和V2的区别,按需选择、灵活运用,才能高效开发鸿蒙原生应用 🚀

关注我,解锁更多鸿蒙ArkTS实战技巧

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-14 20:06:42 HTTP/2.0 GET : https://c.mffb.com.cn/a/481922.html
  2. 运行时间 : 0.144433s [ 吞吐率:6.92req/s ] 内存消耗:4,345.56kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=87c16f6b2283b5e20e5c9d7cdd946461
  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.001157s ] mysql:host=127.0.0.1;port=3306;dbname=c_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001890s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.004456s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000734s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001755s ]
  6. SELECT * FROM `set` [ RunTime:0.000613s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001866s ]
  8. SELECT * FROM `article` WHERE `id` = 481922 LIMIT 1 [ RunTime:0.001394s ]
  9. UPDATE `article` SET `lasttime` = 1776168402 WHERE `id` = 481922 [ RunTime:0.008439s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.009483s ]
  11. SELECT * FROM `article` WHERE `id` < 481922 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001537s ]
  12. SELECT * FROM `article` WHERE `id` > 481922 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002912s ]
  13. SELECT * FROM `article` WHERE `id` < 481922 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002707s ]
  14. SELECT * FROM `article` WHERE `id` < 481922 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001200s ]
  15. SELECT * FROM `article` WHERE `id` < 481922 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.016699s ]
0.146225s