Node.js静态资源访问方式详解

Node.js 的静态资源方式还挺多样的,光靠它自己就能搞定前端页面的 HTML、CSS、JS,甚至图片都不在话下。如果你用过 Express,那静态资源就像搭个积木一样简单,一个 express.static() 就能搞定。而且目录一设,访问路径也就有了,省心又直观。

Express 框架的静态文件服务蛮省事的,你只要用app.use(express.static('public')),就能把public目录变成静态资源仓库。浏览器能直接求这些文件,比如http://localhost:3000/logo.png这种。

如果你不想依赖框架,也可以用 Node.js 自带的 http 模块自己撸代码。虽然写起来麻烦点,但能学到不少底层原理。得自己读文件、写响应头,像下面这样:

const http = require('http');
const fs = require('fs');
http.createServer((req, res) => {
  fs.readFile('index.html', (err, data) => {
    if (err) throw err;
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.end(data);
  });
}).listen(3000);

不过嘛,如果项目稍微大点或者并发高一点,光靠 Node 有时候吃不消。这个时候 Nginx 就该上场了。它静态资源是真快,还能做缓存,Node 就专心干活就行了。比如你可以这样配:

location /static/ {
  alias /var/www/static/;
  expires 30d;
}
location /api/ {
  proxy_pass http://localhost:3000;
}

除了 Express,其实像 KoaConnect 这些框架也都有中间件可以搞静态文件。如果你在开发阶段,那 webpack-dev-serverbrowser-sync 也都挺好用,自动刷新、静态托管都帮你做好了。

所以你说 Node 靠不靠谱?嗯,还挺能干的。只要你选对方式,它就能稳稳地把前端页面托起来。如果你刚好在搭服务,建议先试试 Express,简单又顺手。

zip 文件大小:43.25KB