Ich habe Gedanken über die Post, die ich gestern über ES-Module geschrieben habe
I needed a quick way import a simple module get-urls into my project. The module is well tested and it does what I needed … ignore the fact that it’s pretty easy to implement in a couple of lines of JavaScript. The problem I had is that my project is built in ES6, uses modules and I didn’t want to have to bundle up using CommonJS (require).
I couldn’t find a lot of guidance on what to do here, so I went to experiement and this solution is the solution I came across:
- Create a file that imports the npm module I needed. module.exports = require(‘get-urls’); This module will be what’s converted to ES6 style.
- Create a rollup config that
- Imports the node globals, and builtins.
- Resolves all npm modules required for my usage of this module.
- Pass the results through the commonjs plugin so that it’s now in JavaScript module format.
- Compress the output, because it’s huge :
- Include the bundled file in your project and rejoice.
Eines der Dinge, die ich im Originalartikel versuchen und artikulieren wollte, aber ich entschied mich herauszuziehen, dass es im Knoten-Ökosystem eine riesige Menge an Code gibt, der nicht wirklich spezifisch für Node ist, aber eng mit ihm verbunden ist Knoten über Common JS und andere sehr spezifische Knoten-APIs (Puffer, alte URL usw.), dass es sehr mühsam sein wird, sich hochzuziehen und somit die Änderung erforderlich wird, um ES-Module allgegenwärtig zu machen, wird potentiell ziemlich schmerzhaft sein und bis Angesichts der Änderungen im Ökosystem müssen wir viele Conversion-Tools und Bundler einsetzen, um Code auf mehreren Plattformen (Web / Server) sauber zu teilen.
Wir sind dort, wo wir sind, es gab keine importierende Geschichte im Web, wir hatten keinen Haufen der Primitiven, die Node eingeführt hat, und sind jetzt, was viele jetzt für De-facto-Plattform-Anforderungen halten würden, also hoffe ich, dass dies so ist eher eine Anerkennung der Situation als eine Kritik.
Es gibt auch einen Schritt zur Verwendung von ‘.mjs’ als Dateierweiterung, die sowohl für den Knoten als auch für das Web Standard ist. Ich fühle mich jedoch vollkommen wohl dabei. MSJ ist keine Datei, die irgendeine Infrastruktur als “Text / Javascript” erkennt und ich freue mich darauf, dass sie so sortiert wird, dass sie automatisch von jedem Webserver auf dem Planeten erkannt wird Ich muss nicht noch mehr Konfigurationsänderungen an meiner Server-Infrastruktur vornehmen.
Viele lustige Zeiten voraus, ich für meinen Teil freue mich darauf, viel mehr Funktionalität ins Web bringen zu können.