利用可能な機能について簡単に説明します。
- 1つだけのタスクを実行します。ユーザーが必要とするさまざまな形式で日付を表示します。
- nodejsおよびブラウザで動作します。 ブラウザーでは、 requirejs / amd-モジュールとして機能します。
- 埋め込みオブジェクトのプロトタイプに散らばらない。
- 厳格モードで書かれています。
- js-doc形式で豊富に注釈が付けられています。
- 外部依存関係はありません。
使用例:
datef('dd.MM.YY', new Date()); // "13.08.12" datef('dd.MM.YY'); // — «» var d = new Date(); d.setFullYear(2045); datef('dd.MM.YYYY', d); // "13.08.2045" // : datef.formatters.ISODateTimeTZ(); // "2012-08-13T15:01:29 -04:00" // … datef.register('myFormat', 'dMYY'); datef.formatters.myFormat(); // "13.8.12" // var myFormat = datef.createFormatter('dMYY');
どのように配置されていますか?
コードの観点から見ると、私にとって最も興味深いことは環境へのコンプライアンスでした。つまり、nodejsとrequirejs / amdの両方のモジュールシステムを操作することでした。 幸いなことに、すべてが非常にシンプルであることが判明しました。 (function () { 'use strict'; var datef = { answer: 42 }; // Expose our precious function to outer world. if (typeof exports !== 'undefined') { // node.js way module.exports.datef = datef; } else if (typeof define === 'function' && define.amd) { // requirejs/amd env define( 'datef', [], function () { return datef; } ); } else { // plain browser environment root.datef = datef; } })();
ライブラリの名前を自分のライブラリの名前に置き換えると、ミニユーティリティをさまざまな環境をサポートするモジュールに簡単かつ迅速に変換できます。
ライブラリ自体のコアに関しては、すべてが簡単で、おそらく退屈ですらあります。オブジェクトのキーとして機能するトークンのセットがあります。 これらのキーの値は、適切な日付が渡され、対応する値を返す関数です。 同じトークンに基づいて、フォーマット文字列を解析する正規表現が生成されます。
しかし、なぜですか?
ご存知のように、JavascriptではDate#toFormatなどのサポートはありません。 非標準のGekkoの日付#toLocaleFormatのみがあります。 ある美しい瞬間に、utils.date.humanDate、utils.date.humanTimeタイプなどの同じ原始的な自転車をプロジェクト間でドラッグしていることに気付き、経験豊富な開発者が作成した実証済みの柔軟な残念なことに、非常に古いライブラリしかありませんでした-原則として、日付を扱うための巨大で複雑なソリューションであり、多くの場合、Date.prototype拡張機能で罪を犯し、私は独自のモダンで拡張可能なライブラリを作成することにしました。