0
1

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 5 years have passed since last update.

JavaScript真田丸MVC コールバック関数の中で何とかする方法(私的編)

Posted at

コールバック関数の罠

JavaScriptで実装する際に、コールバック関数の中に書かなければならない事もあります。

例えばReact.jsとかReact.jsとかReact.jsを使った場合にです。

そんな時に、関数がとっちらかってしまう事もままあります。

昨年実装させていただいた地図関連の実装でも、大量の関数が1ファイルにダッダーンと並んでしまいました。

MVC真田丸

そんな時に、せめて私だけでも助かりたい・・・いや、綺麗にコーディングしたいと思ってこんな事をやってみました。

ただのカテゴリわけです。

var Model = {};
var View = {};
var Controller = {};

コールバック関数内に配列を用意しました。

ここに関数を埋め込んで行きます。

Model = {
    getTargetRecords : function (self, hoge) {},
};
View = {
    setMainPage : function (self, viewData) {}
};
Controller = {
    __Constructor : function (self) {}
};

Controller.__Constructor(this);

何が良いのか?

実装箇所がぱっと見でわかり良いです。

よってメンテナンス性と可読性があがります。

ついでに・・・

ここではMVCしか書いてませんが、他にもこんな階層を用意したりします。

  • Service
  • EventBind

ServiceはMVCで言うモデル層です。

昨今はモデル層でDBアクセス、ロジックはコントローラかその配下の階層というのが多い気がしますので、こちらでもService層を用意してみました。

コントローラからサービスを呼び、サービスからモデル層を呼び、結果はコントローラに返します。そしてコントローラからビュー層を呼ぶという仕組みです。

またJavaScriptらしくevent層もご用意!

こちらはコントローラから必要な条件をサービス層で用意し、戻り値を元にevent層を呼ぶ形です。

この結果、eventバインド関連をここに丸っとまとめるって寸法です。

この先の未来へ

とりあえずJavaScriptでclassがおおっぴらにつかえるまではこの手で行こうかと思います。

そのうち、古くてクラスが使えない例えばインターネットえくすぷろーら11とか11とか11が無くなったら、クラスでこの実装を再考してみようかなって思いますです。

かしこ。

0
1
1

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?