Hacker News new | ask | show | jobs
by throwaway2077 1688 days ago
question:

  // ...

  if (condition)
  {
    const x = require('../../../hugeFuckingLibraryThatTakesSeveralSecondsToLoadUponColdStart')
    // do something with x
  }

  // ...
assume I don't give a fuck about nerd bullshit and I just want the code to be simple and the program to run fast (which it does when !condition because it doesn't need to load hugeFuckingLibrary), can I replicate this behavior with ESM?
2 comments

You can replace that require with `await import(‘giantLibrary’)` but now your function needs to be async, and so do all of its callers. This is needed because it’s unacceptable to block the UI thread synchronously importing code in the browser, but in CLI programs not being able to synchronously require is a bit annoying.
that's a shame, I hoped there was going to be a way to do that and it was simply not implemented in node at the time I was looking into it
Well since you asked so "fuckin" nicely /s

    if( condition ){
      import('../../../hugeFuckingLibraryThatTakesSeveralSecondsToLoadUponColdStart').then( x => {
          //do something with x
      })
    }
> ...nerd bullshit...

I hate to break it to you darling, but programming is nerd bullshit.

edit: alternate that might too much "nerd bullshit", but uses async/await if the surrounding code is an async function:

     async function doSomeStuff()
    {
        if( condition ){
          const x = await import('../../../hugeFuckingLibraryThatTakesSeveralSecondsToLoadUponColdStart');
          //do something with x
        }
    }
no bro, programming is programming and nerd bullshit is nerd bullshit. the arguments I see in favor of ESM over CJS fall into the latter category, at least on the node side of things.