面试题答案
一键面试实现思路
- Webpack代码分割:Webpack的
splitChunks
插件可以将代码分割成多个块,避免所有代码都打包到一个文件中。对于动态导入的模块,Webpack会自动将其分割成单独的chunk。 - TypeScript动态模块加载:TypeScript支持使用
import()
语法进行动态导入,这与ES6的动态导入语法一致。在运行时,当代码执行到import()
时,才会加载相应的模块,实现按需加载。
关键Webpack配置
在webpack.config.js
中:
module.exports = {
//...其他配置
optimization: {
splitChunks: {
chunks: 'all'
}
}
};
上述配置中,splitChunks.chunks: 'all'
表示Webpack会对所有类型的chunk(包括异步chunk)进行代码分割。
TypeScript代码示例
假设项目中有一个utils
模块,只有在特定条件下才需要加载。
// main.ts
document.addEventListener('click', async () => {
// 动态导入utils模块
const { utilsFunction } = await import('./utils');
utilsFunction();
});
在utils.ts
中:
export function utilsFunction() {
console.log('This is a utility function.');
}
这样,只有当用户点击页面时,才会加载utils
模块,从而减少初始加载时间。