GeneXus17にAngularジェネレータが追加されたので試してみました。
Angularジェネレータはまだベータ版なのですね。
17のアップグレードのどこかか、18で正式版という感じなのでしょうか。
Angular アプリケーションの開発
こちらの概要を見るとAngularはフロントサイド(画面系)に使用されて、
サーバー側は今までと同じようにJavaや.NETで生成・動作させる形になるようです。
スマートデバイスと同じ構成イメージだと思います。
「My first Angular application」に従って確認していきます
開発環境セットアップ
1) Node.jsをインストール
https://nodejs.org/en/
インストーラーをダウンロードしてインストール
先週はv15.14.0だったのですが、もう16がでてますね、早いな。
2) バージョン確認
インストールしたらコマンドプロンプトからバージョンを確認します
node --version

3) npm package managerのインストール
こちらはNode.jsと一緒にインストールされてますので、バージョン確認だけ
npm --version

4) Angular CLIのインストール
こちらはコマンドプロンプトからインストール
npm install -g @angular/cli

「Node.js」が実行環境で
「npm」はNode.jsのモジュールを管理するツール
「Angular CLI」はNode.jsのコマンドラインツールということでした
5) 動作テスト
試しに(GeneXusとは関係なく)Angularのプロジェクトを作成してみます
コマンドラインからプロジェクトを作成(AngularAppTestがプロジェクト名)
ng new AngularAppTest
ここにプロジェクトディレクトリが作成されました
C:\Users\syusa\AngularAppTest

次にコンパイル?サーバー起動
cd C:\Users\syusa\AngularAppTest
ng serve

ブラウザからlocalhost:4200にアクセスすると初期画面が表示されました

ここまででAnglarの開発環境セットアップが完了となります
GeneXusでAnglarアプリの作成
1) 新規KBを作成
のはずがAngularジェネレータが選べませんね。。。

とりあえずサーバーサイドはJavaにする予定なので、Javaを選択してKB作成
[設定]のKBプロパティから新しい環境を追加する形で[新規環境]を選んだら
こちらにはAngularが選択できました。

バックエンドはJava
DBはSQLServer
フロントエンドはJava(解除できない)とWeb(Angular)をチェック
[現在の環境として設定]もチェックしてOK

こうゆう構成になるようですね。
※元々のJava環境は消しました
ということはJavaのWeb画面も作成されるうえで、Angularの画面も作成されるという形になるようです
2) サンプル画面の作成①
さて、ここで少し迷いました
サンプルのトランザクション(伝票と顧客)を定義して普通にビルドして実行した所、
通常のJavaのWeb画面が表示されました。


Angularの画面はどのように作るんだろう??
どうやらそもそも私の想定が違っていたようで、
Angularはネイティブモバイルアプリ(スマートデバイス)と同じイメージのようです
なのでPanelやMenuオブジェクト等を使用して作成するようです
3) サンプル画面の作成②
一番簡単にネイティブモバイルアプリを作る方法、
トランザクションのWorkwith for SmartDevicesにチェックを入れて作成

Menuオブジェクトも作成して、顧客と伝票画面の呼び出しを追加

これで最低限のアプリの準備が出来ました
ビルドをするとAngularのモジュールが作成されたようです。

ここまででAnglarアプリの作成が完了となりました
Anglarアプリの実行
最初にGeneXusで作成したAnglarアプリを環境へインストールするようです
コマンドプロンプトから実行
cd C:\knowlage_base\gx17\TestAngularKB_17U2\AngularJava\mobile\Angular\Menu
npm install
ここでエラーが発生しました
116 verbose stack Error: unable to resolve dependency tree
116 verbose stack at Arborist.[failPeerConflict] (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:1157:25)
116 verbose stack at Arborist.[loadPeerSet] (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:1134:34)
116 verbose stack at async Arborist.[buildDepStep] (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:838:11)
116 verbose stack at async Arborist.buildIdealTree (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:209:7)
116 verbose stack at async Promise.all (index 1)
116 verbose stack at async Arborist.reify (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\reify.js:131:5)
116 verbose stack at async Install.install (C:\Program Files\nodejs\node_modules\npm\lib\install.js:137:5)
117 verbose cwd C:\knowlage_base\gx17\TestAngularKB_17U2\AngularJava\mobile\Angular\Menu
118 verbose Windows_NT 10.0.19041
119 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
120 verbose node v15.14.0
121 verbose npm v7.7.6
122 error code ERESOLVE
123 error ERESOLVE unable to resolve dependency tree
124 error
125 error While resolving: [1mtestangularkb_17u2[22m@[1m1.0.0[22m
125 error Found: [1mtslib[22m@[1m2.2.0[22m[2m[22m
125 error [2mnode_modules/tslib[22m
125 error [1mtslib[22m@"[1m^2.0.0[22m" from the root project
125 error [1mtslib[22m@"[1m^2.0.0[22m" from [1m@angular/core[22m@[1m11.0.4[22m[2m[22m
125 error [2mnode_modules/@angular/core[22m
125 error [1m@angular/core[22m@"[1m11.0.4[22m" from the root project
125 error [35mpeer[39m [1m@angular/core[22m@"[1m>=6.0.0[22m" from [1mngx-virtual-scroller[22m@[1m4.0.3[22m[2m[22m
125 error [2mnode_modules/ngx-virtual-scroller[22m
125 error [1mngx-virtual-scroller[22m@"[1m^4.0.3[22m" from the root project
125 error
125 error Could not resolve dependency:
125 error [35mpeer[39m [1mtslib[22m@"[1m^1.10.0[22m" from [1mngx-virtual-scroller[22m@[1m4.0.3[22m[2m[22m
125 error [2mnode_modules/ngx-virtual-scroller[22m
125 error [1mngx-virtual-scroller[22m@"[1m^4.0.3[22m" from the root project
125 error
125 error Fix the upstream dependency conflict, or retry
125 error this command with --force, or --legacy-peer-deps
125 error to accept an incorrect (and potentially broken) dependency resolution.
125 error
125 error See C:\Users\syusa\AppData\Local\npm-cache\eresolve-report.txt for a full report.
126 verbose exit 1
さっぱりわからん!
と思いましたが、どうもバージョンが違っていて合わない模様
オプションをつけて再度実行
npm install --save --legacy-peer-deps
警告は出ましたが、正常に終了しました。
C:\knowlage_base\gx17\TestAngularKB_17U2\AngularJava\mobile\Angular\Menu>npm install --save --legacy-peer-deps
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated ini@1.3.5: Please update to ini >=1.3.6 to avoid a prototype pollution issue
npm WARN deprecated debug@4.2.0: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated uglify-es@3.3.9: support for ECMAScript is superseded by `uglify-js` as of v3.13.0
npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
npm WARN deprecated tslint@6.1.3: TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.
npm WARN deprecated core-js@2.6.12: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
added 1509 packages, and audited 1510 packages in 2m
92 packages are looking for funding
run `npm fund` for details
7 vulnerabilities (3 low, 3 moderate, 1 high)
To address all issues (including breaking changes), run:
npm audit fix --force
Run `npm audit` for details.
コマンドプロンプトはそのままに、サーバー起動
ng serve -o
※-oオプションは、ブラウザを自動的に開いてhttp:// localhost:4200 /に移動します
こんな画面が出てきました


データの表示、更新、削除などは一通りできました。
まとめ
出てきた画面があまりにも簡素だったので正直拍子抜けしてしまいました。。。
素のGeneXusのデザインはやはりこうなってしまうのですね。
デザインシステムを使って他のテーマを利用するのが一番良いのだと思います。
Angularがネイティブモバイルアプリと同じで、Panelオブジェクトを使うのは少々意外でした。
モバイル向けのジェネレータの方向性なのですかね。
そういえばどこかでそんな話を聞いたような気もします。
※※バージョン違いのエラーについてですが、
Angularジェネレータはv12.17辺りのNode.jsで作られたぽいので、Node.jsはv12を使うと良いのかもしれません。
コメント
コメントを投稿