初年度の学生のために、私は明らかにモジュールパターンを使用して書かれたシンプルなES5ベースのライブラリを提供しました。以下は、「メイン」モジュール/名前空間のスニペットで、他の拡張機能を収容します。
window.Library = (function ($) {
if (!$) {
alert("The Library is dependent on jQuery, which is not loaded!");
}
return {};
})(window.jQuery);
これは、Web開発に不慣れで、ES6などのファンシーなものをWebpackやBabelと組み合わせて使用していない学生のほぼ99.9%に役立ちます。
0.1%から、適切にインポートできるES6ベースのバージョンを提供するように要求されました。私はこれを提供できれば幸いですが、これに最善のアプローチをする方法にちょっとこだわっています。
私は明らかにES5の方法を維持したいので、生徒はスクリプトタグを使用してファイルを含め、Library.SomeExtension.aFunction();
好きな場所に入力することができます。その上、一部の拡張機能はjQueryに依存しており、jQueryは上記のスニペットと同様の方法で挿入されます。
現在、jQueryを依存関係として使用して、1つのコードベースで両方の世界を最大限に活用するための保守可能な方法を探しています。99.9%をa window.Library
にしたいのに対し、0.1%に使用方法を与えたいimport Library from 'library'
。
両方を行う単一のJSファイルでこれを実現できますか?それとも特別なES6バージョンが必要ですか(問題はありません)?そして何よりも、両方の状況をサポートできるように、コード(すべて上記のスニペットと同様)をどのように改造しますか?
どんなポインタでも大歓迎です!
編集:ただ、サイドノートとして、私はすでに持っているgulpfile.js
このによるライブラリ走る場所でBabel
、minifiers
他のものを。したがって、上記の問題を解決するためにそれを拡張する必要はありません!
Library.SubLibrary.functionName
誰かがそれをES6としてインポートした場合でも、セットアップを個別のファイルに保存したいと思っています。(これは主に、拡張機能が相互に使用でき、標準のES6セットアップを使用すると循環参照が発生するためです)。
export
を持ち、もう1つの用途をに割り当てwindow
ます。私はそれが可能だろうと考えた偉大なことはそんなによりエレガントな感じだろうので、両方は、単一のファイルで行うことができれば、しかし、export
内部だけの仕事にキーワードルックスtype=module
。回避策があるのか、それとも不可能なのかわかりません。