簡體   English   中英

如何將 JavaScript 對象的所有功能導出為模塊,而無需對文件進行大量更改?

[英]How can I export all functions of a JavaScript object as module without having to make a lot of changes to the file?

我有這個原始的非模塊化 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 };

工作正常(在谷歌瀏覽器中)。
但假設這是更多的功能。
我怎么能做類似的事情

exports exports;

或者

 export * from 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>

索引.js

import luxon from "./luxon.js";
console.log(luxon.DateTime.local().setZone('America/New_York').minus({ weeks: 1 }).endOf('day').toISO());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM