当前位置:首页>面试真题>简历写精通 Vue 却频频挂面试?这篇真题救你 offer(五)

简历写精通 Vue 却频频挂面试?这篇真题救你 offer(五)

  • 2026-07-16 11:18:24
简历写精通 Vue 却频频挂面试?这篇真题救你 offer(五)

📋 目录

  • Q1. Vue 的核心是什么?对比 Vue 2 和 Vue 3 的响应式原理有什么区别

  • Q2. 什么是 MVVM 模式?Vue 是如何体现 MVVM 的?

  • Q3. Vue 实例的选项有哪些?(例如 data、computed、methods、watch、生命周期等)

  • Q4. v-if 和 v-show 有什么区别?分别适用于什么场景?

  • Q5. v-for 和 v-if 为什么不推荐一起使用?有什么替代方案?

  • Q6. Vue 中如何实现父子组件通信?(props + $emit / v-model)

  • Q7. 什么是插槽(Slot)?slot 和 slot-scope 在 Vue 2 和 Vue 3 中有什么区别?

  • Q8. computed 和 watch 有什么区别?各自的使用场景是什么?

  • Q9. 什么是 nextTick?它的实现原理是什么?

  • Q10. Vue 3 的 Composition API 和 Options API 有什么区别?

Q9. 什么是 nextTick?它的实现原理是什么?

考点

JavaScript 事件循环与 Vue 响应式更新的关系、nextTick 的使用场景、以及微任务/宏任务的底层原理。

答案

nextTick 是 Vue 提供的一个 API,用于在 DOM 更新完成之后执行回调函数。

为什么需要 nextTick

Vue 的响应式更新是异步的。当响应式数据变化时,Vue 不会立即更新 DOM,而是把更新操作放入一个异步更新队列,在下一个 tick 批量执行。这是为了避免同一个 tick 内多次修改数据导致 DOM 重复渲染,是一种性能优化。

但这给开发者带来一个问题:数据变化后立即访问 DOM,拿到的还是旧值。nextTick 就是用来解决这个问题的——它允许你注册一个回调,回调会在 DOM 更新完成后执行。

典型使用场景

  1. v-if 切换后操作新渲染的 DOM:例如点击按钮显示输入框后立即聚焦。

  2. 异步数据加载后操作 DOM:例如接口返回后滚动到列表顶部。

  3. 更新数据后读取布局信息:例如表单提交后计算新元素的高度。

  4. 依赖子组件渲染完成的操作:例如父组件修改 props 后读取子组件的 DOM 状态。

nextTick 的实现原理

nextTick 的核心思想是利用 JavaScript 的微任务机制。Vue 在不同环境中按优先级选择不同的实现方案:

  1. Promise.then(微任务):最优先,效率最高。

  2. MutationObserver(微任务):在不支持 Promise 的环境降级使用。

  3. setImmediate(宏任务):仅 Node.js 环境。

  4. setTimeout(fn, 0)(宏任务):最终降级方案,兼容性最好但开销最大。

为什么优先用微任务

微任务在当前同步代码执行完毕后立即执行(在渲染前),宏任务要等下一轮事件循环(在渲染后)。Vue 把 nextTick 回调放在微任务中,能保证DOM 更新完成后才执行。如果用宏任务,回调可能在 DOM 更新前执行,失去 nextTick 的意义。

Vue 异步更新队列机制

当响应式数据变化时,Vue 不会立即更新 DOM,而是:

  1. 通知所有依赖这个数据的 Watcher / 渲染 watcher。

  2. 把这些 Watcher 放入一个队列中。

  3. 在下一个 tick 批量执行队列中的 Watcher(同一个 tick 内多次修改同一个数据只更新一次)。

  4. 队列清空后,触发 nextTick 回调。

这种批量更新机制保证了:

  • 同一个 tick 内多次修改数据,DOM 只更新一次(性能优化)。

  • 开发者可以在 nextTick 回调中拿到最新 DOM(同步问题解决)。

nextTick 的使用方式

  • 回调函数形式this.$nextTick(() => { /* DOM 更新后执行 */ })

  • Promise 形式(推荐)await this.$nextTick(),async/await 风格更清晰。

  • Vue 3 中import { nextTick } from 'vue' 后调用,行为相同。

实际项目中的 nextTick 应用

  • v-if 后聚焦输入框:先 this.showInput = true,再 await this.$nextTick(),然后 this.$refs.input.focus()

  • 列表数据更新后滚动:先 this.items = await fetchItems(),再 await this.$nextTick(),然后 this.$refs.list.scrollTop = 0

  • 表单提交后调整布局:先更新表单数据,再 nextTick 读取新元素高度调整布局。

知识点详解

事件循环与微任务/宏任务

其他模块的章节有详细讲解

// 执行顺序示例
console.log('1'); // 同步任务

setTimeout(() =>console.log('2'), 0); // 宏任务

Promise.resolve().then(() =>console.log('3')); // 微任务

console.log('4'); // 同步任务

// 输出顺序:1, 4, 3, 2
// 同步 -> 微任务 -> 渲染 -> 宏任务

任务分类

  • 同步任务:在主线程上顺序执行。

  • 微任务Promise.thenqueueMicrotaskMutationObserver 回调。在同步任务结束后、渲染前执行。

  • 宏任务setTimeoutsetIntervalsetImmediate、I/O、UI 渲染等。在下一轮事件循环执行。

nextTick 的实现源码(Vue 3 简化)

// Vue 3 源码简化
let pending false;
const queue = [];

function queueJob(job) {
queue.push(job);
if (!pending) {
pending true;
// 优先用微任务
Promise.resolve().then(flushJobs);
  }
}

function flushJobs() {
// 批量执行所有更新任务
for (const job of queue) {
job();
  }
queue.length 0;
pending false;
}

export function nextTick(callback) {
return new Promise(resolve=> {
queueJob(() => {
if (callbackcallback();
resolve();
    });
  });
}

批量更新的意义

// ❌ 不批量:每次修改都更新 DOM,性能差
this.count 1// DOM 更新
this.count 2// DOM 更新
this.count 3// DOM 更新

// ✅ 批量:合并到下一个 tick,只更新一次
this.count 1// 加入队列
this.count 2// 合并到队列
this.count 3// 合并到队列
// 下一个 tick 执行一次 DOM 更新

如果不批量更新,每次数据变化都立即操作 DOM,会造成严重的性能问题(DOM 操作是昂贵的)。

同步问题示例

export default {
data() {
return {
showInput:  false,
message:  'Hello'
    };
  },
methods: {
handleClick() {
this.showInput true// 数据变化,但 DOM 还没更新
console.log(this.$refs.input); // ❌ undefined:input 还没渲染
this.$refs.input.focus(); // ❌ 报错

// ✅ 等待 DOM 更新后操作
this.$nextTick(() => {
console.log(this.$refs.input); // ✅ <input>
this.$refs.input.focus();
      });
    },

async handleClickAsync() {
this.showInput true;
await this.$nextTick(); // Promise 形式
this.$refs.input.focus();
    }
  }
};

nextTick 与 watch 的关系

// watch 的回调默认在 DOM 更新后触发,本质上就是用 nextTick 实现的
watch: {
count: {
handler(newVal) {
// 此时 DOM 已更新
this.$refs.chart.update();
    }
  }
}

// 等价于
watch: {
count: {
handler(newVal) {
this.$nextTick(() => {
this.$refs.chart.update();
      });
    }
  }
}

Vue 2 vs Vue 3 nextTick 差异

// Vue 2:通过实例方法
this.$nextTick(() => { /* ... */ });

// Vue 3:从 vue 导入
import { nextTick } from'vue';
nextTick(() => { /* ... */ });
// 或
await nextTick();

Vue 3 中 nextTick 是独立函数,不再绑定在实例上。底层实现思路相同,但更易于测试和复用。

不要滥用 nextTick

// ❌ 不必要的 nextTick
methods: {
asyn chandle() {
await this.$nextTick(); // 没必要
this.otherData 'value';
  }
}

// ✅ nextTick 只用于"数据变化后立即读 DOM"的同步问题
methods: {
async handle() {
this.showInput true;
await this.$nextTick();
this.$refs.input.focus(); // 必须等 DOM 更新
  }
}

Q10. Vue 3 的 Composition API 和 Options API 有什么区别?

考点

Vue 3 Composition API 的设计理念、与 Options API 的对比、逻辑复用方式、以及迁移策略。

答案

Composition API(组合式 API) 是 Vue 3 引入的新特性,提供了一种更灵活的方式来组织组件逻辑。它不是对 Options API 的替代,而是补充,两者可以在同一个项目中共存。

核心差异

  • Options API 按"选项类型"组织代码:data、methods、computed、watch、mounted 等选项分别写在不同位置。逻辑分散:一个功能的代码可能跨越多个选项块。

  • Composition API 按"逻辑功能"组织代码:把同一个功能的 data、computed、watch、生命周期都写在一起。逻辑集中:相关代码一目了然。

为什么需要 Composition API

Options API 在简单组件中很清晰,但当组件变复杂时会暴露问题:

  • 一个组件实现"搜索 + 分页 + 排序"三个功能,代码会散落在 data、methods、computed、watch 中。

  • 多个组件有类似功能时(如分页逻辑),Options API 时代用 mixins 复用,但 mixins 有命名冲突、来源不清、无法传参等缺陷。

Composition API 通过"按功能组织 + 可复用的 Composable 函数"解决这两个问题。

Options API 写法(传统方式)

  • data 中定义 count、userName、userId 等所有数据。

  • computed 中定义 doubleCount 等派生属性。

  • methods 中定义 increment、decrement、fetchUser 等所有方法。

  • watch 中定义对 count 的监听。

  • mounted 中调用 fetchUser。

  • 同一个功能(如"用户管理")的代码分散在 5 个不同位置。

Composition API 写法(现代方式)

  • 顶部导入需要的 API:import { ref, computed, watch, onMounted } from 'vue'

  • 引入自定义的 Composable 函数:useCounter()useUser()

  • 数据、计算、监听、生命周期钩子按功能顺序写在一起。

  • 同一个功能的代码集中在一处,便于理解和维护。

setup 语法糖的优势

Vue 3.2+ 引入了 <script setup> 语法,进一步简化 Composition API:

  • 自动暴露:在 <script setup> 中定义的变量、函数自动暴露给模板,不需要 return

  • 自动注册组件:import 的组件自动在模板中可用,不需要 components 选项

  • 编译时优化:编译器自动分析模板依赖,未使用的变量不会出现在打包结果中。

  • 更简洁的类型推断:在 TypeScript 中表现更好。

  • defineProps / defineEmits:在 setup 中通过编译器宏声明 props 和 emits。

  • 顶层 await:可以在 setup 中直接用 await,组件自动等待。

Composable 函数(逻辑复用)

Composition API 的最大价值之一是"逻辑复用"。可以把通用的逻辑(如分页、搜索、用户信息、表单验证)抽成独立的 Composable 函数(也叫 Hook),在其他组件中直接调用。

Composable 函数的特点

  • 命名以 use 开头(约定),如 usePaginationuseSearch

  • 内部使用响应式 API 维护状态。

  • 返回需要暴露的状态和方法(对象或数组)。

  • 可以接受参数(如 usePagination({ pageSize: 20 }))。

  • 没有命名冲突问题:返回什么用什么的解构,函数内部变量不污染调用方。

Options API vs Composition API 对比

  • 逻辑组织:Options API 按选项类型分散,Composition API 按逻辑功能集中。

  • 代码复用:Options API 用 mixins(有缺陷),Composition API 用 Composables(清晰可控)。

  • 类型推断:Composition API 更好,TypeScript 友好。

  • 学习成本:Options API 更低,新手友好;Composition API 略高但功能强。

  • 适合场景:Options API 适合小型简单组件,Composition API 适合复杂组件和大型应用。

实际项目:复杂表单场景对比

以一个复杂表单(基础信息 + 地址信息 + 验证 + 提交)为例:

  • Options API:所有字段铺在 data 中,验证函数散落在 methods,watch 监听 5 个字段变化,代码量爆炸且维护困难。

  • Composition API:把验证逻辑抽成 useFormValidation、地址信息抽成 useAddress,主组件 setup 中只做"组装"和"提交",代码清晰且可复用。

迁移策略

  • 新组件:直接用 <script setup> + Composition API。

  • 简单组件:保留 Options API 也无妨,两者可以共存。

  • 复杂组件:逐步迁移到 Composition API,享受更好的复用性。

  • 项目统一:建议新项目直接用 Composition API,老项目看情况逐步迁移。

知识点详解

setup 函数的执行时机

export default {
beforeCreate() {
console.log('beforeCreate'); // ② 后执行
console.log(this); // ✅ 已经是指向组件实例
  },
setup(propscontext) {
console.log('setup'); // ① 先执行
console.log(this); // ❌ undefined:组件实例还没创建
return { msg'hello' };
  }
};

setup 接收两个参数:

  • props:组件的 props(响应式的)。

  • context:包含 attrsslotsemitexpose

script setup 编译器宏

<script setup>
// 1. defineProps 声明 props
const props defineProps({
title: { typeStringrequiredtrue },
count: { typeNumberdefault0 }
});

// 2. defineEmits 声明事件
const emit defineEmits(['change''delete']);

// 3. defineExpose 显式暴露(默认 setup 内部不暴露给外部)
defineExpose({ resetvalidate });
</script>

这些是编译器宏,不需要 import,编译时由 Vue 编译器处理。

逻辑复用的演进

// 阶段1:mixins(Vue 2)
const commonMixin= {
data() { return { loadingfalse }; },
methods: {
async fetchData() { /* ... */ }
  }
};
// ❌ 问题:命名冲突、来源不清、无法传参
export default {
mixins: [commonMixin]
};

// 阶段2:Composable(Vue 3)
export function useFetch(url) {
const data ref(null);
const loading ref(false);
async function fetchData() {
loading.value true;
const res await fetch(url);
data.value await res.json();
loading.value false;
  }
return { dataloadingfetchData };
}

// ✅ 优势:来源清晰、可传参、无命名冲突
export default {
setup() {
const { dataloadingfetchData } useFetch('/api/users');
return { dataloadingfetchData };
  }
};

Composable 函数完整示例

// composables/usePagination.js
import { refcomputed } from'vue';

export function usePagination(fetchFnoptions= {}) {
const { pageSize=10 } =options;
const currentPage ref(1);
const total ref(0);
const list ref([]);
const loading ref(false);

const totalPages computed(() =>Math.ceil(total.value/pageSize));

async function load() {
loading.value=true;
try {
const res await fetchFn({
pagecurrentPage.value,
pageSize
      });
list.value res.list;
total.value res.total;
    } finally {
loading.value false;
    }
  }

function nextPage() {
if (currentPage.value totalPages.value) {
currentPage.value++;
load();
    }
  }

function prevPage() {
if (currentPage.value>1) {
currentPage.value--;
load();
    }
  }

return {
currentPagetotalPageslistloading,
loadnextPageprevPage
  };
}
<!-- UserList.vue -->
<script setup>
import { usePagination } from'@/composables/usePagination';
import { fetchUsers } from'@/api/user';

const { currentPagetotalPageslistloadingloadnextPageprevPage }
=usePagination(fetchUsers, { pageSize20 });

load();
</script>

ref 与 reactive 的选择

import { refreactive } from'vue';

// ✅ 基本类型用 ref
const count ref(0);
const message ref('hello');

// ✅ 对象用 reactive(属性访问更简洁)
const form reactive({
username'',
password'',
rememberfalse
});

// ⚠️ reactive 整体替换会丢失引用
let state reactive({ count0 });
state reactive({ count1 }); // ❌ 丢失响应式!

// ✅ 需要整体替换时用 ref
const stateRef ref({ count0 });
stateRef.value = { count1 }; // ✅ 保持响应式

toRefs / toRef 的解构保持响应式

import { reactivetoRefs } from'vue';

const state reactive({ name'张三'age25 });

// ❌ 解构后丢失响应式
const { nameage } state;
name '李四'// 不会触发更新!

// ✅ 用 toRefs 转换
const { nameage } toRefs(state);
name.value '李四'// ✅ 触发更新

性能差异

Composition API 在性能上和 Options API 持平(底层响应式系统是同一套)。Composition API 的优势不在性能,而在代码组织和复用。

前面几个章节,已经把vue基础题的10道题的知识点和答案讲解完毕,接下来,进入考试 and 复习环节

回顾一下


1. Vue 响应式原理

1.1 Vue 2 使用 Object.__ 实现响应式,无法监听 __(新增/删除)属性;Vue 3 使用 __ 重写了响应式系统,可原生支持新增属性。

1.2 Vue 2 中,数组通过 __ 赋值无法触发响应式,必须使用 this.__;Vue 3 使用 __,数组索引赋值也能触发响应式。

1.3 Vue 的 DOM 更新是 __(同步/异步)操作,数据变化后不会立即更新 DOM,而是放入队列,nextTick 正是用来 __(等待/立即执行)DOM 更新完成。

参考答案

1.1defineProperty新增或删除Proxy

1.2直接通过索引$setProxy

1.3异步等待


2. MVVM 模式

2.1 MVVM 模式中,__(Model/View/ViewModel)层代表用户看到的界面;__(Model/View/ViewModel)层持有视图的状态和数据逻辑;__(Model/View/ViewModel)层代表原始数据。

2.2 Vue 中的 data() 函数对应 MVVM 的 __(View/ViewModel/Model)层;模板对应 __(View/ViewModel/Model)层;Vue 实例本身对应 __(View/ViewModel/Model)层。

参考答案

2.1ViewViewModelModel

2.2ModelViewViewModel


3. Vue 实例选项

3.1created 生命周期钩子在 datacomputedmethods 可用之后执行,可以进行 __(DOM 操作/数据请求);mounted 钩子可以访问 $refs 和进行 __(数据请求/DOM 操作)。

3.2computed 属性必须返回 __(有/无)返回值,且会 __(缓存/不缓存)计算结果;watch 适合处理 __(同步计算/异步副作用)。

3.3 组件卸载前需要清理定时器、事件监听器,否则会造成 __(内存泄漏/渲染阻塞)。

参考答案

3.1数据请求DOM 操作

3.2缓存异步副作用

3.3内存泄漏


4. v-if 与 v-show

4.1v-if 是真正的 __(条件渲染/样式切换),条件为 false 时 DOM 节点 __(存在/不存在);v-show 是通过 __(display:none/删除 DOM)控制显示隐藏。

4.2 频繁切换的场景适合用 __(v-if/v-show);初始条件很可能为 false 的场景适合用 __(v-if/v-show)。

4.3v-show__(支持/不支持)v-elsev-if__(支持/不支持)v-else

参考答案

4.1条件渲染不存在display:none

4.2v-showv-if

4.3不支持支持


5. v-for 与 v-if

5.1 Vue 2 中 v-for 优先级高于 v-if,导致 __(每次遍历都要判断/先判断再遍历),性能浪费;Vue 3 中 v-if 优先级更高,但两者混用仍 __(推荐/不推荐)。

5.2 替代方案一:使用 __ 属性预先过滤数据,推荐用于数据本身不经常变化的场景;替代方案二:使用 v-if 作为 __(子元素/父容器)元素,控制整个列表的渲染。

5.3 如果列表很大但需要保留状态切换,用 __(v-if/v-show)替代内层 v-if

参考答案

5.1每次遍历都要判断不推荐

5.2computed父容器

5.3v-show


6. 父子组件通信

6.1 父组件向子组件传递数据用 __(props/emit);子组件向父组件传递数据用 __(props/emit)。

6.2v-model 本质是 :modelValue + __ 的语法糖;在 Vue 3 中使用 __(emit/defineEmits)声明子组件触发的事件。

6.3 Vue 3 支持 v-model:propName 绑定 __(多个/单个)值,实现多个 v-model 双向绑定。

参考答案

6.1propsemit

6.2@update:modelValuedefineEmits

6.3多个


7. 插槽

7.1 插槽允许父组件向子组件的 __(指定位置/任意位置)插入 HTML 内容;子组件通过 __(slot/slots)标签定义插槽区域。

7.2 插槽可以传递数据给父组件,这种插槽叫做 __(普通插槽/作用域插槽);Vue 2 中用 __(slot/v-slot)获取作用域数据。

7.3 Vue 3 中 <template #header="{ item }"> 是 v-slot:header="__" 的简写形式,支持 __(动态/静态)插槽名如 #[dynamicName]

参考答案

7.1指定位置slot

7.2作用域插槽slot-scope

7.3{ item }动态


8. computed 与 watch

8.1computed 基于 __(依赖缓存/每次重算),依赖不变不会重算;watch 每次数据变化都会执行,__(有/无)缓存机制。

8.2computed 必须 __(有/无)返回值且必须是同步的;watch 适合处理 __(同步计算/异步操作/副作用)。

8.3watch 的 deep: true 用于 __(深度监听/立即执行);immediate: true 用于 __(深度监听/组件创建时立即执行一次)。

参考答案

8.1依赖缓存

8.2异步操作/副作用

8.3深度监听组件创建时立即执行一次


9. nextTick

9.1 Vue 的 DOM 更新是 __(同步/异步)的,响应式数据变化后不会立即更新 DOM,而是将更新放入队列,在下一个 tick __(立即/批量)执行。

9.2nextTick 内部实现会优先使用 __(Promise/setTimeout)微任务,在不支持的环境中降级为宏任务。

9.3 典型使用场景:在 v-if 切换为 true 之后调用 $refs,或在异步数据更新后操作 DOM,此时需要用 nextTick 确保 __(代码执行/DOM 更新)在 DOM 更新之后。

参考答案

9.1异步批量

9.2Promise

9.3代码执行DOM 更新


10. Composition API

10.1 Composition API 的 <script setup> 语法糖中,变量和函数 __(需要/不需要)手动 return,自动暴露给模板;使用 __(mixins/Composables)实现逻辑复用,避免命名冲突。

10.2setup() 函数在 __(beforeCreate/created)之前执行;onMounted() 等生命周期钩子需要 __(从 vue 导入/全局注册)才能使用。

10.3 Composition API 相比 Options API 的优势包括:更好的 __(类型推断/性能)、按 __(选项类型/逻辑功能)组织代码、更清晰的逻辑 __(复用/隔离)。

参考答案

10.1不需要Composables

10.2beforeCreate从 vue 导入

10.3类型推断逻辑功能复用

恭喜大家成功完成vue的初级面试题
编编给大家带来了笑话福利环节
1.从前有个火柴,头很痒,它挠了挠,然后自己燃起来了。
2.有一天土豆走在路上,摔了一跤,变成了薯片。

最新文章

随机文章

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