nodejs写静态资源服务器+后台代理

nodejs写静态资源服务器+后台代理

思路

解析请求的url,通过fs模块读取本地资源,返回给浏览器

主要模块

http 模块,创建http服务
fs 文件模块,用于读取本地静态文件
url 模块,解析url
path模块,拼接路径(可根据不同操作系统,输出不同结果)
http-proxy,用于后台的代理

demo
const http = require('http'),
  fs = require('fs'),
  url = require('url'),
  path = require('path'),
  proxy = require('http-proxy');

const port = process.env.PORT || 3000;
const server = http.createServer((req, res) => {
  // 获取解析后的url对象
  const pathObj = url.parse(req.url, true);
   // 后台api
  if (pathObj.pathname === '/barrage') {
    proxyServer.web(req, res, { target: 'http://127.0.0.1:8080' });
    return;
  }
  // 资源路径
  const filePath = path.join(__dirname, pathObj.pathname);
  console.log(filePath);
  fs.readFile(filePath, (err, file) => {
    if (err) {
      console.error('404');
      res.end('<h1>404 not found</h1>');
    } else {
      console.log('success');
      // 二进制
      res.write(file, 'binary');
      res.end();
    }
  });
});

server.listen(port);
console.log(`server start on ${port}`);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js中获取静态资源有多种方法。其中一种常用的方法是使用Express框架,你可以通过设置静态文件夹并使用express.static中间件来处理静态资源。 首先,你需要安装Express模块并引入它: ``` let express = require('express'); let app = express(); ``` 然后,你可以使用app.use()方法来指定一个静态文件夹的路径,比如'./public/',这样就可以让Express知道在哪里查找静态资源: ``` app.use(express.static('./public/')); ``` 接下来,你可以创建一个路由处理器,用于处理GET请求,比如返回首页: ``` app.get('/', function (req, res) { res.send('我是首页'); }); ``` 最后,你需要指定监听的端口号,比如3000,并启动服务器: ``` app.listen(3000, function () { console.log('服务器启动成功: http://localhost:3000'); }); ``` 这样,当你访问http://localhost:3000时,Express就会自动从指定的静态文件夹中查找并返回相应的静态资源。 除了使用Express框架,你还可以使用Node.js的http模块来获取静态资源。可以通过创建一个HTTP服务器并监听请求来实现。 首先,你需要引入http、url、path、fs和mime这些模块: ``` const http = require('http'); const url = require('url'); const path = require('path'); const fs = require('fs'); const mime = require('mime'); ``` 然后,创建一个HTTP服务器: ``` const app = http.createServer(); ``` 接下来,通过监听request事件来处理客户端请求: ``` app.on('request', (req, res) => { let pathname = url.parse(req.url).pathname; pathname = pathname == '/' ? '/default.html' : pathname; let realPath = path.join(__dirname, 'public', pathname); let type = mime.getType(realPath); fs.readFile(realPath, (error, result) => { if (error != null) { res.writeHead(404, { 'content-type':'text/html;charset=utf8' }); res.end('文件读取失败!!!!!!!'); return; } res.writeHead(200, { 'content-type': type ';charset=utf8' }); res.end(result); }); }); ``` 最后,你需要监听一个端口号,比如3000,并启动服务器: ``` app.listen(3000); console.log('服务器启动成功!!'); ``` 这样,当你访问http://localhost:3000时,服务器会根据请求路径来读取相应的静态资源并返回给客户端。 综上所述,以上是两种常用的方法来获取Node.js中的静态资源。你可以根据自己的需求选择适合的方法来处理静态资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值