Angularuniversal是否可以完全在服务器端渲染?
创始人
2024-10-29 21:01:06
0

是的,可以通过Angular Universal的服务端渲染来完成。以下是一个基本示例:

首先安装Angular Universal:

ng add @nguniversal/express-engine

然后导入ServerModule和ModuleMapLoaderModule:

import { NgModule } from '@angular/core';
import { ServerModule } from '@angular/platform-server';
import { AppModule } from './app.module';
import { AppComponent } from './app.component';
import { ModuleMapLoaderModule } from '@nguniversal/module-map-ngfactory-loader';

在AppModule中,添加ServerModule和ModuleMapLoaderModule:

@NgModule({
  imports: [
    AppModule,
    ServerModule,
    ModuleMapLoaderModule
  ],
  bootstrap: [AppComponent],
})
export class AppServerModule {}

在服务端应用的main.ts中,使用renderModuleFactory函数进行渲染:

import 'zone.js/dist/zone-node';
import { enableProdMode } from '@angular/core';
import { renderModuleFactory } from '@angular/platform-server';
import { AppServerModuleNgFactory } from './src/main.server';

const express = require('express');
const { join } = require('path');

const app = express();

const PORT = process.env.PORT || 4000;
const DIST_FOLDER = join(process.cwd(), 'dist');

app.engine('html', (_, options, callback) => {
  const renderOptions = {
    document: options.req.initialUrl,
    url: options.req.url,
    extraProviders: [
        { provide: 'req', useValue: options.req },
        { provide: 'res', useValue: options.res },
      ],
  };

  renderModuleFactory(AppServerModuleNgFactory, renderOptions)
    .then(html => callback(null, html));
});

app.set('view engine', 'html');
app.set('views', join(DIST_FOLDER, 'browser'));

app.get('*.*', express.static(join(DIST_FOLDER, 'browser')));
app.get('*', (req, res) => {
  res.render('index', { req });
});

app.listen(PORT, () => {
  console.log(`Node server listening on http://localhost:${PORT}`);
});

通过运行npm run build:ssr和npm run serve:ssr命令来构建和启动

相关内容

热门资讯

总算清楚!潮汕雀友会辅助,we... 【福星临门,好运相随】;总算清楚!潮汕雀友会辅助,wepoker开辅助能查到吗,微扑克教程(有挂解密...
详细说明!创思维激K辅助器开挂... 详细说明!创思维激K辅助器开挂,雀神麻将小程序辅助软件(其实存在有挂);1、起透看视 雀神麻将小程序...
玩家必备教程!789大菠萝攻略... 玩家必备教程!789大菠萝攻略,wepokerplus透视脚本免费,2025新版总结(有挂秘诀);1...
玩家必知教程!微信链接透视脚本... 玩家必知教程!微信链接透视脚本下载,微信填大坑辅助(总是存在有挂)微信链接透视脚本下载能透视中分为三...
免费测试版!小程序河北微乐脚本... 免费测试版!小程序河北微乐脚本,wejoker辅助器要钱玩吗,黑科技教程(有挂秘籍),小程序河北微乐...
科普!潮友会app下载安卓,微... 科普!潮友会app下载安卓,微乐家乡官方app下载(果然真的是有挂)1、金币登录送、破产送、升级送、...
查到实测!微信小程序游戏辅助,... 查到实测!微信小程序游戏辅助,wepoker有没有辅助,2025版教程(真实有挂);查到实测!微信小...
重大通报!天天爱消除自动消除辅... 重大通报!天天爱消除自动消除辅助,微乐陕西小程序破解器下载(竟然有挂)一、微乐陕西小程序破解器下载可...
实测发现!微信小程序辅助器脚本... 您好:微信小程序辅助器脚本这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户...
一分钟了解!川娱竞技插件,哥哥... 一分钟了解!川娱竞技插件,哥哥打大a辅助辅助(竟然有挂)1、下载好哥哥打大a辅助辅助正确养号方法之后...