回答: 是的,我在之前的项目中实现过服务端渲染(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
。回答: 是的,最近关注的技术包括: