1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OutSystemsで複数のJavaScript/CSSから成る外部ライブラリを導入する方法

1
Posted at

はじめに

OutSystems では外部ライブラリを導入することができますが、
複数の JS / CSS / 画像リソースを持つライブラリの導入については、
情報が少なく、ハマりやすいポイントが多いと感じました。

特に企業案件では、以下のような制約があることが多いと思います。

  • 外部 CDN の利用禁止
  • 本番環境からインターネット通信不可
  • 利用ライブラリのバージョン固定が必須

その結果、

「ライブラリ自体は問題なさそうなのに、なぜか画面に反映されない」

という状況に陥りがちです。

本記事では、
jQuery + プラグイン(複数の JS / CSS / 画像を含むライブラリ)を
CDN を使わずに OutSystems(Reactive Web)へ取り込み、
実際に動作するプロトタイプを作成するまでの手順
をまとめます。

Reactive Web 特有のハマりポイントや考え方も含めて解説します。

今回作るプロトタイプ

  • jQuery プラグインを使った日付入力 UI
  • テキストボックスをクリックするとカレンダーが表示される
  • CDN は使わず、すべてローカルリソース

使用環境

  • OutSystemsバージョン:11
  • Service Studioバージョン:11.55.46
  • ブラウザ:MicroSoft Edge
  • アプリ種別:Reactive Web App

使用ライブラリ

  • jQuery(OutSystems 標準)
  • jQuery UI
    • JS
    • CSS(+画像リソース)

使用するファイル構成

今回は以下のファイルを使用します。

  • jquery-ui.min.js
  • jquery-ui.min.css
  • images/(CSS から参照される画像)

※ jQuery 本体は OutSystems に標準で含まれているため追加しません。

ライブラリのダウンロード

  1. jQuery UIから Datepicker を含むビルドをダウンロード
  2. zip を展開し、以下を確認
    • js ファイル
    • css ファイル
    • images フォルダ

OutSystems への取り込み

  1. Service StudioでjQueryとの依存を追加
    image.png

  2. Service Studioの Interface > Scripts > (右クリック)Import Script でjquery-ui.min.jsを追加
    image.png

  3. Service Studioの Data > Resources > (右クリック)Import Script でjquery-ui.min.cssとimages下のpngを追加
    階層は自由です。今回はライブラリごとにフォルダ分けるイメージでやります。
    image.png

  4. Resourcesに追加したリソースのデプロイ先を指定
    Target Directoryに指定がなければScriptの下に展開されます。
    今回、CSSはTarget Directoryの指定なし、ImagesフォルダにあったpngだけImagesの下に入るように設定します。
    Resourcesでは階層を作れませんが、ここで階層を再現することができます。
    image.png

画面への適用(Reactive Web)

CSS の設定

  1. 新しい画面を作成
  2. 画面のStyleSheetにCSSの@importを追加
ScreenName
@import url("/<モジュール名>/jquery-ui.min.css");

画面の作成

  1. 画面にInput Widgetを置く
    InputTypeはTextのままにしてください
  2. ローカル変数の作成
    このままだとエラーが出るのでローカル変数を作ります。
    型はTextです。
  3. Classの設定
    要素を特定するためStyle Classesに独自Classを設定しておきます。
    image.png

JavaScript の設定

  1. 画面のRequired ScriptsにjQueryとjquery-ui.min.jsを設定
    image.png
  2. 画面のOnRenderで先ほどクラスを付けた要素に対して以下のJavaScriptを設定
    OnRenderが適切かどうかは導入するライブラリによると思います。
    ライフサイクルを意識しながら適切なタイミングで呼ぶようにしてください。
OnRender
$(function() {
    $(".js-datepicker").datepicker();
});

ここまで出来たらPublishしましょう!

動作確認

InputWidgetをクリックするとカレンダーが出るようになったかと思います。
image.png

おわりに

今回は練習として jQuery UI の Datepicker を使用しましたが、
他の外部ライブラリでも JavaScriptやCSS から参照されるリソースの階層構造を意識すれば、
同様の手順で導入できると考えています。

なお、OutSystems では DOM を直接操作するライブラリの使用は
推奨されていません。

そのため、
「本当にそのライブラリを使う必要があるのか」
「OutSystems 標準機能やコンポーネントで代替できないか」
を検討した上で導入することが重要だと感じました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?