Преобразуйте приложение Angular 8 в stati c, используя Angular Universal - PullRequest
0 голосов
/ 29 февраля 2020

Я недавно купил тему, созданную с использованием Angular 8.1.2 от Themeforest. Мой клиент хочет использовать полностью стати c (HTML + vanilla JS) версию этой темы, чтобы использовать ее в полностью серверном приложении.

В Themeforest была только React и Angular версий, поэтому я попытался использовать Angular Universal для преобразования моей темы Angular 8 в сайт c.

Мой полный пакет. json в https://pastebin.com/ga20p1CV Я делюсь соответствующей частью пакета. json в приведенном ниже

"build:client-and-server-bundles": "ng build --prod && ng run myapp:server:production --bundleDependencies all",
"build:prerender": "npm --max_old_space_size=8096 run build:client-and-server-bundles && npm --max_old_space_size=8096 run compile:server && npm run generate:prerender",
"build:ssr": "npm --max_old_space_size=8096 run build:client-and-server-bundles && npm --max_old_space_size=8096 run compile:server",
"compile:server": "webpack --config webpack.server.config.js --progress --colors",
"generate:prerender": "cd dist && node prerender",
"serve:prerender": "cd dist/browser && http-server",
"serve:ssr": "node dist/server"

SSR работает с использованием Universal , и я могу запустить созданный сайт в dist папка с сервера Node.

Однако HTML, отображаемый сервером Node, по-прежнему полон директив Angular. Он ничем не отличается от вывода, выводимого командой ng build.

enter image description here

Я скачал HTML, отображаемый сервером Node, и запустил его как stati c веб-приложение. Если я что-то изменяю внутри

<app> .... </app>

, это отображается на долю секунды, а затем немедленно заменяется исходным содержимым. То есть Angular по-прежнему отображает содержимое на стороне клиента.

Есть ли способ остановить отображение DOM на стороне клиента внутри тега 'app'?

1 Ответ

0 голосов
/ 29 февраля 2020

У вас всегда будет angular разметка компонентов в сгенерированном html.

Angular universal выполняет рендеринг запрошенной страницы на стороне сервера и отправляет html этой страницы клиенту. Как только браузер завершит рендеринг этой страницы, «обычное» клиентское приложение angular вступает во владение для навигации и рендеринга.

...