龙空技术网

nodejs实现一个简单的多租户web网站(静态资源篇)

PrvtSite 131

前言:

现时兄弟们对“nodejs执行python脚本”大约比较讲究,看官们都想要分析一些“nodejs执行python脚本”的相关内容。那么小编同时在网摘上汇集了一些对于“nodejs执行python脚本””的相关文章,希望你们能喜欢,小伙伴们快快来了解一下吧!

nodejs是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHPPythonPerlRuby等服务端语言平起平坐的脚本语言

今天,我们通过Express框架,搭建一个nodejs 简单的多租户web应用。

express 创建单个站点应用

源码及预览

// app.tsimport express from 'express';import compression from 'compression';// 创建应用const app = express();// 开启gzipapp.use(compression());app.use("/static", express.static("assets"));app.get('/', (req, res) => {    res.send('<h1>Hello World!</h1><img src="/static/logo.png" />')});var server = app.listen(8081, () => {    var host = (server.address() as any).address;    var port = (server.address() as any).port;    console.log("服务器启动成功了端口是:", port);});

上面的例子中,通过访问localhost:8081127.0.0.1:8081我们得到了相同效果,这不是我们所期望的。

基本文件隔离,渲染时处理(不推荐)

简单文件隔离

// app.tsimport * as core from 'express-serve-static-core';import express from 'express';import compression from 'compression';// 创建应用const app = express();// 开启gzipapp.use(compression());app.use("/static", express.static("assets"));const getSiteDirName = (req: core.Request) => {    return (req.headers.host || '').replace(/:\d*$/, '');}app.get('/', (req, res) => {    const dirName = getSiteDirName(req);    res.send(`<h1>Hello World!</h1><img src="/static/${dirName}/logo.png" />`)});var server = app.listen(8081, () => {    var host = (server.address() as any).address;    var port = (server.address() as any).port;    console.log("服务器启动成功了端口是:", port);});

虽然达到了目的,但是这样的实现方式,应该不是我们想要的。

使用sendFile 访问静态资源前处理(推荐)

使用sendFile

// app.tsimport path from 'path';import * as core from 'express-serve-static-core';import express from 'express';import compression from 'compression';// 创建应用const app = express();// 开启gzipapp.use(compression());//express.static("assets");app.use('/static', (req: core.Request, res: core.Response) => {    const dirName = getSiteDirName(req);    const filePath = `/assets/${dirName}${decodeURIComponent(req.path)}`;    res.sendFile(filePath, { root: __dirname });});const getSiteDirName = (req: core.Request) => {    return (req.headers.host || '').replace(/:\d*$/, '');}app.get('/', (req, res) => {    res.send(`<h1>Hello World!</h1><img src="/static/logo.png" />`)});var server = app.listen(8081, () => {    var host = (server.address() as any).address;    var port = (server.address() as any).port;    console.log("服务器启动成功了端口是:", port);});

到这,一个基本的例子已经呈现。

人人为我,我为人人,欢迎您的浏览,我们一起加油吧。

标签: #nodejs执行python脚本