编写外部JavaScript库

时间:2018-01-17 16:58:34

标签: javascript ecmascript-6 ecmascript-7 strict-mode

我创建了一个类/库。我使用了构造函数及其方法的新类语法,现在是什么? 我应该在外部JS文件中使用它?

我有类似的东西

class LoadBalancer {
    constructor() {/*...*/}
    method1(...bla) {/*...*/}
}

我应该把use strict放在顶部吗?

'use strict';

也许把我的课程放在自执行匿名函数中?或者使用export和我的班级名称?

我见过许多.js文件,其语法如下:

(function (root, factory) {
    if(typeof exports === 'object' && typeof module === 'object')
        module.exports = factory();
    else if(typeof define === 'function' && define.amd)
        define("EventBus", [], factory);
    else if(typeof exports === 'object')
        exports["EventBus"] = factory();
    else
        root["EventBus"] = factory();
})(this, function() { /*....
    their functions and libraries declaration goes here
    .....*/ 
    return whatEverNewFunc();
});

但是我不知道这意味着什么,如果你不使用它们会有什么变化或者有什么好处,如果我将class LoadBalancer {/*...*/}放在 loadBalancer.js 中会怎么样?文件,就是这样。

1 个答案:

答案 0 :(得分:0)

是的,我建议为您的班级编写一个带有export语句的ES6模块(可能还有其他您要导出的内容)。您甚至不需要放置"use strict";,它隐含在ES6模块中。

将您的库作为ES6模块(适用于任何现代环境或捆绑器或转发器)发布,或者自行进行转换,并使用您目击的UniversalModuleDefinition样式发布它的版本 - 转换器可以为您添加此类。您当然也可以发布这两个版本。