KRABS 는 Enterprise-Ready Express.js/Fastify Middleware입니다. Next.js 인스턴스에서 수천 개의 다양한 웹 사이트를 제공합니다.
Krabs는 NPM 에서 사용할 수 있으며 다음과 같이 설치할 수 있습니다.
for Express.js (NPM 참조)
yarn add krabs
# or
npm install --save krabsFastify (NPM 참조)
yarn add fastify-krabs
# or
npm insall --save fastify-krabs_app 및 _document 페이지는 모든 웹 사이트에서 공통적입니다.YouTube 에서 비디오 소개를 볼 수 있습니다.

다음 하나의 다음 웹 사이트만으로 두 개의 다른 웹 사이트를 지원하고 하나의 Express.js 서버 만 사용하여 서비스를 제공하고 싶다고 가정 해 봅시다. 프로젝트 루트 내부에 .krabs.js 또는 .krabs.config.js 파일 내에 다음 구성을 작성하십시오.
module . exports = {
tenants : [
{
name : 'website-1' ,
domains : [
{
development : / dev.[a-z]*.local.website-1.com / , // Regex supported!
staging : 'stage.website-1.com' ,
production : 'website-1.com' ,
} ,
] ,
} ,
{
name : 'website-2' ,
domains : [
{
development : 'local.website-2.com' ,
staging : 'stage.website-2.com' ,
production : / [w|d|-|_]+.website-2.com / , // Regex supported!
} ,
] ,
} ,
] ,
} ; index.js 파일을 만들고 다음 내용으로 작성하십시오.
const express = require ( 'express' ) ;
const next = require ( 'next' ) ;
const krabs = require ( 'krabs' ) . default ;
const dev = process . env . NODE_ENV !== 'production' ;
const app = next ( { dev } ) ;
async function main ( ) {
try {
await app . prepare ( ) ;
const handle = app . getRequestHandler ( ) ;
const server = express ( ) ;
server
. get ( '*' , ( req , res ) => krabs ( req , res , handle , app ) )
. listen ( 3000 , ( ) => console . log ( 'server ready' ) ) ;
} catch ( err ) {
console . log ( err . stack ) ;
}
}
main ( ) ; .krabs.js 파일 내부에서는 website-1 과 website-2 두 가지 name 속성이있는 두 개의 세입자를 구성했습니다. 이제 Next.js의 기본 pages/ 디렉토리 내부에 두 개의 새로운 폴더를 만들어 봅시다.
pages/
- _app.js
- website-1
- website-2 이 두 폴더 내부에 원하는 페이지를 추가하십시오. 다음 폴더는 다음 폴더가 다음 폴더로 처리되므로 다음 폴더를 추가하십시오. JS의 pages/ 폴더. pages/website-1/about.js 에 다음 내용을 추가하겠습니다.
function About ( ) {
return < div > About website 1 </ div > ;
}
export default About ; 그리고 다음 코드에 대한 코드 pages/website-2/about.js :
function About ( ) {
return < div > This is website 2 </ div > ;
}
export default About ; local.website-1.com 및 local.website-2.com 호스트 파일에서 맵핑 한 다음 입력하여 서버를 부팅합니다.
node index.jshttp://dev.pizza.local.website-1.com/about 및 http://local.website-2.com/about로 이동하면 위의 구성 요소가 다음.js 인스턴스로 표시됩니다!
다음 하나의 다음 웹 사이트만으로 두 개의 다른 웹 사이트를 지원하고 하나의 Express.js 서버 만 사용하여 서비스를 제공하고 싶다고 가정 해 봅시다. 프로젝트 루트 내부에 .krabs.js 또는 .krabs.config.js 파일 내에 다음 구성을 작성하십시오.
module . exports = {
tenants : [
{
name : 'website-1' ,
domains : [
{
development : / dev.[a-z]*.local.website-1.com / , // Regex supported!
staging : 'stage.website-1.com' ,
production : 'website-1.com' ,
} ,
] ,
} ,
{
name : 'website-2' ,
domains : [
{
development : 'local.website-2.com' ,
staging : 'stage.website-2.com' ,
production : / [w|d|-|_]+.website-2.com / , // Regex supported!
} ,
] ,
} ,
] ,
} ; index.js 파일을 만들고 다음 내용으로 작성하십시오.
const fastify = require ( 'fastify' ) ( { trustProxy : true } ) ;
const next = require ( 'next' ) ;
const krabs = require ( '../dist/fastify-krabs' ) . default ;
const dev = process . env . NODE_ENV !== 'production' ;
const app = next ( { dev } ) ;
async function main ( ) {
try {
await app . prepare ( ) ;
const handle = app . getRequestHandler ( ) ;
fastify
. get ( '*' , ( request , reply ) => krabs ( request , reply , handle , app ) )
. listen ( 3000 , ( ) => console . log ( 'server ready' ) ) ;
} catch ( err ) {
console . log ( err . stack ) ;
}
}
main ( ) ; .krabs.js 파일 내부에서는 website-1 과 website-2 두 가지 name 속성이있는 두 개의 세입자를 구성했습니다. 이제 Next.js의 기본 pages/ 디렉토리 내부에 두 개의 새로운 폴더를 만들어 봅시다.
pages/
- _app.js
- website-1
- website-2 이 두 폴더 내부에 원하는 페이지를 추가하십시오. 다음 폴더는 다음 폴더가 다음 폴더로 처리되므로 다음 폴더를 추가하십시오. JS의 pages/ 폴더. pages/website-1/about.js 에 다음 내용을 추가하겠습니다.
function About ( ) {
return < div > About website 1 </ div > ;
}
export default About ; 그리고 다음 코드에 대한 코드 pages/website-2/about.js :
function About ( ) {
return < div > This is website 2 </ div > ;
}
export default About ; local.website-1.com 및 local.website-2.com 호스트 파일에서 맵핑 한 다음 입력하여 서버를 부팅합니다.
node index.jshttp://dev.pizza.local.website-1.com/about 및 http://local.website-2.com/about로 이동하면 위의 구성 요소가 다음.js 인스턴스로 표시됩니다!
여기에서 전체 문서 (실제 코드 예제 포함)를 찾을 수 있습니다!
Krabs는 Freedom에서 무료 이며 MIT 라이센스에 따라 라이센스를 부여합니다.
