Angular CLI 6.0.0 RC为Universal + App Shell提供了一个选项

不久后,即将推出最新版本的Angular CLI 6.0.0!

スクリーンショット 2018-04-22 0.18.45.png

本文介绍了如何在目前的Angular CLI 6.0.0的RC版中集成Universal(服务器端渲染)和App Shell的步骤。

※在6.0.0版本发布后,操作可能会有所不同。

创建项目

请先安装Angular CLI 6.0.0 RC。

$ npm i -g @angular/cli@next

我要创建一个新项目。

$ ng new my-app --routing
$ cd my-app

将Universal集成

我将创建一个适用于Universal的文件套件。

$ ng g universal --client-project=my-app

我们执行npm install来更新依赖关系。

$ npm i

目前,已经修正了angular.json的路径设置,因为原来的设置错误。

"server": {
  "builder": "@angular-devkit/build-angular:server",
  "options": {
    "outputPath": "dist/my-app-server",
    "main": "src/main.server.ts",
    "tsConfig": "src/tsconfig.server.json"
  }
}

我认为,此后会有修正。(https://github.com/angular/angular-cli/issues/10288)

由于tsconfig.server.json的位置不好,所以将其移动。
※目前已被修正。

$ mv tsconfig.server.json src/tsconfig.server.json

由于移动,需要修正entryModule的路径。
※目前已经修正完毕。

{
  "extends": "./tsconfig.app.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app-server",
    "module": "commonjs"
  },
  "angularCompilerOptions": {
    "entryModule": "app/app.server.module#AppServerModule"
  }
}

将App Shell集成进去。

创建应用壳。

$ ng g app-shell --client-project=my-app --universal-project=my-app

我会修改设置以进行生产构建。

"app-shell": {
  "builder": "@angular-devkit/build-angular:app-shell",
  "options": {
    "browserTarget": "my-app:build",
    "serverTarget": "my-app:server",
    "route": "shell"
  },
  "configurations": {
    "production": {
      "browserTarget": "my-app:build:production"
    }
  }
}

应用程序的构建

用 ng run 进行构建。

$ ng run my-app:app-shell:production

我们来用浏览器确认一下。

$ npx http-server ./dist/my-app

当你启动服务器并打开http://localhost:8080,即可查看已构建的应用程序。

最后

我已经成功在RC版的Angular CLI中添加了App Shell。
手动修复非常麻烦呢!
在2018/05/06的v6.0.0中修复了Universal的错误,太好了!

由于Angular CLI 6.0.0仍在开发中,所以在命令方面可能会遇到一些困难,特别是在与1.7系列有所改变的部分。建议您可以使用–help选项来确认,或者参考angular/angular-cli和angular/devkit的文档或问题来解决问题。

请参考这个。

https://next.angular.io/guide/universal
https://github.com/puku0x/angular-pwa-sample/tree/next

https://next.angular.io/guide/universal
https://github.com/puku0x/angular-pwa-sample/tree/next

https://next.angular.io/guide/universal
https://github.com/puku0x/angular-pwa-sample/tree/next

https://next.angular.io/guide/universal
https://github.com/puku0x/angular-pwa-sample/tree/next

https://next.angular.io/guide/universal
https://github.com/puku0x/angular-pwa-sample/tree/next

广告
将在 10 秒后关闭
bannerAds