[Titanium勉強日記 6] CommonJSモジュールとrequireについて調べた

学校が始まったのと、触っていくにつれてTitaniumが銀の弾丸ではない事が分かってきて、ペースダウンしてしまっているのですが、一応継続してTitaniumの習得を試みています。

表題の件なのですが、Titaniumの1.8以降ではシングルコンテキストなコーディング作法というのが推奨されています。その作法ではrequire関数でモジュールをロードします。まぁrequireを使っている分にはあまり疑問も無かったのですが、先日試してみた軽量ORMのjoliに含まれていた以下のコードを見て疑問が湧いてきました。

/**
 * In case joli.js is loaded as a CommonJS module
 * var joli = require('joli').connect('your_database_name');
 * var joli = require('joli').connect('your_database_name', '/path/to/database.sqlite');
 */
if (typeof exports === 'object' && exports) {
    exports.connect = function(database, file) {
        var joli = joliCreator();

        if (database) {
            if (file) {
                joli.connection = new joli.Connection(database, file);
            } else {
                joli.connection = new joli.Connection(database);
            }
        }

        return joli;
    };
}

CommonJSモジュールって何やっけ?とか、そもそもexportsって何なん?とかexportsとmodule.exportsって何が違うん?という事ですね。

Continue reading “[Titanium勉強日記 6] CommonJSモジュールとrequireについて調べた”