Відповіді:
Ви також можете встановити шлях, по якому статичні файли будуть надсилатись до Інтернету, вказавши додатковий (перший) параметр, use()
як це:
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
Таким чином ви отримуєте два різних каталоги в Інтернеті, які відображають ваші локальні каталоги, а не один URL-шлях, який не проходить між двома локальними каталогами.
Іншими словами, шаблон URL:
http://your.server.com/public/*
Обслуговує файли з локального каталогу public
при цьому:
http://your.server.com/public2/*
Обслуговує файли з локального каталогу public2
.
BTW, це також корисно, якщо ви не хочете, щоб статичні обслуговували файли з кореня вашого сервера, а скоріше з більш кваліфікованого шляху.
HTH
"homepage": "/public"
і "homepage": "/public2"
до відповідних реагувати package.json додатки. Для отримання додаткової інформації про використання двох реагуючих програм див. Мою відповідь тут stackoverflow.com/a/48569896/4746648
shared
папка, щоб ви могли використовувати "./"
та "./shared"
Ви також можете "об'єднати" каталоги в єдиний видимий каталог
Структура каталогів
/static
/alternate_static
Код
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
І статичні, і альтернативні_статичні будуть подаватися так, ніби вони перебувають у одному каталозі. Хоча слідкуйте за клоферами назви файлів.
main.js
в static/
ньому не буде продовжувати дивитися в alternate_static/
.
alternate_static
коли-небудь буде поданий.
Це неможливо одним введенням програмного забезпечення, але ви можете вводити static
проміжне програмне забезпечення кілька разів:
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
Пояснення
Подивіться на connect / lib / middleware / static.js # 143 :
path = normalize(join(root, path));
Існує options.root
статичний корінь, який ви визначаєте в express.static
або connect.static
виклику, і path
це шлях запиту.
Подивіться більше на підключення / lib / middleware / static.js # 154 :
fs.stat(path, function(err, stat){
// ignore ENOENT
if (err) {
if (fn) return fn(err);
return ('ENOENT' == err.code || 'ENAMETOOLONG' == err.code)
? next()
: next(err);
Шлях перевіряється лише один раз, і якщо файл не знайдено, запит переходить до наступного середнього програмного забезпечення.
Оновлення для Connect 2.x
Посилання на код неприйнятні для Connect 2.x, але багаторазове використання статичного посередництва все ще можливе, як і раніше.
const express = require('express');
const path = require('path');
const pagesPath = path.join(__dirname, '/cheatsheet');
const cssPath = path.join(__dirname, '/stylesheet');
const port = process.env.PORT || 3000;
var app = express();
app.use("/cheatsheet" ,express.static(pagesPath));
app.use("/stylesheet",express.static(cssPath));
app.get('/',(request,response)=>{
response.send('Hello CSS!!!');
});
app.get('/bad',(request,response)=>{
response.send({error: 'Bad Request'});
});
app.listen(port, ()=> {
console.log(`Server is running on Port ${port}` );
console.log(__dirname);
});
// folder structure
/cheatsheet/index.html
/stylesheet/style.css