
回答: 是的,我在之前的项目中实现过服务端渲染(SSR),主要使用 Next.js(React 生态)和 Nuxt.js(Vue 生态)。服务端渲染的核心目的是提升首屏加载性能、SEO 友好性以及用户体验。具体实现包括:
hydration(注水)激活交互逻辑。
componentDidMount 在服务端不执行)。
回答: 是的,项目中通过以下方式实现错误监控和埋点:
window.onerror 和 unhandledrejection 捕获 JS 错误和未处理的 Promise 异常。
try-catch 包裹关键逻辑,结合 Sentry 或自研监控系统上报错误。
addEventListener)自动收集用户行为。
回答: 选择打包工具需综合考虑项目规模、生态支持、性能需求:
回答: 核心区别在于定位和适用场景:
回答: 实现按需引入的常见方案:
单组件独立打包:每个组件单独打包为 ES Module 文件,通过 package.json 的 sideEffects 标记无副作用。
Babel 插件:使用 babel-plugin-import,将 import { Button } from 'lib' 转换为按路径引入:
import Button from 'lib/es/button'; Tree-shaking 支持:确保组件库以 ES Module 格式发布,并在 package.json 中配置 module 字段。
回答: 关键区别:
require() 和 module.exports。
import/export。
await,CJS 不支持。
.mjs 或 type: "module" 启用。回答: 是的,React@17 是一个“过渡版本”,主要变化:
document,而是挂载到根 DOM 容器,避免多版本 React 共存时的事件冲突。
回答: 是的,Hooks 是 React 16.8 的核心特性,常用场景:
useState、useReducer。
useEffect、useLayoutEffect。
useMemo、useCallback。
useFetch 请求数据)。
关键规则:只能在函数组件顶层调用 Hooks,且不能嵌套在条件或循环中。
回答: 是的,Vue3 的核心改进:
Teleport、Suspense、多根节点支持。
回答: Vue Router 的两种路由模式:
# 部分实现路由(如 http://example.com/#/home),无需服务端配置,兼容性好。
history.pushState API,URL 更简洁(如 http://example.com/home),需服务端配置避免 404。
回答:
$nextTick 是 Vue 的异步更新机制:
Promise.then(微任务),降级到 setTimeout(宏任务)。
回答: 是的,开发过微信小程序和移动端 H5:
回答:
使用 Array.splice():
arr.splice(3, 0, newElement);
// 参数:起始索引、删除数量、插入元素回答:
是的,splice 是原地修改数组的方法,会直接改变原数组。
回答:
使用 Array.slice():
const subArr = arr.slice(3, 6); // 参数:起始索引(包含)、结束索引(不包含)回答:
slice返回的是 浅拷贝。如果数组元素是对象,修改拷贝后的数组中的对象会影响原数组。
回答:
function trafficLight() {
const lights = ['red', 'green', 'yellow'];
let index = 0;
function next() {
console.log(lights[index]);
index = (index + 1) % lights.length;
setTimeout(next, 2000); // 每 2 秒切换一次
}
next();
}
trafficLight();回答:
回答: 常见方案:
a.example.com 和 b.example.com),设置 Cookie 作用域为 .example.com。回答: 是的,最近关注的技术包括: