Usando ES Modules em Node.js hoje!

Não deixe a documentação oficial te enganar!

Image for post
Image for post
Pela documentação, pode não… mas pela comunidade, pode sim!!1

12/11/2019 - Atualização no exemplo

"A força do Node.js sempre esteve na sua comunidade e pacotes criados por usuários!" — Sorhus, Sindre

A Comunidade Contra-Ataca

const foo = require("./foo")
module.exports = { foo, bar: 2 }
import foo from "./foo"
export default { foo, bar: 2 }

E a performance, como fica?

Ok, quero ver um exemplo!

mkdir node-esm
cd node-esm
npm init -y
npm install --save @std/esm express
vim entry.js
// código extraído da documentação do @std/esm// entry.js
require = require("@std/esm")(module);
module.exports = require("./main.mjs").default;
// main.mjsimport express from "express";const app = express();app.get("/", (req, res) => res.json({ ok: true }));app.listen(8080, () => console.log("ESM em com @std/esm"));
// main.mjsimport express from "express";const service = () =>  new Promise((res, rej) => {    const start = Date.now();    setTimeout(() => {      const end = Date.now();      res({        ok: true,        diff: end - start      });  }, 2000);});
const app = express();
app.get("/", async (req, res) => {
const data = await service(); res.json(data);});
app.listen(8080, () => console.log("ESM em com @std/esm"));

Finalizando

Written by

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store