javascript - 如何在无需对文件进行大量更改的情况下将 JavaScript 对象的所有函数导出为模块?
问题描述
我有这个原始的非模块化 JavaScript 文件(luxon.js)。
然后我有一个 JavaScript 文件(实际上是 TypeScript),我像这样导入它:
import * as luxon from './luxon.js';
所以不,我需要把 luxon.js 变成一个模块。我通过删除来做到这一点
var luxon = (function (exports) {
和
}({}));
然后,我在最后添加以下行。
export { DateTime, Duration, Interval, Info, Zone, FixedOffsetZone, IANAZone, InvalidZone, LocalZone, Settings };
这很好用(在 google-chrome 中)。
但假设这是更多的功能。
我该怎么做
exports exports;
或者
export * from exports;
所以我不必手动枚举对象“exports”中已经存在的所有函数?
注意:
对象exports存在,并且所有要导出的功能已经分配给它自己。
var exports = {};
exports.DateTime = DateTime;
exports.Duration = Duration;
exports.Interval = Interval;
exports.Info = Info;
exports.Zone = Zone;
exports.FixedOffsetZone = FixedOffsetZone;
exports.IANAZone = IANAZone;
exports.InvalidZone = InvalidZone;
exports.LocalZone = LocalZone;
exports.Settings = Settings;
另请注意,请不要向我提供 luxon 已经模块化的 npm 存储库的链接。
我对 luxon 不感兴趣,我对如何快速模块化还不是模块的东西感兴趣(只需最少的努力)。
解决方案
我有点设法做到了。我会建议您使用ES6 版本的库来满足您的目的。如果您仍想使用浏览器全局版本作为模块,请按照以下步骤操作。
luxon.js 的变化:
改变这个
var luxon = (function (exports) {
'use strict';
这样
export default (function (exports) {
'use strict'
索引.html
<script type="module" src="index.js"></script>
index.js
import luxon from "./luxon.js";
console.log(luxon.DateTime.local().setZone('America/New_York').minus({ weeks: 1 }).endOf('day').toISO());
推荐阅读
- wpf - 如何从 Prism 中的 RequestNavigate 方法获取回调?
- python-requests - WooCommerce API 通过请求使用环回代理
- ruby-on-rails - Rails 6:从表单输入动态创建/切换/迁移数据库
- pandas - 从具有不同对象的列中,我希望每个对象都有很多列,带有熊猫
- javascript - 将数据属性从 Shopify Schema 块传递到 JS
- pandas - Pandas:从最后一行开始,按升序,删除所有满足多列条件的行
- javascript - Iframe 中的 SharedArrayBuffer
- python - 你好,我如何使用opencv从图像中分割白色矩形对象?
- arrays - Postgresql 递归更新 jsonb 键
- javascript - 为不存在的数组元素获取默认值而不是 `undefined`