回答:
$nextTick
是 Vue 提供的异步更新队列机制,主要作用是 确保在 DOM 更新完成后执行回调,以便操作最新的 DOM 元素。
Promise.then
)或宏任务(降级到 setTimeout
)执行。
$nextTick
返回一个 Promise,支持 async/await
语法。
回答: 浏览器事件循环(Event Loop)是协调同步任务、宏任务(MacroTask)、微任务(MicroTask)执行的机制:
setTimeout
、setInterval
、DOM 事件、I/O 操作。Promise.then
、MutationObserver
、queueMicrotask
。
示例:console.log(1);
setTimeout(() => console.log(2), 0);
Promise.resolve().then(() => console.log(3));
console.log(4);
// 输出顺序:1 → 4 → 3 → 2
回答: 定时器会在 主线程执行完毕后立即执行,即 10秒后输出。
回答:
是的,开发过 H5 和微信公众号授权流程。获取 openId
的步骤:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base
redirect_uri
并携带 code
。
code
传给后端,后端通过微信接口用 code
换取 openId
。openId
存入 localStorage
或 Cookie
,用于后续业务逻辑。回答: 是的,常用 Webpack 构建工具。三种 hash 的区别:
回答: 常用优化手段:
SplitChunksPlugin
拆分公共模块。
import()
)实现按需加载。mode: 'production'
自动启用,需使用 ES Module 语法。output.filename: '[name].[contenthash].js'
。
cache-loader
或 HardSourceWebpackPlugin
加速构建。回答: 在团队中负责以下技术支撑:
回答: 设计基础组件的关键点:
回答:
map
、filter
、debounce
)。示例:
const withLogging = (fn) => (...args) => {
console.log('Calling function:', fn.name);
return fn(...args);
};
回答: 柯里化(Currying)将多参数函数转换为单参数函数链,作用包括:
参数复用:固定部分参数,生成更专用的函数。
const add = a => b => a + b;
const add5 = add(5); // 复用 a=5
add5(3); // 8
延迟执行:分步传递参数,直到所有参数满足。
函数组合:便于组合多个函数(如 compose(f, g)(x)
)。
回答: (此处需根据实际项目调整,以下为示例) 项目名称:Vue-Admin-Template 核心功能:
回答: 除了 Nuxt.js,其他 Vue SSR 方案:
vue-server-renderer
手动搭建,灵活性高但配置复杂。vite-ssr
插件,结合 Vite 的快速构建能力。回答: 首屏优化手段:
<link rel="preload">
提前加载关键资源(如字体、首屏图片)。回答: 是的,但 Mixins 有以下问题:
替代方案:
setup
函数组合逻辑,更灵活且可复用。
回答: 是的,Vuex 的响应式实现原理:
state
存入 Vue 实例的 data
中,利用 Vue 的响应式系统监听变化。
computed
实现缓存,依赖的 state
变化时重新计算。
回答: Vue2 和 Vue3 的响应式实现差异:
Object.defineProperty
劫持对象属性的 getter/setter
。Proxy
代理整个对象,支持动态新增属性和数组变化。track
函数,触发更新通过 trigger
函数。回答: 根据项目需求选择路由模式:
#
,不够美观。
try_files
),否则刷新会 404。结论:若需 SEO 友好或追求 URL 简洁,优先选择 History 模式;否则 Hash 模式更简单。