Javascript 如何模块化和组合我的库?

Javascript 如何模块化和组合我的库?,javascript,node.js,module,lodash,Javascript,Node.js,Module,Lodash,我是模块化JS的新手,但我喜欢这个概念。我想写我的小库来测试一下。这就是我希望它看起来的样子: 它有5种方法 您可以下载导出全局变量Frog的完整库。这是一个模块,它本身没有任何功能,但它下载了5个独立的方法作为依赖项 您可以访问Frog库的所有方法,如normal,例如Frog.get()、Frog.animate()等 我知道如何写这样的东西,但我能像这样模块化它吗 var animate = require("./Frog.animate"); animate(something);

我是模块化JS的新手,但我喜欢这个概念。我想写我的小库来测试一下。这就是我希望它看起来的样子:

  • 它有5种方法
  • 您可以下载导出全局变量Frog的完整库。这是一个模块,它本身没有任何功能,但它下载了5个独立的方法作为依赖项

  • 您可以访问Frog库的所有方法,如normal,例如Frog.get()、Frog.animate()等

我知道如何写这样的东西,但我能像这样模块化它吗

var animate = require("./Frog.animate");
animate(something);
  • 您可以下载5个模块中的4个
  • 第一个下载的名为Frog.animate的模块创建一个空的Frog对象,并添加.animate方法
  • 第二个下载的名为.css的模块使用.animate获取上一个Frog对象,并将.css添加到该对象中
  • 等等。。。基本上只向一个对象添加方法
这样的事情可能吗?怎么做?我知道Lodash非常模块化,您可以选择cherrypick方法。它们只是像forEach()那样的单个函数,而不是..forEach(),还是有什么不同

我应该如何将所有这些Frog方法模块化?像这样将它们导出为独立的单个函数

var animate = require("./Frog.animate");
animate(something);

你可以导入你导出的任何东西

frog.js

const a = () => ...;

function b() {
    ...
}

function c() {
    ...
}

class D {
    ...
}

module.exports = { a, b, c, D };
index.js

import { a, D } from './frog'

使用上述方法,您也可以用另一种方法来实现。在不同的文件中创建子功能,并让您的
frog
库将它们导入并全部作为模块导出。

您不应将CommonJS模块与ES模块IMHO混合,这可能会导致错误(尤其是
导出默认值
行为)。