-
-
Notifications
You must be signed in to change notification settings - Fork 54
Developer Information 1
開発者関連の情報をまとめていきます。
リポジトリの中にrelease.htmlというHTMLファイルと、debug.htmlというHTMLファイルの2つがあります。
前者はmaplat.jsを呼んでいますが、後者はコンパイルしてminifyする前のJavaScriptの呼び出し方で書かれています。
つまり、release.htmlで書かれている
<script src="js/maplat.js"></script>
を、debug.htmlの
<script src="js/aigle-es5.min.js"></script>
<script src="js/require.min.js"></script>
<script src="js/config.js"></script>
に変更するとコンパイル前のJavaScriptが呼べます。
モバイルアプリサンプルの方はmaplat.jsを読んでいるものしかないですが、これも同様に書き換えればコンパイル前のJSファイルが読み込めます。
debug.htmlでは3ファイルしか読み込んでいないように見えますが、require.jsを用いておりますので、実際にはもっと多数のjsファイルが読み込まれます。
どんなファイルが読み込まれるかの情報は、config.jsの後半に大半が(全てではないです)書かれています。
(ちなみに、config.jsの前半はInternet Explorer 11に対応するためのPolyfilが書かれています。)
require.jsを使うと、関連するJavaScriptを、
require(['xxx'], function(xxx) {
...
});
あるいは
define(['xxx'], function(xxx) {
...
});
という記述をすればjs/xxx.jsを自動読み込みするような仕組みで書くことができます。
が、よくあるxxx-version.min.jsみたいなファイル名をいちいち全部書くのは大変なので、別名をつける仕組みがあるのですが、その別名定義がconfig.jsに書かれているので、ここを見ると多くの読み込まれるJavaScriptファイルを一覧できます。
この部分です。
paths: {
'i18nxhr': 'i18nextXHRBackend.min',
'ol3': 'ol-debug',
'ol-custom': 'ol-custom',
'i18n': 'i18next.min', //8.4.2
'turf': 'turf_maplat.min', //4.7.3
'swiper': 'swiper.min', //3.4.2
...
また、この部分のだいぶん後に、
require(['app'], function(app) {
Maplat.__app = app;
if (Maplat.__func) Maplat.__func(app);
});
という記述がありますが、この部分で、js/app.jsというJavaScriptファイルを一番最初に呼んでいます。
このjs/app.jsが、Maplatのメインのロジックが記載されているJavaScriptファイルであり、このjs/app.jsの中でさらに
define(['histmap', 'sprintf', 'i18n', 'i18nxhr', 'swiper', 'bootstrap'],
function(ol, sprintf, i18n, i18nxhr, Swiper, bsn) {
...
と書かれているので、さらにhistmap、sprintf、i18n...といったJavaScriptファイルが芋づる式に読み込まれます。
Maplatのリポジトリをcloneした後、そのディレクトリの下で
npm install
を実行すると、gulpなどnodeの開発環境がインストールされます。
その後、
npm run build
を実行するとタスクが走り、修正されたapp.js等を組み込む形で、maplat.jsが生成されます。
どのような処理が走っているかというと、まずpackage.jsonの中には
"scripts": {
"build": "gulp build",
"server": "gulp server"
},
と書かれていますので、実際にはgulpが動いているのがわかります。
そこで、gulpfile.jsを見ていただくと、
gulp.task('build', ['create_example'], function() {
...
gulp.task('create_example', ['concat_promise'], function() {
...
gulp.task('concat_promise', ['build_withoutpromise'], function() {
...
gulp.task('build_withoutpromise', function() {
...
gulp buildを実行すると、build_withoutpromise、concat_promise、create_example、buildの順で実行されることがわかります。
build_withoutpromiseでは、
r.js -o rjs_config.js
というコマンドを実行しています。
これは、rjs_config.jsファイルでの設定に従って、require.jsで読み込まれているJavaScript群をまとめて最適化、Minifyまでやってくれるrequire.jsのツールの実行です。
続いて、concat_promiseでは、aigle-es5.min.jsという、Internet Explorer向けのPromise機能のPolyfilをマージしています。
このJavaScriptファイルはr.jsコマンドではうまく一体化できないため、別途個別マージしています。
その後、create_example、buildではサンプルプログラムの作成機能、中間ファイルの削除などが実行され、buildが完了します。