GeneXus17 Angularジェネレータを確認


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: testangularkb_17u2@1.0.0
125 error Found: tslib@2.2.0
125 error node_modules/tslib
125 error   tslib@"^2.0.0" from the root project
125 error   tslib@"^2.0.0" from @angular/core@11.0.4
125 error   node_modules/@angular/core
125 error     @angular/core@"11.0.4" from the root project
125 error     peer @angular/core@">=6.0.0" from ngx-virtual-scroller@4.0.3
125 error     node_modules/ngx-virtual-scroller
125 error       ngx-virtual-scroller@"^4.0.3" from the root project
125 error
125 error Could not resolve dependency:
125 error peer tslib@"^1.10.0" from ngx-virtual-scroller@4.0.3
125 error node_modules/ngx-virtual-scroller
125 error   ngx-virtual-scroller@"^4.0.3" 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を使うと良いのかもしれません。


コメント

このブログの人気の投稿

Tomcatの設定3:8080ポート以外で動作させる

IVS文字・サロゲートペア文字の注意

Tomcatの設定5:メモリ調整と起動モード

画面の初期表示や画面遷移で妙に時間がかかる、サーバー側のイベントの実行結果が怪しい場合

GeneXusのオプション設定、起動時オプション

Tomcatの設定2:アクセスログの活用