在 Express 应用中,如何通过内置的静态文件中间件来对外提供静态资源?请说明其基本用法及常见配置。
考察说明
考查对 Express 静态资源托管机制的理解与基本配置能力。
回答思路
- 【回答框架 1】Express 通过内置的 express.static 中间件实现静态资源托管,其核心机制是当请求路径匹配时,中间件会直接返回指定目录下的文件,并自动设置正确的 Content-Type。
- 【回答框架 2】基本用法为 app.use(express.static('public')),这会将 public 目录下的文件映射到根路径,例如 public/images/a.png 可通过 /images/a.png 访问。
- 【回答框架 3】可通过挂载路径实现前缀访问,如 app.use('/static', express.static('public')),此时访问路径需包含 /static 前缀。
- 【回答框架 4】支持多个静态目录,按挂载顺序依次查找,先匹配到即返回;也可通过 options 配置如 maxAge 设置缓存时间、index 设置默认首页等。
- 【回答框架 5】实际项目中常配合 path 模块使用绝对路径,避免工作目录变化导致路径错误,并注意安全风险,如路径遍历防护由中间件内部处理,但应避免将敏感目录暴露为静态资源。
- 【关键点 1】express.static 是 Express 内置中间件,用于托管静态文件。
- 【关键点 2】通过 app.use 挂载,可指定挂载路径和根目录。
- 【关键点 3】支持多目录和缓存配置,按顺序匹配。
- 【关键点 4】建议使用绝对路径,并注意静态目录的权限控制。
- 【易错点 1】不要将包含敏感信息的目录(如 .env、node_modules)暴露为静态资源。
- 【易错点 2】使用相对路径时可能因工作目录不同导致资源找不到,应使用 path.join(__dirname, 'public') 等绝对路径。
- 【易错点 3】多个静态目录挂载时,若文件重名,先挂载的目录优先,需注意顺序。