Should you use Bun, Deno etc. instead of Node.js?

Поделиться
HTML-код
  • Опубликовано: 26 ноя 2024
  • There are plenty of alternative JavaScript runtimes these days. But are they better than Node.js?
    All Podcast episodes: maximilian-sch...
    Want to become a web developer or expand your web development knowledge?
    I have multiple bestselling online courses on React, Angular, NodeJS, Docker & much more!
    👉 academind.com/...
    Node.js allows you to run JavaScript outside of the browser. So does Bun, Deno and some other JavaScript runtimes that emerged over the last couple of years.
    All these runtimes were created to solve certain problems that were introduced by Node.js.
    But should you make the move away from Node.js?

Комментарии • 104

  • @dethcx22
    @dethcx22 6 месяцев назад +39

    The answer as always, it depends. At work, I'm still ensuring we only use npm/node for all of our projects, however outside of work everything I create now uses Bun, primarily because there's less setup required for testing and running TypeScript files. It's nice to have a bunch of tools out of the box with Bun.

    • @Andrey_Hz
      @Andrey_Hz 6 месяцев назад +5

      Node.js v20 includes a stable version of the test runner module to build and run tests easily without installing additional dependencies

    • @noahgsolomon
      @noahgsolomon 6 месяцев назад +1

      facts. Being able to just run test.ts on it's own without any tsc step is very nice

  • @PaulSebastianM
    @PaulSebastianM 2 месяца назад +7

    Deno 2 just released with full Node.js compatibility (and npm) or at least they say. I tried it with Effect.ts which was not running on Deno before (they have an issue opened for that), and it ran perfectly, but I haven't done extensive testing yet.
    Right now though, it seems that Deno is catching up to Bun and so now the tables seem to have flipped. Deno provides more (linter, formatter, etc) out of the box than Bun.

  • @jon1867
    @jon1867 6 месяцев назад +8

    I honestly a time could be coming soon where it may be smoother to maintain a deno / bun project. I think this everytime I'm in a bun app and realize how much less I have to think about my build system:
    - require vs import
    - type: module in my package json
    - tinkering with tsconfig
    I've noticed bun is just easy to start up (haven't messed with Deno), and I can't help but wonder if that starting point means that at some point Node is just not going to be able to keep up as far as ease of use goes. On top of that it seems like it's at least capable performance wise of what node is, and can exceed in certain spots (certainly faster to install which could affect CICD alot)
    The big scary part is "Where will the bun ecosystem be in 5 years", but my guess is that moving from Bun to Deno or Node won't be that much harder than just upgrading a node version anyways (assuming that the bun project you build as some kind of node adapter, like elysia does which is my goto bun framework).
    We shall see

  • @aurielklasovsky1435
    @aurielklasovsky1435 Месяц назад +4

    I share your opinion. But this video did remind me a decision I made a very long time ago that turned out to be a complete miss. Early 2010s React came out and Angular soon followed, the hype was real and everyone had to make some decisions. I was getting into web development at the time and I used similar reasoning to you to come up with the conclusion that JQuery was the most stable, popular and reliable front end framework. So I picked it up exactly at the moment it died.
    Granted, my story is not a good analogy at all but that chain of reasoning did bring up funny memories. Great video dude, thanks!

  • @paulXmbingu
    @paulXmbingu 6 месяцев назад +12

    Node for now. I like stability and things that are battle-tested.

  • @mtin79
    @mtin79 6 месяцев назад +5

    Started using deno since it can be a kernel for typescript Jupyter notebooks and because supabase edge functions need it. Started using bun just for quicker PoC. Node is stable and great for larger apps but a bit bulky to setup with typescript, tests,…

  • @benheidemann3836
    @benheidemann3836 6 месяцев назад +3

    It sounds like your main concern around stability is that code you wrote X years ago will continue to run. Do you have an example of old Deno code which no longer runs?

  • @jevhenijhorvat8431
    @jevhenijhorvat8431 4 месяца назад +2

    I have a big nodejs typescript project, I just ran it with bun without changing any file and it worked.

  • @mairswartz
    @mairswartz Месяц назад +3

    You mention stability as a reason to stick to Node. I have frequently experienced the following... Our server will no longer support Node version X. OK so lets upgrade to version X+1. Oh dear. I now have a Brocken dependency Y. Ok we can upgrade dependency Y. Oh it need to sideload dependency Z which has known security vulnerabilities and needs to be compiled with node gyp which isn't working... This has happened to me a few times in the last few years

  • @zb2747
    @zb2747 5 месяцев назад +6

    Really like Deno. Typescript right out of the box. Less time configuring and more time developing

  • @merodeadorNocturno
    @merodeadorNocturno 6 месяцев назад +7

    When talking javascript, I decided to leave my old projects in node and code the new ones in Deno. I have not tried bun, but will stick with Deno for the meantime.

  • @Alcaatraz01
    @Alcaatraz01 6 месяцев назад +5

    I use Bun for development on a local machine purely for its speed. The frameworks i use often do full clean npm installs on updates which can get tedious using node. I do also notice a runtime speed inprovement with bun.
    My coworkers have found solace in deno and bun because they can create test scripts in typescript without the extra deps and compile step. They come from a non js background and the toolchain often frustrated them.
    When its production time i still use node as the target.

  • @farruhzoirov0911
    @farruhzoirov0911 6 месяцев назад +4

    I prefer using Nodejs yet. Because it is very comfortable for me and I finished your course and There is Deno module and I tried to learn this and I saw that and I didn't like this too much . I made a decision to stick with Nodejs.

  • @anandhukraju9382
    @anandhukraju9382 6 месяцев назад +1

    Have any one tried dockerising same code with bun, deno and node? Are they by any chance considerably smaller than Node? 👀

  • @brunomontebelo360
    @brunomontebelo360 6 месяцев назад +1

    Completely agree with you!
    It's good to have options to choose but today I prefer to stick to NodeJS because of stability + large community + job opportunities!

  • @andrewforrester6713
    @andrewforrester6713 6 месяцев назад +10

    Deno is pretty great

  • @tanvirashraf728
    @tanvirashraf728 Месяц назад

    Sir do you have any plan to bring a new course on bun on udemy??

  • @farruhzoirov0911
    @farruhzoirov0911 6 месяцев назад +3

    I would like you to release your nest js course

    • @slavatischuk
      @slavatischuk 6 месяцев назад

      Agree. Maximilian, please do make NestJs course.

  • @Kafeiklys
    @Kafeiklys 6 месяцев назад +1

    The best example about this concern is MeteorJS, which being a great js framework, hasn't been update to lastest NodeJs version which makes it carry vulnerabilities.

  • @anandhunt1000
    @anandhunt1000 6 месяцев назад +5

    I switched from node to bun and so far its going great. Elysia Js +bun is the future.

    • @IvanKleshnin
      @IvanKleshnin 2 месяца назад

      Interesting... I'm using Bun, never heard of Elysia. Is it like TRPC on steroids?

  • @hashirventhodi
    @hashirventhodi 2 месяца назад

    i have been using nodejs for 4years. But recently Switched to GO. Not interested to change framework or runtime.

  • @tobiasnickel3750
    @tobiasnickel3750 Месяц назад +1

    stability? remember the mess of the support of common.js and the new import statements? that broke a lot of code. so, happy that this is now the past, and today you are maybe right.

  • @zb4238
    @zb4238 6 месяцев назад

    I never make decisions in advance before the problem at hand is assessed. Depending on requirements and deadlines and expected longevity of the solution as well as required stability I make a decision there and then. If allowed, I would opt for more experimental/newer frameworks/runtimes/... in order to get the hands-on experience and not depend on some articles/videos how reliable are those choices for future projects. In all other cases tried and battle tested choices prevail.

  • @jancartman321
    @jancartman321 6 месяцев назад +1

    I'm not convinced that Bun made the right decision by choosing JavaSriptCore over V8. V8 might start a bit slower, but is for cpu intensive tasks significantly faster. Having that said, Bun makes everything so simple, it's a relief, but Bun is not mature enough. Right now, Deno is the sweet spot for me. Great DX and API, great std lib, mature, stable and fast.

  • @erlend1587
    @erlend1587 6 месяцев назад

    I think your reasoning makes sense in most cases. There seem however to be performance benefits using Bun (and Deno), so in special cases i think Bun might be a better choice.

  • @tobiasnickel3750
    @tobiasnickel3750 Месяц назад

    i love that bun just run every code, ts, js, common js,.... and the compile feature is awesome. my roblem with bun is.the stability, when exress is used to provide a 30p mb file for download, the bun app crashes.

  • @jamshediqbal7936
    @jamshediqbal7936 6 месяцев назад +1

    I haven't used other backend languages like Bun or Deno, so can't conclude if they are good over the others or not. Currently working with Python and I worked with Node.js and PHP in past extensively. They are good and fulfilling the needs, so Node.js is fair choice among Node, Bun and Deno.

    • @rotivanov
      @rotivanov 2 месяца назад

      Bun and Deno are not languages. They are frameworks

    • @dopsleiden3934
      @dopsleiden3934 Месяц назад +1

      @@rotivanov They're not frameworks either. They are Javascript runtimes.

  • @cdac1645
    @cdac1645 6 месяцев назад

    Hi, thanks for the information. Are you updating your Node course on Udemy for Node version 22?

  • @cristiandevia4168
    @cristiandevia4168 6 месяцев назад +1

    In my case, I am using Node.js with NestJS and the Express adapter, and so far, I've had no problems with the projects I've developed, so I don't have a reason to switch. Maybe I'll look into the Laravel framework, which has a strong ecosystem that can be useful for freelancers.

    • @abdulsiyadnp
      @abdulsiyadnp 5 месяцев назад

      Hi fi from an opposite passenger 🫸🫷

  • @jaymartinez311
    @jaymartinez311 6 месяцев назад

    I’m waiting on that Qwik course. Any chances in the future?

  • @ganeshk5374
    @ganeshk5374 6 месяцев назад

    Perfectly put! I think it's mostly opinion for enterprise projects as stability is most important.
    Do you have any preference Max for framework within node? Is still express the best or so do you any pressing advantage to explore newer ones ?

    • @jancartman321
      @jancartman321 6 месяцев назад

      Hello, I'm Max Cartman and I recommend Fastify ... joke aside, if I was to start a Node project right now, Fastify, hands down. Great core plugins. Maintainers are Node core maintainers. Popular, mature, fast, TS support and still plain, not overengineered like NestJS.

  • @Viviko
    @Viviko 6 месяцев назад +1

    I have way too many custom libraries and stuff written in Node rn to switch to Bun/Deno. And I kinda don’t feel like updating every single one to ensure compatibility.
    So, I’m sticking to Node for the things it’s good at.

    • @jon1867
      @jon1867 6 месяцев назад

      I've honestly been super impressed by the compatibility of Bun so far with node, it's not 100%, but I bet it will be soon from what it feels like

    • @kanbekan
      @kanbekan 4 месяца назад +1

      There is a project called Denoify, to convert Node.js code to Deno.
      I haven't tried it yet, because I don't have a project made with Node.
      Btw, npm and node compatibility in Deno is very good. I was surprised that Deno can just run my complex Astro project without any complicated issue so far.

  • @PhyschoSniper
    @PhyschoSniper 6 месяцев назад

    Hello, Maximilian Schwarzmüller! I have recently been thinking of changing my field. I have been working in a different domain earlier and have started learning JavaScript. After that, I plan to learn the React Native framework. Is this the right time to become a frontend developer, or should I learn different skills? I am scared of AI.

  • @Faisal-sd5iy
    @Faisal-sd5iy 5 месяцев назад

    is rust really better then any other language in term on performance ?

    • @plaintext7288
      @plaintext7288 5 месяцев назад

      It is possible yo write code that with magnitudes of difference in performance compared to js, python and even c#/java

  • @GolderiQ
    @GolderiQ 6 месяцев назад +25

    No one ask for Bun, it’s not Web Compatible, just faster Node.js because it’s bug everywhere. Deno is way better in the Web Compatibility department and way more stable than Bun. Node.js, Deno, and Cloudflare Workers are part of the WinterCG initiative that aims to standardize backend JavaScript and that’s the way.

    • @MaxCupertino-gf5ht
      @MaxCupertino-gf5ht 6 месяцев назад +3

      Yes you're right , first i do like bun but later on i saw that its even worse than nodejs . nothing works on bun , everything failed. Deno is quite at least it works.

    • @taquanminhlong
      @taquanminhlong 5 месяцев назад +1

      Well, I'm not gonna run js on the server anyway, Bun offers a faster pace in the dev environment 😂

    • @GolderiQ
      @GolderiQ 5 месяцев назад +1

      @@taquanminhlong no matter if it’s production or random script in development. Nothing beat stability: Deno is the way because it’s faster than Node and as stable as Node.
      Plus I would say speed is irrelevant in dev or local, basically everything is always fast in local, especially running workers on 4 cores or more. Speed is only really relevant in production with several requests arriving per seconds, unfortunately often on 1 virtual core or even a fraction of a virtual core.

    • @dapedu6768
      @dapedu6768 Месяц назад

      ​​@@GolderiQBeeing faster than node is the last reason to use deno. But is one of them

  • @thydevdom
    @thydevdom 2 месяца назад

    NodeJS is great at work. Personal project I picked up Deno because I had such a huge hassle setting up my configs.

  • @alibarznji2000
    @alibarznji2000 3 месяца назад

    I've been working on JavaScript for 5 years and mostly doing backend development, I've rarely seen any job ads requiring Deno, maybe devs should consider that first.
    It's easy to pick up Deno no doubt for a nodejs developer, but if you're not working on it, then why even learn it?

  • @shgysk8zer0
    @shgysk8zer0 6 месяцев назад

    I use node, but that doesn't mean I'm happy with it. I am constantly frustrated by node and the conflicts between... I'll just say legacy CJS vs ESM. CJS is just a blight on node at this point, mostly because of fragmentation and how it's kinda unpredictable.
    I would instantly switch to something like deno if I could. But... I really can't.

  • @ZeryusXD
    @ZeryusXD 6 месяцев назад

    I'd say Nodejs will be silmilar to the case of Java and Bun/Deno will be similar to the case of Go. Just like how older, more established companies will continue to stick with Java, and new startups are going with newer lanaguages like Go, we'll see a similar thing with NodeJS and Bun/Deno

  • @siya.abc123
    @siya.abc123 6 месяцев назад

    I've slowly been using more Go for backend and node for only for my favourite js framework Next.js. I doubt I'll get to a stage where Node.js is not sufficient for me

  • @lennonfernandes1696
    @lennonfernandes1696 6 месяцев назад

    I just started learning NESTjs. Its really cool.. well structured code..also it uses typescript which is way better than javascript.

  • @JayLovesProgramming
    @JayLovesProgramming 3 месяца назад

    Great video dude, really understood what you was saying.

  • @rahulraveendran9520
    @rahulraveendran9520 6 месяцев назад

    Does using Nodejs means Express JS or pure NodeJS?

    • @saadhabashneh5587
      @saadhabashneh5587 6 месяцев назад +1

      Express is a framework, node is the runtime environment for JavaScript to be written outside of the browser

  • @sachinshah4462
    @sachinshah4462 2 месяца назад

    I'm Node.js Developer and I'll always stick with Node.js only. Probebly I might learn Go for some out of the box performance and job need.

  • @Hshjshshjsj72727
    @Hshjshshjsj72727 Месяц назад

    Deno 2 works with npm packs from what I understand. seems better than node so far

  • @MJ-yz9ik
    @MJ-yz9ik 6 месяцев назад

    I wilm stick with node because i see no reason to switch maybe later on I'll try bun

  • @ryanxcharles
    @ryanxcharles 5 месяцев назад

    I use node.js every day. I'm excited about deno and bun, but have not yet found a reason to use them for any of my projects.

  • @AmanNidhi
    @AmanNidhi 5 месяцев назад

    just learn JS, and learn tool which your company is using. success of a framework also depends on how much money some org is spending to maintain it, so it not just about how good a framework is. Yes, stability is the top priority for any project.
    I guess this video is for the freelancers who have to choose the tech stack for the project that they are using.

  • @lardosian
    @lardosian 6 месяцев назад

    Would be interested in your reasons and thoughts on Rust, your perspective would be great Max!

  • @Ajdin87
    @Ajdin87 6 месяцев назад

    I am for trying everything, so just go there and do some stuff for learning, at some point all those runtimes, frameworks and languages are gonna grow up, or the ones we are using now are decline.

  • @sonoftroy8572
    @sonoftroy8572 6 месяцев назад

    I totally agree 👍

  • @RockTheCage55
    @RockTheCage55 4 месяца назад

    I use pnpm/node. Tried bun multiple times & it’s a hot buggy mess. Try to get debugging working in vscode? It’s not easy! Not anymore. No thank you!!!

  • @qobildev
    @qobildev 6 месяцев назад +1

    Node is the best, It is easy, and you only need one language.

  • @OleksandrIsaryk
    @OleksandrIsaryk 6 месяцев назад +3

    Deno and Bun are not field-tested enough, but I believe with some stable releases and time it's a thing.

    • @jancartman321
      @jancartman321 6 месяцев назад +1

      That's only true for Bun. Deno is 6 years old and used by Deno Deploy, Netlify, Slack, Supabase ... also, Deno is written in Rust, which is less prone to bugs than both C++ and Zig. Deno is using the same JS engine (V8) as node.

  • @pemrograman-cepat3393
    @pemrograman-cepat3393 3 месяца назад

    I hope max add bun to his nodejs course in udemy. It will make his course unbeatable

  • @sujonpramanik1151
    @sujonpramanik1151 6 месяцев назад

    It was a nice explanation, sir.

  • @blackshock4able
    @blackshock4able Месяц назад

    Content is hyped by content creators, deno 2 and bun will be as usual overhyped so content creators(not all) will make money, reminds me of the same situation with Java and PHP when everyone said they will be replaced other technologies such as node js, go, rust and many other technologies. Yet PHP is almost 80% of the internet and Java is still widely used among the companies 😂😂😂😂😂😂. Node also became so popular and lots of sites and technologies are based upon it. Imagine how many packages will be need to be upgraded to bun or deno if we dumped node. I see that new technologies will open doors for more advanced nee packages but that will not affect node or any of the older technologies

  • @pookiepats
    @pookiepats 4 месяца назад

    Big shocker dev chooses the incumbent

  • @darahaasn1549
    @darahaasn1549 2 месяца назад

    Waiting for rust course @max

  • @UliTroyo
    @UliTroyo 6 месяцев назад

    I use all 3: Bun as default, for speed and features; Deno for its REPL and as a formatter (and soon to publish to JSR); and node to test compatibility.

  • @YummyExtraSteps
    @YummyExtraSteps 6 месяцев назад

    I am trying new things!

  • @champorado2131
    @champorado2131 6 месяцев назад +8

    I don't use all of these javascript framework. A lot work and shift in mindset Python, Go, PHP is straight forward.its the current trend now, back to basics please.

    • @ykmnkmi
      @ykmnkmi Месяц назад

      Love Dart & Python and bit of Go. But PHP pays my taxes.

  • @babakfp
    @babakfp 6 месяцев назад +1

    Same here.
    ABOUT Deno: I started using Deno because of out-of-the-box TypeScript support. But I got frustrated with a bunch of issues, and compatibility was one of them. Using URLs, for importing libraries, was annoying more than it was convenient. You import a library, and vsCode starts yelling that it doesn't understand anything about what you have imported, so you need to hover over the URL and click on a button to tell it to download the file/URL, or you could save and run the project to get Deno to install them. Another issue with Deno was that they were advertising that they support JSX/TSX out of the box, but it's not true! You need to install and configure a bunch of things and at the end realize that it doesn't work properly, and it's broken somewhat! Their formatter is called "fmt" rather than "format", when you need to get used to the name whenever you want to use it. They are using 2 spaces rather than 4 and semicolons rather than no-semicolons, which means for every project I needed to create a configuration file right away and change those defaults. Another issue that you realize is that not much people are using Deno, so it's very difficult to find any package that is specifically built for/with Deno. I was looking for CSS parser and find out they are recommending 2 different packages, I checked them both out, and they were mediocre at based and had typescript type issues! Instead, I find about Lightning CSS, and it was amazing but Deno didn't support it and I realized it when I converted my code to an executable and find out that the executable was immediately crashing. I realized that it shows the error inside the executable window for a few milliseconds, so I recorded what was happening with a screen recorder and screenshotted the single frame that was showing the error message! It has other issues too, but I don't remember right now, and I don't feel like writing. Another issue is that, if you are using NPM packages in Deno, you something need to install the types from "@types/..." and Deno doesn't support this out of the box like Node. In Node, you just install the types package for your package and that's it. With Deno, I find out that you need to add a comment at the beginning of every file you want to use that package.
    ABOUT Bun: The only use that I have for Bun is that installing packages for a project with a shit project worked with Bun, but it didn't with PNPM! So, one day I had a very bad internet connection and PNPM just didn't work, it wasn't showing any console logs or any feedback. I decided to use Bun, and it just worked! Another thing that I like about it is, their alternative to npx is called bunx, which is easy to remember, unlike whatever PNPM calls their alternative, I don't ever remember to be honest! The issue with Bun is that you can't use it as an alternative to tsc. Meaning, you can't create your project in Bun and run a command to compile it to JS code and shit it to NPM registry. It just doesn't do that, same with Deno. Makes no sense to me! Another issue is that whenever you install something with Bun, it formats your package.json file! WHAT!!! (it formats it in a wrong way, lol). Deno did the same, but they eventually fixed this issue. Bun calls their lock file "bun.lockb" which I don't like the ending "b".
    I'm sticking to Node.

    • @moveonvillain1080
      @moveonvillain1080 6 месяцев назад

      Can you give a TL:DR ?

    • @nht_vng8669
      @nht_vng8669 6 месяцев назад

      i give up from 1 st sentence

    • @nht_vng8669
      @nht_vng8669 6 месяцев назад

      Why do they want use JS everywhere? Just like lisper want to use Lisp everywhere.

    • @Bumbani
      @Bumbani 3 месяца назад

      You can’t compare bun with tsc. But you can run tsc with bun without issues. I use bun everywhere and even use it to build and ship npm packages with no issues.
      The „weird“ package.json formatting has been changed in a recent version and now adopts your current formatting.
      And finally the „b“ in bun.lockb stands for „binary“ because the lockfile is not human readable to save space (which is great). You even can tell vscode to show it to you in a human readable way. And for everyone who don’t like the binary lockfile the bun team is working on an text-based variant.
      For me there is no reason to stay with node.

  • @belkocik
    @belkocik 6 месяцев назад +1

    NestJS FTW

  • @cholasimmons
    @cholasimmons 3 месяца назад

    getting an old system and "contribute" to make it better is never as good as a new system built from the ground up to tackle the challenges at hand.
    Look at how botched 3DS Max is and how smooth AF Cinema4D is.

    • @cholasimmons
      @cholasimmons 3 месяца назад

      the more i listen to this video the more i regret wasting my time, 🫣 "real projects" 🤦🏻

  • @pynman
    @pynman 6 месяцев назад

    Waiting a php zero to hero course from you.

    • @iulikdev
      @iulikdev 2 месяца назад

      🤣🤣🤣 maybe cobol?

  • @greendsnow
    @greendsnow 6 месяцев назад

    Whilst

  • @jrvidotti
    @jrvidotti 2 месяца назад

    Deno have a very flat learning curve, more than Node itself.

  • @LegendaryJx
    @LegendaryJx 6 месяцев назад +7

    Bun is stable enough

    • @jancartman321
      @jancartman321 6 месяцев назад

      For tooling? Yes. For production backends? Hmmm ...

  • @Gruak7
    @Gruak7 6 месяцев назад +1

    Bun to the moon!

  • @darahk88
    @darahk88 5 месяцев назад +1

    No thank you. I use bun

  • @ИванРагозин-я8я
    @ИванРагозин-я8я 6 месяцев назад +1

    Bun

  • @elson_correia
    @elson_correia 6 месяцев назад

    Yall need to understand that Deno and Bun are just trial ideas. Their best feature will make into Node.
    Node is the way to go

    • @saadhabashneh5587
      @saadhabashneh5587 6 месяцев назад

      Not really, the problems solved with bun can't make it into node unless they delete node and remake it from the beginning again

    • @arkeynserhayn8370
      @arkeynserhayn8370 6 месяцев назад

      ​@@saadhabashneh5587
      Can yo name some examples?

  • @Kats0unam1
    @Kats0unam1 6 месяцев назад

    Use Go.

  • @AbegazNap
    @AbegazNap 6 месяцев назад

    I mean you should be able to work in any javascript runtime. The differences in terms of API are very minimal