3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

パーソンリンクAdvent Calendar 2022

Day 1

GoldenLayoutマルチウインドウライブラリ

Last updated at Posted at 2022-11-08

背景

実装中のUIは、
ブラウザ画面内に複数のウインドウを並べて操作できる
ものになっています。

公式に例でいうとこんな感じ
スクリーンショット 2022-11-08 15.39.36.png

使用ライブラリ

そこでGoldenLayoutというJavaScriptライブラリを使用しています。
https://golden-layout.com/

ちなみにVue.jsには対応していません。辛い。
ただJavaScriptライブラリなので無理やりVueコンポーネントに導入して
使用することはできています。

この記事はVue.jsで使用することを前提に記述していきます。
Reactの例は公式ドキュメントにあります。

気をつけたこと

通常のシングルページアプリケーションと大きく違うのは、
ページ遷移でなく、
ウインドウを出すか出さないか、消すか
という動きになるところです。

意識する点として、
重複したウインドウは出すのか、
新たに同じウインドウを出そうとした場合中身を更新するのか、
ウインドウからウインドウに遷移する際に値を渡す際は
どう伝達するか、などが挙げられます。

ちなみに私はpinia(状態管理ライブラリ)
を使用して別ウインドウへの情報伝達を行っています。

ディレクトリ構成

主なもののみのディレクトリ構成を下記に示します。

.
├── src
│   ├── layouts
│   ├── panes
│   ├── components
│   └── stores
└── test

特徴としてはpanes(ペイン)ディレクトリがあることです。
ペイン(ウインドウ)単位ごとにコンポーネントを作成し、
panesディレクトリに配置することにより、
呼び出されるペインとその他に使われているコンポーネントを区分しています。

GoldenLayoutを導入した親コンポーネントでは、
/panes配下に置いたコンポーネントを探索して表示するよう
処理を記述しています。

まとめ

ページ遷移ではなくウィンドウ形式のUIにしたい場合は
GoldenLayoutの使用を検討してみましょう。

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?