KRABS adalah Express-Ready Express.js/mengacak middleware untuk melayani ribuan situs web yang berbeda dari satu instance next.js.
KRABS tersedia di NPM dan dapat diinstal sebagai berikut:
Untuk Express.js (lihat di NPM)
yarn add krabs
# or
npm install --save krabsUntuk mengatasinya (lihat di NPM)
yarn add fastify-krabs
# or
npm insall --save fastify-krabs_app dan _document halaman adalah umum untuk setiap situs web.Anda dapat menonton pengantar video di YouTube :

Katakanlah kami ingin mendukung dua situs web yang berbeda hanya dengan satu instance Next.js, dan melayani mereka hanya menggunakan satu server Express.js. Tulis konfigurasi berikut di dalam file .krabs.js atau .krabs.config.js di dalam akar proyek Anda:
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!
} ,
] ,
} ,
] ,
} ; Buat file index.js dan isi dengan konten berikut:
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 ( ) ; Di dalam file .krabs.js kami, kami mengkonfigurasi dua penyewa dengan dua properti name yang berbeda: website-1 dan website-2 . Jadi sekarang mari kita buat dua folder baru di dalam pages/ direktori/ direktori default berikutnya:
pages/
- _app.js
- website-1
- website-2 Jangan ragu untuk menambahkan halaman apa pun yang Anda inginkan di dalam kedua folder ini, karena mereka akan diperlakukan karena mereka adalah pages/ folder/ folder. Mari tambahkan konten berikut ke pages/website-1/about.js :
function About ( ) {
return < div > About website 1 </ div > ;
}
export default About ; dan kode berikut untuk pages/website-2/about.js :
function About ( ) {
return < div > This is website 2 </ div > ;
}
export default About ; Peta local.website-1.com dan local.website-2.com di file host Anda, lalu boot server dengan mengetik:
node index.jsPergi ke http://dev.pizza.local.website-1.com/about dan http://local.website-2/about, Anda akan melihat komponen di atas yang diberikan oleh instance next.js yang sama!
Katakanlah kami ingin mendukung dua situs web yang berbeda hanya dengan satu instance Next.js, dan melayani mereka hanya menggunakan satu server Express.js. Tulis konfigurasi berikut di dalam file .krabs.js atau .krabs.config.js di dalam akar proyek Anda:
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!
} ,
] ,
} ,
] ,
} ; Buat file index.js dan isi dengan konten berikut:
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 ( ) ; Di dalam file .krabs.js kami, kami mengkonfigurasi dua penyewa dengan dua properti name yang berbeda: website-1 dan website-2 . Jadi sekarang mari kita buat dua folder baru di dalam pages/ direktori/ direktori default berikutnya:
pages/
- _app.js
- website-1
- website-2 Jangan ragu untuk menambahkan halaman apa pun yang Anda inginkan di dalam kedua folder ini, karena mereka akan diperlakukan karena mereka adalah pages/ folder/ folder. Mari tambahkan konten berikut ke pages/website-1/about.js :
function About ( ) {
return < div > About website 1 </ div > ;
}
export default About ; dan kode berikut untuk pages/website-2/about.js :
function About ( ) {
return < div > This is website 2 </ div > ;
}
export default About ; Peta local.website-1.com dan local.website-2.com di file host Anda, lalu boot server dengan mengetik:
node index.jsPergi ke http://dev.pizza.local.website-1.com/about dan http://local.website-2/about, Anda akan melihat komponen di atas yang diberikan oleh instance next.js yang sama!
Anda dapat menemukan dokumentasi lengkap (dengan contoh kode nyata) di sini!
Krabs gratis seperti dalam kebebasan dan dilisensikan di bawah lisensi MIT .
