Angular开发环境示例(NestJS版)
首先
之前我创建了一个Angular + Express的开发环境示例,现在我将Express替换为NestJS,所以重新发布。
Angular + Nest Example 的中文释义:Angular与Nest示例
请参考「Angular+Express开发环境示例」以了解有关功能和基本结构的信息。
以下是替代步骤的描述。
创建Nx工作区
使用 create-nx-workspace 命令在 Angular-Nest 上构建工作空间,并将 Angular + Express 的开发环境示例合并进来。
创建nx工作区
首先
> npx create-nx-workspace
创建一个工作空间。
在中间选择”angular-nest”,然后输入工作空间名称等信息。
※ 这次我们将应用程序名称设置为”web”。
这样一来,
· 前端:web
· 后端:api
就会变得简洁明了。
只需要这一步,就可以创建工作空间,并构建Angular的前端和NestJS的后端。
启动确认
我尝试启动。
首先是前端。
> nx serve web
后端
> nx serve api
当在浏览器中访问 http://localhost:4200/ 时,会显示以下画面。
“Welcome to api!” 部分已设为由API返回数据。
合并现有处理
因为环境已经设置完毕,现在可以正常开始开发了。
我现在想要替换”Angular + Express开发环境示例”,所以我需要将上述的源代码合并到我创建的工作空间中。
大部分情况下,只需将文件整个添加即可,但以下几点需要注意。
· angular-nest-example\apps\api\src\app\app.module.ts:将此文件路径进行本地语言化
这是后端API模块的定义。
如果在后端添加了服务或控制器,则需要将其添加到这里的定义中。
・angular-nest-example\apps\web\src\app\app.module.ts
・angular-nest-example\apps\web\src\app\app.component.html
・angular-nest-example\apps\web\src\app\app.component.ts
以下是使用本地化的中文翻译:
・angular-nest-example\apps\web\src\app\app.module.ts
・angular-nest-example\apps\web\src\app\app.component.html
・angular-nest-example\apps\web\src\app\app.component.ts
这是前端应用的定义。
在创建工作空间时,它显示的是“Welcome to web!”等页面,所以需要进行修改。
我认为在合并文件时覆盖这些部分应该没问题。
・angular-nest-example\apps\web\src\index.html
这是index文件。
如果需要加载外部图标等内容,需要在这里添加链接。
(例如使用Material Icons:
等等。)
・angular-nest-example\apps\web\src\styles.scss
这里存放着全局样式。
如果使用了全局样式,请将其移植到这里。
确认启动
我将尝试再次在http://localhost:4200/启动nx serve web、nx serve api。
如果登录页面显示出来并且成功登录,那就算是成功了。
同时启动后端和前端。
为了避免分别启动的麻烦,我会将它们一起启动。
在Linux中,可以使用&进行连续启动,所以只需简单地使用”nx serve api & nx serve web”即可,但为了能在Windows上运行,我会使用npm-run-all。
这样,我可以通过npm start同时启动两者。
{
"name": "angular-nest-example",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "nx",
"postinstall": "node ./decorate-angular-cli.js && ngcc --properties es2015 browser module main",
"start": "run-p start:api start:web", ※ run-pで同時実行
"start:api": "nx serve api", ※ バックエンドの起動
"start:web": "nx serve web", ※ フロントエンドの起動
"build": "nx build",
"test": "nx test"
},
"private": true,
"dependencies": {
"@angular/animations": "^12.2.0",
"@angular/common": "^12.2.0",
"@angular/compiler": "^12.2.0",
"@angular/core": "^12.2.0",
"@angular/forms": "^12.2.0",
"@angular/platform-browser": "^12.2.0",
"@angular/platform-browser-dynamic": "^12.2.0",
"@angular/router": "^12.2.0",
"@nestjs/common": "^7.0.0",
"@nestjs/core": "^7.0.0",
"@nestjs/platform-express": "^7.0.0",
"@nrwl/angular": "13.0.2",
"npm-run-all": "^4.1.5", ※ npm-run-allを追加
"reflect-metadata": "^0.1.13",
"rxjs": "~6.6.0",
"tslib": "^2.0.0",
"zone.js": "~0.11.4"
},
添加调试
为了进行调试,我们将添加launch.json文件。
这样,通过“Launch Chrome”我们就可以启动Chrome并进行前端调试。
如果想要进行后端调试,请使用“Attach Node”选项来连接正在运行的Node。
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Attach Node",
"port": 9229,
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "pwa-node"
},
{
"type": "pwa-chrome",
"request": "launch",
"name": "Launch Chrome",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}"
}
]
}
杂感
以上就是替换完成。
现在,源代码的更改将继续自动检测和更新,并且还可以进行调试等操作。
由于使用Nx来构建基础环境,所以文件结构非常清晰整洁。以前使用Express时,需要在后端的app.ts中写入路由处理等代码,现在不再需要这样做,真是帮了大忙。
然而,无法通过Heroku进行构建了。
可能是因为出现了错误R14(超过内存配额),所以可能只是简单的内存不足……。
既にNxを使用するのは手間がほとんどなかったため、ファイル構成を見直したい場合などにも、Nxを利用して置き換えることも考えられます。
添加
据说从Nx版本15.2.0开始,无法再使用”angular-nest”。
因此,好像需要分别生成nest和angular。我参考了以下网站并尝试了一下。
首先创建nest环境(api)。
npx create-nx-workspace@latest --preset nest --name angular-nest-example3 --appName api --nxCloud true
进入已创建的项目文件夹,并生成angular的web环境。
npm install @nrwl/angular
nx generate @nrwl/angular:application --name web
暫時只需要這樣,我們已經確認「api」和「web」的資料夾已被建立,並且可以藉由執行 nx serve api 和 nx serve web 分別啟動它們。
我认为你可以按照相同的方法来进行环境搭建。