面试题答案
一键面试场景一:根据环境变量进行模块导入
在开发过程中,通常需要区分开发环境和生产环境。例如,在开发环境中可能需要导入一个用于调试的模块,而在生产环境中导入优化后的模块。
假设我们有一个 config.js
文件来管理环境变量:
// config.js
const isProduction = process.env.NODE_ENV === 'production';
export { isProduction };
然后在主代码中根据环境变量导入不同模块:
import { isProduction } from './config.js';
let analyticsModule;
if (isProduction) {
analyticsModule = await import('./productionAnalytics.js');
} else {
analyticsModule = await import('./developmentAnalytics.js');
}
// 使用导入的模块
analyticsModule.trackEvent('Some event');
场景二:根据运行时条件导入模块
比如在一个单页应用(SPA)中,某些功能模块只有在用户执行特定操作时才需要加载,这样可以避免初始加载时加载过多不必要的代码,提高页面加载性能。
假设有一个文件上传功能,只有当用户点击上传按钮时才导入文件上传模块:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Dynamic Import</title>
</head>
<body>
<button id="uploadButton">上传文件</button>
<script>
const uploadButton = document.getElementById('uploadButton');
uploadButton.addEventListener('click', async () => {
const fileUploadModule = await import('./fileUpload.js');
fileUploadModule.uploadFile('path/to/file');
});
</script>
</body>
</html>
在上述代码中,fileUpload.js
模块只有在用户点击按钮时才会被导入和使用。