update
This commit is contained in:
1 parent
2396bbcf12
commit
baa5bc091e
14 files changed
+275
-269
No files matched your search
@@ -1,43 +0,0 @@
|
||||
import compression from 'compression'
|
||||
import express from 'express'
|
||||
import { createPageRenderer } from 'vite-plugin-ssr'
|
||||
|
||||
import { getPath, isProduction, port } from './shared'
|
||||
|
||||
export async function expressServer() {
|
||||
const app = express()
|
||||
|
||||
app.use(compression())
|
||||
|
||||
let viteDevServer
|
||||
if (isProduction) {
|
||||
app.use(express.static(getPath('dist/client')))
|
||||
} else {
|
||||
const vite = require('vite')
|
||||
viteDevServer = await vite.createServer({
|
||||
root: getPath(),
|
||||
server: { middlewareMode: 'ssr' },
|
||||
})
|
||||
app.use(viteDevServer.middlewares)
|
||||
}
|
||||
|
||||
const renderPage = createPageRenderer({ viteDevServer, isProduction, root: getPath() })
|
||||
app.get('*', async (req, res, next) => {
|
||||
const url = req.originalUrl
|
||||
const pageContextInit = {
|
||||
url,
|
||||
}
|
||||
const pageContext = await renderPage(pageContextInit)
|
||||
const { httpResponse } = pageContext
|
||||
if (!httpResponse) return next()
|
||||
const { body, statusCode, contentType } = httpResponse
|
||||
res.status(statusCode).type(contentType).send(body)
|
||||
})
|
||||
|
||||
app.listen(port)
|
||||
console.log(`Server running at http://localhost:${port}`)
|
||||
}
|
||||
|
||||
if (require.main === module) {
|
||||
expressServer()
|
||||
}
|
||||
@@ -1,47 +1,29 @@
|
||||
import fastify from 'fastify'
|
||||
import fastifyStatic from '@fastify/static';
|
||||
import fastify from 'fastify';
|
||||
|
||||
import { getPath, isDev, port } from './shared'
|
||||
import { fastifyRenderRouter } from '../renderer/fastify';
|
||||
import { getPath, isDev, port } from './shared';
|
||||
|
||||
const IS_PRERENDER = true;
|
||||
|
||||
export async function fastifyServer() {
|
||||
const app = fastify({
|
||||
logger: {
|
||||
prettyPrint: isDev
|
||||
}
|
||||
})
|
||||
prettyPrint: isDev,
|
||||
},
|
||||
});
|
||||
|
||||
if (isDev) {
|
||||
const vite = await import('vite')
|
||||
const { createPageRenderer } = await import('vite-plugin-ssr')
|
||||
|
||||
await app.register(import('@fastify/express'))
|
||||
app.register(import('@fastify/compress'), { global: false })
|
||||
const viteDevServer = await vite.createServer({
|
||||
root: getPath(),
|
||||
server: { middlewareMode: 'ssr' },
|
||||
})
|
||||
app.use(viteDevServer.middlewares)
|
||||
|
||||
const renderPage = createPageRenderer({ viteDevServer, isProduction: !isDev, root: getPath() })
|
||||
app.get('*', async (req, res) => {
|
||||
const url = req.raw.url || req.url
|
||||
const pageContextInit = {
|
||||
url,
|
||||
}
|
||||
const pageContext = await renderPage(pageContextInit)
|
||||
const { httpResponse } = pageContext
|
||||
if (!httpResponse) return
|
||||
const { body, statusCode, contentType } = httpResponse
|
||||
res.status(statusCode).type(contentType).compress(body)
|
||||
})
|
||||
if (isDev || !IS_PRERENDER) {
|
||||
app.register(fastifyRenderRouter, { isProduction: !isDev });
|
||||
} else {
|
||||
app.register(import('@fastify/static'), {
|
||||
root: getPath('dist/client')
|
||||
})
|
||||
app.register(fastifyStatic, {
|
||||
root: getPath('dist/client'),
|
||||
});
|
||||
}
|
||||
|
||||
app.listen(port)
|
||||
app.listen(port);
|
||||
}
|
||||
|
||||
if (require.main === module) {
|
||||
fastifyServer()
|
||||
fastifyServer();
|
||||
}
|
||||
@@ -2,8 +2,7 @@ import path from 'path'
|
||||
|
||||
export const port = Number(process.env['PORT'] || 16272)
|
||||
|
||||
export const isProduction = process.env['NODE_ENV'] === 'production'
|
||||
export const isDev = !isProduction
|
||||
export const isDev = process.env['NODE_ENV'] === 'development'
|
||||
|
||||
export function getPath(...segments: string[]) {
|
||||
return path.join(__dirname, '..', ...segments)
|
||||
|
||||
Reference in new issue
Block a user