express访问静态资源

nodejs 内置变量含义

  1. __dirname 表示当前文件所在的目录的绝对路径
  2. __filename 表示当前文件的绝对路径
  3. module.filename ==== __filename 等价
  4. process.cwd() 返回运行当前脚本的工作目录的路径
  5. process.chdir() 改变工作目录

案例一

const express = require('express')
const path = require('path')
const app = express()
// path.join(__dirname, 'public') 表示工程路径后面追加 public
app.use(express.static(path.join(__dirname, 'public')))

app.listen(8080, () => {
  console.log(`App listening at port 8080`)
})

其中最主要的部分是app.use(express.static(path.join(__dirname, 'public'))),该行代码是在express添加中间件,设置静态资源路径为public,所有的HTML、CSS、JS等文件都放在public下即可,后续代码迁移直接将public下的代码copy到Java Web的webRoot中就行

在浏览器地址栏通过http://localhost/工程名/文件名去访问工程\文件名,形成映射关系;当然,这个和后台的URL匹配顺序有一定的关系。

案例二

app.use("/static/file",express.static(path.join(__dirname, 'uploadfile')))

在浏览器地址栏通过http://localhost/工程名/static/file/文件名去访问工程\uploadfile\文件名,形成映射关系

nodejs+nginx解决静态资源访问

由于nodejs是单线程,访问静态资源也需要nodejs来处理,因此我们可以采用nodejs + nginx这种混合模式处理,利用nginx的反向代理的功能,如果浏览器是访问静态资源则直接交给nginx处理,如果是非静态资源的业务逻辑处理,则交给nodejs处理

你可能感兴趣的:(nodejs,npm,express,gulp)