为浏览器和节点编写 JS 代码

Writing JS code for both browser and node

作为一般编程的新手,我通常用 JS 编写的代码不是很复杂。直到现在,我从未觉得有必要将其分割成更易于管理的更小块。
我总是使用将单个文件与单个对象一起使用的方法

const mymodule = {
    feature: function(){...},
    submodule: {
        property: 5,
        ...
    }
}

然后我会简单地将它加载到 html。为了进行调试,我使用了浏览器控制台。
但最近我安装了 nodeJS 并了解了模块系统,我认为这正是我当前项目所需要的。到目前为止,我使用上面显示的技术对其进行了编码,但现在很难管理。滚动浏览一个巨大而凌乱的 js 文件非常令人沮丧。我也意识到也许我也想在节点中使用这个项目,所以我认为模块真的很有帮助。

MDN Docs 我了解到模块也可以在浏览器中使用,这让我很高兴,直到我意识到在浏览器中它们不能 运行 本地,而只能通过http(s) - 服务(意味着我不能使用我最喜欢的 chrome 控制台进行调试)。但是,如果模块系统与 nodeJS 中的相同,那么我仍然可以使用 node 运行 并在本地测试项目!

但是,我不知道如何使用模块才能在浏览器和节点中使用它们。例如令人困惑的要求、导入和导出方式 (export x exports = x module.exports = ).
我知道 some older questions 与我的相似,但它们已经很老了。由于模块现在确实是 Web 标准的一部分,我真的希望有一种简单的方法可以做到这一点,而不需要任何外部工具。

如果您能为我指出正确的方向或展示一个编写可以在两种环境中 运行 的模块的示例,那就太好了。

对于这种情况,您可以使用网络捆绑器。 snowpack 之类的东西将允许您使用 运行 snowpack dev 在本地安装的 nodejs 模块。它将为您提供本地网络服务器并自动打开浏览器 window 和您的页面,这也允许您使用 MDN 示例。