我为我的一年级学生提供了一个简单的基于ES5的库,使用了揭示模块模式进行编写。以下是“main”模块/命名空间的片段,它将包含其他扩展:
window.Library = (function ($) {
if (!$) {
alert("The Library is dependent on jQuery, which is not loaded!");
}
return {};
})(window.jQuery);
这对于几乎99.9%的新手学生来说是有效的,他们没有使用类似ES6与Webpack或Babel之类的高级技术。
0.1%的学生现在要求我提供一个基于ES6的版本,可以正确地导入。我很乐意提供这个版本,但我卡在了如何最好地解决这个问题上。
显然,我想保留ES5的方式,这样我的学生就可以只使用一个脚本标签包含文件,并在需要时键入“Library.SomeExtension.aFunction();”。此外,一些扩展依赖于jQuery,它以与上面代码片段类似的方式注入。
现在,我正在寻找一种可维护的方法,以在有jQuery依赖性的情况下同时实现两者的优点。我想给99.9%的人一个“window.Library”,而我想给0.1%的人一种使用“import Library from 'library'” 的方法。
我能用一个JS文件同时完成这两个任务吗?还是我需要一个特殊的ES6版本(这不是问题)?最重要的是:我应该如何重新排列我的代码(所有代码都类似于上面的代码片段),以便我可以支持这两种情况?
任何和所有的指针都将不胜感激!
编辑:作为一个旁注,我已经有一个“gulpfile.js”可以运行这个库通过“Babel”,“minifiers”和其他东西。所以扩展它来解决上述问题不是问题!
Library.SubLibrary.functionName
的设置,并且在不同的文件中,即使有人将其导入为 ES6 或其他任何东西。(这主要是因为扩展程序也可以相互使用,使用标准的 ES6 设置会导致循环引用)。 - Lennard Fonteijn