ルーティングについて
Web Clientのいろいろな資料を見ると
ルーティングを使用した方が良いとの記述が多いように思っています。
WEBアプリの作成経験が全くない為、的外れな事を言っているかもしれません。
Web Client版ペットショップアプリ(ソース公開)の内容を見ると
ルーティングを使用しておらずイベントのプログラムコールを使用しています。
WEBアプリを作成する場合はルーティングを使用した方が良いのでしょうか?
簡単には説明できないかもしれませんがどのような作り方が一般的なのでしょうか
-
ISHIJIMA さんお世話になっております。
一般的と言われると自信がありません;;
まだ数社の実績しかありませんが、ルーティング+遅延ロードをガシガシ使っています。
もしよろしければ近日中に、最近作ったサンプルプログラム第一弾をGithubとか弊社のホームページに置いておこうと思うのですがいかがでしょうか?
MagicのほうはアレですがAngular側はだいたいコレで行けるはずです。
データベースにはサンプルとしてすぐ動かせるようにSQLITEを使用しています。
ひぐまショップデモ ログイン・単票形式
https://youtu.be/46OjRa-k7F4ひぐまショップデモ 伝票形式
https://youtu.be/gtk_hep8B_kひぐまショップデモ JSON連携・ファイルアップロード・ダウンロード
https://youtu.be/WGh6LMTD62k -
竹本 靖夫 さん
お世話になります。
いろいろなサンプルをみてどのような作りか良いのか知りたいと思っています。
よろしくお願いします。
-
竹本 靖夫 さん
お世話になります。
>まだ数社の実績しかありませんが、ルーティング+遅延ロードをガシガシ使っています。
いろいろな資料を見るとルーティングが基本なのかなと思っています。
XPAの場合もそうだと思っているのですがペットショップアプリが使っていないので・・・
サンプルよろしくお願いします。
ある程度、ルーティングで作成してみてはいるのですが本当に良いのかが心配なのと
本当にこの作成方法で実際に運用した場合、問題ないのかなと・・・
サンプルよろしくお願いします。
-
Web Client版ペットショップアプリは、XPAで作成された既存アプリを
踏襲して作成しています。よってルーティングではなく、コールプログラムで
プログラムを呼び出す形を採用しております。
この意図は、出来るだけ従来のローコードの開発手法のまま、Web Clientの
アプリケーションが作成できることをお伝えしたかったからです。
しかし、実際の開発現場では、ルーティングを採用しているケースが
多く、遅延ロードを行う場合には、ルーティングで作られていることが
前提条件となり、ルーティングを選ぶ理由となっています。
現在、無償のWeb Clientハンズオンコース、
又は3日間で開催しておりますWeb Client基礎トレーニングコース
では、ルーティングを使ったWebアプリケーション開発の演習を
実施しております。
ぜひ、こちらのコースもルーティングのご参考になると思いますので
これからルーティングを学ばれる方にはご参加いただきたいです。
-
答えられたらでよいのですが遅延ロードとは何でしょうか?
大規模等の業務アプリを作成するとなるとやはりルーティング・遅延ロードが必須なのでしょうか?
-
答えられる範囲で恐縮ですが、シングルページアプリケーションでは
最初の読み込みですべてのコンテンツをロードします。
その分、その後のパフォーマンスが良いという特徴があります。
従来のWebアプリケーションでは、リクエストしたページのコンテンツだけを
ロードしますので、少し違いがございます。
一般的に、シングルページアプリケーションの規模が大きくなると
最初の読み込みが重くなり、画面表示が遅くなるというトラブルを抱えるケース
がございます。
そこで、Web Clientでは、最初に読み込むコンテンツの量を減らして、初期ページの読み込みの
高速化が期待される機能としてWeb Clientの遅延ロードがございます。
詳細については、本番環境へのデプロイと合わせて遅延ロードの設定を行う必要がございますので
Web Client基礎トレーニングコースをご検討いただければと思います。
-
Web Client基礎トレーニングコースを検討しようと思っているのですが4.7.1ではないですよね
4.7.1で機能がいろいろ追加されているのですがそのあたりはどうなりますか?
-
ISHIJIMAさん、ルーティングというのはWebの世界で一般的に用いられている技術ですね。Magicでもルーティングが行えると便利だからという要望で、あとから追加されたオプションだと思います。
おそらく、Webの世界からMagicに入ってくる人は、そのほうが分かり易いし、融通が利くからといった側面があると思います。
しかしながら、従来通りのプログラムリンクでもほとんどがこなせますので、Magicの作法になれた人は従来通りのやり方でもいいと思います。ケースバイケースですね。
-
基本的にリンクでできる事は確認しましたが
ログイン→動的メニュー(3階層)→プログラム等を考えると
今の私の把握しているところだとリンクたど限界があり難しいと判断しました。
ルーティングだと問題なくできそうな事までは確認できたのですが
本当にその作成手法が正しいのか
実用的には問題ないのかの疑問が残っています。
私のスタンスとしては基本構造はすべてxpaのみで作成したいと思っています。
あとのhtml・css・ts等は最低限にしたいと思っています。
できる限りxpaのみの生成である程度できる事を願っています。
多分このような考え方は間違っているのかもしれませんが・・・
-
例えば ログイン→メニュー→売上ヘッダ
までの処理をprog()で見ると
Routingをしない場合は
ログイン、メニュー、売上ヘッダ
となり最後の売上ヘッダ時点でまちがって「F5」キーを押した場合ログインまで処理が戻ります。
Routingをした場合prog()で見ると
売上ヘッダのみとなり、まちがって「F5」キーを押した場合売上ヘッダで処理が終わります。
たぶんプログラム本数も2桁単位で起動時間が遅くなるので、最初から理由がなければルーティングと遅延ロードの組み込みを行うのが良いとおもいました。
-
> できる限りxpaのみの生成である程度できる事を願っています。
Magicの基本姿勢は変わらないと思いますよ。
-
Magicブラウザクライアントの時も最初は面食らいましたが、だんだん落ち着いていきましたね。
-
竹本 靖夫 さん
>たぶんプログラム本数も2桁単位で起動時間が遅くなるので、
>最初から理由がなければルーティングと遅延ロードの組み込みを行うのが良いとおもいました。
私もそう思います。
Webアプリではそれが標準なのでしょうね
回答ありがとうございました。
-
xpaのみで構造作った場合の「F5」キーの挙動がよくわかっていません。
コンテキストの関係でメモリテーブルを使用していた場合とか
グローバル変数とか・・・
結構厄介みたいで・・・・
この辺りは解決しないといけないのかな・・・
「F5」キ-の挙動はきちんとしておかないと駄目ですね・・・
-
ちなみに「F5」キーを無効にする事はできるのかな?
-
こんにちはPuです
webのフレームワークを使用していない時は、clientはhtml+javascriptで
サーバーサイドはDB読んでjsonでDBの値を返してclientで表示する
もしくはサーバー側でhtmlをtemplateで出力する手法、magicで言うクラサバみたいな手法しかしりませんでした。
wdbフレームワークを使用するようになり、たいていのフレームワークはルーティングが基本なので
そういうもんだと思い使用しましたが、生産性の向上(これは書き方が統一される)、共通化
ソースの読みやすさなどのメリットがあると感じました
magicが生産性高いのも、一種magicと言うaplのフレームワークでの記述だと感じます
(ソースが読みやすい、共通性がある)
これはあくまでも私の感想です。
でわ~でわ~
-
Puさん
こんにちは
回答ありがとうございました。
やはり一般的にはルーティングなのですね
生産性向上・共通化・読みやすさ・・・大事ですよね
Webアプリの特性なのかもしれませんが戻る・進む・再読み込み・・
この辺りがどのように実装するかが難しそうです・・・
-
ISHIJIMAさんこんにちは
magic以外だったら通常はjavascriptで簡単なんですが
でわ~でわ~
-
Puさんこんにちは
>magic以外だったら通常はjavascriptで簡単なんですが
ちなみにjavascriptだとどんなふうに記述したり判断したりするのでしょうか?
-
ISHIJIMAさんこんにちは
参考サイトのurlを記載しておきますね
https://www.sejuku.net/blog/95024
でわ~でわ~
-
Puさんこんにちは
参考にさせていただきます。
ありがとうございました。
-
竹本 靖夫 さん こんばんわ
早速、ひぐまショップデモをダウンロードして実行してみました。
問題なく実行できました。
これからいろいろ確認して参考にさせていただきます。
ありがとうございました。
-
Loginのプログラムが起動される記述がないのに呼び出されるのは
Loginのルート名が「**」となっているからなのでしょうね
これはRoutingが呼び出された時に最初に起動するという事なのですかね
「**」の意味は何でしょうか?
-
Routingはフォルダ無しで
CommonフォルダーはWebモジュールでLoad on Demandはチェックなし
以外のフォルダーはWebモジュールでLoad on Demandはチェックあり
どのように使い分けるのでしょうか?
-
ISHIJIMA さんおはようございます。
質問に回答させていただきます。
1.「**」はAngularではルーティングにおけるワイルドカードでして「なんでも」です。
なので最後の行に仕込んで「すべてがなかったら」という感じで使用しています。2.基本はLoad on Demandで構築しております。
Load on Demandでない場合は初期ロード時間が大変なことになります。そしてLoad on DemandからLoad on Demandをコールする場合は「同じフォルダしかコールできない」という制限がありますのでヘッダやフッダなど共通モジュールに関してはLoad on Demandなしで行っています^-^。
-
竹本 靖夫 さん おはようございます。
わかりやすい回答で大変参考になります。
回答ありがとうございました。
-
息子に聞いてみましたが、ルーティングはWebアプリでは当たり前の手法だそうです。Magicでもこれが取り入れられたということですね。
-
こんにちはPuです
MVCが出てきたころ、WEBフレームワーク(サーバーサイド)はurlルーティング
(有名なのはRuby on Rails)考え方にビックリした遠い記憶が...
今、MVVMモデル(SPA)が出てきてvueルーティングに目から鱗
ルーティングよりもSPAフレームワークでびっくりしたのはデータの双方向バインディング
人間長く生きていると技術の進化にビックリです。ついていくのが大変です。
SPAの普及と共に、そろそろサーバーレス(AWS lambda)も勉強せねば
しらんけど(^^;
-
新しい技術についていくの大変ですよね・・・・
頑張らなければ・・・
-
Webアプリはページを記憶して、次回の使用時にそこからスタートすることができるので、プログラムリンクだけでは不自由なこともありそうですね。
サインインしてコメントを残してください。
コメント
30件のコメント