Need advice about which tool to choose?Ask the StackShare community!
Node.js vs React: What are the differences?
Node.js is a JavaScript runtime built on Chrome's V8 engine that enables server-side execution of JavaScript code. React, on the other hand, is a JavaScript library for building user interfaces, focusing on component-based development and efficient UI rendering. Here are the key differences between Node.js and React:
Runtime Environment vs UI Library: Node.js is a server-side runtime environment that allows developers to execute JavaScript code outside the browser. It provides a server-side platform for building scalable and efficient network applications. On the other hand, React is a JavaScript library for building user interfaces. It focuses on the front-end development aspect and provides a declarative approach to building interactive UI components.
Server-Side vs Client-Side: Node.js is commonly used for server-side development, where it enables developers to handle HTTP requests, perform database operations, and implement server logic. It excels at building APIs, handling real-time applications, and executing server-side JavaScript. React, on the other hand, is primarily used for client-side development. It allows developers to create reusable UI components that update efficiently, providing a smooth and interactive user experience.
Back-End vs Front-End: Node.js is often employed as a back-end technology to build server applications. It provides features like file system access, networking capabilities, and database connectivity, making it suitable for building full-fledged web servers or backend APIs. React, on the other hand, focuses on the front-end and is used to build the user interface of web applications. It excels at creating interactive and dynamic user interfaces, managing state, and handling UI updates efficiently.
Scalability and Performance: Node.js is designed to handle high concurrency and is known for its non-blocking, event-driven architecture. It allows for handling many concurrent connections with minimal resource usage. This makes it a great choice for building scalable and high-performance server applications. React, on the other hand, is optimized for creating efficient user interfaces. It utilizes a virtual DOM and employs diffing algorithms to update only the necessary parts of the UI, resulting in a faster and smoother rendering experience.
In summary, Node.js is a server-side runtime environment used for building server applications, handling HTTP requests, and executing server-side JavaScript, while React is a front-end JavaScript library for building interactive user interfaces. Node.js focuses on server-side development and provides a scalable, event-driven runtime, while React excels at building efficient and reusable UI components for client-side applications.
Hello Experts,
I'm trying to build a demo app to show an image, and it's metadata (EXIF data or read relevant image data from XML/DB). I need to display the image and data side-by-side. As a novice web developer, I am trying to understand what tools to pick, so it's easy to develop, maintain, and at the same time, it performs well for a huge volume of images display (something like picture/file gallery). We also want to offer one-click on one file/picture that needs to be shown in a split view. Please advise and let me know if my problem statement is unclear.
Thank you. SSK
Hi Sara,
You need to decide if this is a demo app or an app which you'll want to scale and maintain. For a quick demo, I would spin up a Node.js server with server rendered frontend using Handlebars template. This way, the whole project can be maintained in one repository without much moving parts.
If you are extracting data from image itself and not from a database, you wouldn't even need Node.js. Just a React app will do. Data extraction from image can be done on client side.
Hello,
I will be programming my project in the coming months. I would need advice on the technology I will use.
I focus mainly on mobile apps, so it's clear there that it will be a native app written in Kotlin.
I will also need a backend (database, API). In the database, I will need to store words and their translations along with users and some statistics to start with.
I don't know which database to choose, whether NoSQL or SQL. Maybe NoSQL would suffice for some words and key-value data.
I would like to connect the web and a chrome extension to that backend. I assume that chrome extensions are made in JavaScript and I would use either Vue.js, AngularJS, or React on the web. The web would be quite simple, some flashcards, statistics, and so on ... I don't know which framework would be ideal, I've never done it, I'll be basically learning it. Ideally, also where you need as little CSS as possible.
With that backend, I have a dilemma as to which framework to use. Basically, it will be such a new for me, I just played with Flask a little bit, but It doesn't matter. Basically, everything runs on JS except the Android app. So is it advantageous to choose Node.js on the backend? I have no experience with this, is it an advantage when everything runs in almost one language? I also thought about Flask / Django, but I also quite like Node.js since it's in JS. But I'm open to all the possibilities of .NET, Spring .... What would be your choice?
To summarize: Android App - Native app in Kotlin Chrome Extension - JavaScript (I don't know if it can be done in anything else) Web - Vue, Angular or React and that's JavaScript Database - SQL / NoSQL? - I don't know which is more suitable, or some specific types Backend - the dilemma of what language and framework to use
I'll write everything myself, it's a project for school, but I want to move it to a higher level and release it. If it doesn't work out, at least I'll learn something. Thank you for the answers.
Let's start with the database. First, in my experience, there are few applications where choosing a document database (NoSQL) over a relational database (SQL) is advantageous. While document databases are conceptually very straight forward, I find the tradeoffs down the road are simply not worth it (I wont get into all the details here, but please do some research on the downsides of NoSQL databases). If your data storage needs were exceedingly simple, I might reach for something from the Google Firebase suite, Realtime Database or Cloud Firestore; but I find even simple storage needs tend to expand and grow over time as your application matures. Postgresql is an excellent choice, and an absolute powerhouse for a ton of applications. With the somewhat recent additions of hstore, json, and jsonb datatypes, the advantages of reaching for a pure document datastore melt away.
For the Chrome extension, I would probably favour going for something a bit more lightweight than React or Angular. I'm a huge fan of React, but it comes with a somewhat hefty download, so if it were me, I might reach for Vue instead on that one. React is better for bigger, more complex single-page applications, whereas Vue is probably a better fit for simpler applications which require a smaller set of components.
For the backend, I would pick something mature with a strong and active community. Flask is a nice choice, but I've felt a bit "on my own" when using it in terms of community/documentation. I've used Rails extensively, but the learning curve is a bit of a headache; the time you'll save using Rails is very much down-the-road rather than immediate. If you're comfortable already with Javascript, then node + express is probably your best bet.
But, let me change my tune a little bit. You mentioned that this is a school project. In light of that fact I suggest you gravitate towards languages and frameworks that will help grow your career. Making smart choices based on the requirements of the task at hand is always prudent, but in this case I think it may be more valuable to gain some experience with some of the current "industry standard" stacks. Ask yourself what you can build a career on, and dabble in some of those areas until you find something that clicks for you. So, here are my revised answers, with options for each category ranked in order of preference
- Database: PostgreSQL, MySQL
- Backend: Node/Express, Rails, Django, Spring
- Frontend: React, Angular, Vue
Hi Karin, I really liked your take on this whole school thing, I'm amazed you want to put such a huge effort in it.
And please appreciate your project is a lot to take and it can also be a lot to do: the risk is going beyond the assignment for the sake of exploring technologies, architecture styles, desing patterns, and so on, just for the sake of it (don't take me wrong, I've done it all my life).
So my first advice, as quite an experienced software developer, is always go back to some fundamental principles before starting anything, before thinking to anything, and perhaps the most important principle of all is KISS: Keep It Simple and Short (search it up, there are a few versions of what those letters represent :) ). In your case, since it's a school assignment, simplicity is even more important because it makes things clear which makes learning so much more effective.
When dealing with complex tasks like this, another fundamental element is focus: where should you keep your attention when designing and then developing a software product?
In this specific case, I lack what the original assignment was requesting, but I'm quite sure the point (or one of the points) was to make you think and then act on something that didn't require months to be developed, it was to make you learn how to accomplish a task without getting lost in details or in a project too big to be finished in a finite time.
I may be wrong, but I'll keep this in mind when writing the below lines.
FIrst, the architecture of the software product looks like a classic three tiered one: frontend, backend, database. Keep in mind another fundamental principle here: the separation of concerns, which leads to different decoupled architectural elements. Also, just for clarity, the frontend(s) will talk only with the backend, while the backend will talk with the database: this will help you isolate the database from the frontend, ideally enabling you to change database technology if needed.
Second, you explained you want to go web and mobile for the frontend tier: this inevitably will lead you to the conclusions you pointed out correctly, having to choose a number of platforms and languages to basically create the same application, but the fragmentation of different knowledge and procedures can make your life quite complicated and probably miserable.
Personally I'd go for native Android and React for web. Recently, though, I stumbled upon Flutter which, through the same codebase (in Dart, very similar to JavaScript) can create for you applications for mobile (Android and iOS) and the web: I tried it and I've been blown away by the effectiveness and easiness of using it.
For the backend, keep playing with Flask and build a RESTful API, all in all python is a language way more readable and maintainable than JavaScript, and with node.js is so easy to fall into the callback hell (recently less and less but still). Stay away from Java and its ecosystem if you want to finish you project at all (just kidding).
On the database tier, remember NoSQL databases can be quite powerful, but in your case try something very simple (redis can do), or just go with MongoDB as it makes easy to start and evolve your data structures. If you're more the structured type and you want to go RDBMS, try postgresql, it's easy to start (it has also NoSQL features) but so much more powerful and you could learn real SQL on it (stay away from the omnipresent MySQL, it's kind of odd sometimes).
I hope the above didn't sound too much of a lecture, and I also really hope you learn the most important lesson of all: always keep in mind the big picture!
I'm researching what Technology Stack I should use to build my product (something like food delivery App) for Web, iOS, and Android Apps. Please advise which technologies you would recommend from a Scalability, Reliability, Cost, and Efficiency standpoint for a start-up. Here are the technologies I came up with, feel free to suggest any new technology even it's not in the list below.
For Mobile Apps -
- native languages like Swift for IOS and Java/Kotlin for Android
- or cross-platform languages like React Native for both IOS and Android Apps
For UI -
- React
For Back-End or APIs -
- Node.js
- PHP
For Database -
- PostgreSQL
- MySQL
- Cloud Firestore
- MariaDB
Thanks!
My Recommendations: Front End: Flutter because of developer tooling and powerful declarative widget system Back End: Node.js or Go because Node.js has a large ecosystem and Go has a good built in http setup Database: Cloud Firestore because of ease of use, NoSQL, and the ability to set data from the client
If you go with react / react native I advice you to go with node. Why ? I first didn't believe coding in javaScript everywhere (back, front and db queries) was making life SO much more easy. I still followed the advice, in the end this is a huge relief. For a small startup project with 1/2/3 devs, using only one langage increases efficiency a lot. You can switch very fast from a topic to another.
Considering that your objectives are Scalability, Reliability, Cost, and Efficiency, I recommend the following:
- Backend - Node.js/Express/MongoDB
- Frontend - React
- Mobile - React Native
You can then focus on using one language (JavaScript) for all the above. As your startup grows, sure, you may have other requirements that warrant using other technologies. Nevertheless, the above stack will definitely satisfy your objectives. Hope this helps!
Flutter is a new sparc out there, because it's Dart engine can run server-side, client side (as web app) and natively - it cross compiles to all major platforms from single codebase...
I'm currently working with React and I would recommend you because it will help you develop both web app and similar to React is Reactive Native which will work mobile devices. And with these frameworks, I will choose Node.js in the backend. In DB, I have experiences with MySql and MongoDB. I think you should go with MongoDB, it will help out with its cloud service also. Happy Coding!😀🤩
For UI:- Flutter / ReactJS For Backend:- NestJs For Database:- Cloud Firestore & Mysql
We thought about creating a web application for a long time, but came to the conclusion that it is better to create an adaptive site with PWA technology. This will save your budget and speed up updates (you won't need to update 3 versions of apps for different platforms, just the site). In addition, research on the preferences of smartphone users suggests that users are not very willing to install new offers for reasons of personal data security. Sites that work through the browser are more trusted.
I am going to set up a new project for a scalable business. I have chosen React and Node.js because JavaScript is the base for these tools, and there is no need to learn a new programming language. Also, hiring javascript developers is easy.
I chose PostgreSQL, as it is an opensource and most advanced relational database with broad community support.
I am seeking some advice to set the structure up. Please help me out.
One thing I will advise you to is stick to what you know don't try something new just because it's trending or someone says it's faster and better unless you have the time to learn it. Just find a good folder structure that suits you.
This is what I use and why I use for a full-stack js application - Next.js ( for serverside rendering ) - Eslint and Prettier ( auto code formatting ) - Fastify ( fastest rest API in node )
I know how difficult is to maintain code quality and test coverage as startup, but keep this as a culture/rule to follow, because when things getting bigger, it's more difficult to keep flowing and evolve. More challenges and more technical debts will appear and stagnate the project.
I've heard good things about nestjs, but can't say much about because I've never used it.
I am using this stack and I think it's solid. I use Koa instead of Express which I find a bit more intuitive but the are almost equal in capability. I am using a bit of Typescript which I generate from the database (I've open sourced that: https://github.com/kristiandupont/kanel), but other than that I am not using a lot of libraries or frameworks. My current structure is a mono repo with Yarn workspaces. I have a client and a server folder, as well as a couple of packages that I haven't yet extracted enough to put on NPM. I use Webpack through Create React App for the client and also for the server because I have a few things that need transpiling. I use Gitlab for version control as well as CI/CD. Heroku for hosting and ElephantSQL for database. All in all this runs quite smoothly.
Currently, I am a university student, and it is my second last semester with a major in Computer science. I want to start my career in full-stack web development. I know Python with Django + PHP with Laravel, and my focus is on learning MERN stack. I am a little bit confused as to which technology I should choose: Django or Magento or MERN stack.
#newbie
I suggest you to go with MERN Stack (Mongo,express,react,Node). As you know python and django which is a plus point because you can use python and node as your backend and for front-end use react(easy to learn) and database of your choice.(Mongo or SQL)
Currently working on my company's new saas, the main goal is to manage content and user. I'm familiar with the rails framework and how it is easy to code and deploy. The thing is I'm the only dev on the project, and in terms of the tech stack, there is no preference. However, because Node.js is everywhere and there is enough dev on the market, I am stuck between choosing Rails or Node.js. I don't mind implementing Vue.js or React on the frontend, but I need a solid argument to explain to people that aren't necessarily tech-savvy as to why we should choose Rails over Nodejs.
You are probably referring to ruby on rails for web development and nodejs for building the backend. Nodejs has frameworks such as express and next which not only provides a minimal code to build a backend but also gives the flexibility to try and experiment with the framework choices. For example you can have express framework + Passport for OAuth .... etc. The flexibility and the constant improvement of the language provides a good reason to opt for nodejs. Nodejs uses javascript which makes your code uniform when you are working full stack i.e react in front end and nodejs in backend.
I'd use the following metaphor to non-technical people. Rails is like a prepackaged toolkit, which can get most of the common tasks done fairly with ease. Whereas, node.js with whatever backend framekwork of choice, is like a DIY toolkit assembled by mix-and-match different tools in a large tool shop. Of course, at times DIY toolkit can do better on specific tasks. Given that you are the only dev on the project, I'd assume that the resource is fairly limited. And looks like you are not building some next-gen super duper fast smart application. So Just go with the prepackaged toolkit then. Rails is a very opinionated framework, there're pros and cons to it. But thanks to that, many of the gems are coded with it in mind. For example, they are all designed with same naming convention. Many will work well together out-of-box, for example devise and cancancan. Besides, many stuff are built in the framework. For example, logging utility, csrf protection, session encryption, etc. Yes, many of those stuff may not be useful or necessary at the beginning of the project life-cycle. However, down the road, there is a good chance you will need some of those. And the moment you realize that you already have it, it's so delightful. In addition, it's usually easier to debug a rails app than a node app in my experience. Personally, the cases where I would pick node.js over rails would be projects either require a) high-performance, or b) certain core functionality that has been implemented by some node packages but not by any ruby gems. In term of performance, node has a clear advantage over any other major web frameworks, except the ones built with go. It's simply a language feature. Node allows developer to easily write code that runs db query, external api calls, or other stuff of that nature in parallel. And that is THE MOST COMMON performance bottleneck of web applications.
Rails is currently a very mature and feature complete framework.
It's the ideal one if you're the only dev for your project because you get so many things already baked-in the framework that you'd only need to deeply care about specific stuff.
I won't say any NodeJS framework isn't good enough but in my experience with NodeJS frameworks you have to code a lot of the things Rails already provides. There's many people in Twitter and IRL asking for a "Rails for JavaScript" framework.
And you know? In the early stages of any project we have to validate it first with real users/customers. With Rails you can get to production real quick and fast.
I'm going to mention some of the features you get from day 1 when you run rails new app_name
:
- File uploading with Active Storage
- Rich text editor with Action Text
- Emailing with Action Mailer
- ORM, migrations, validations with Active Record
- Web sockets with Action Cable
- Internationalization
- Modern frontend stuff with Webpacker
and more.
The JavaScript community is on its moment, growing and gathering more people everyday but the Rails community is also a big one and there's always going to be a Rails developer to hire whenever you're ready to hire someone.
I suggest you to go with Rails because is a good choice, gives you less things to worry about and it's a very good and mature framework.
I hate to admit it, because I loved my time with Rails (and I still love the framework), I have a hard time justifying new Rails applications these days. Core team has made some tragic design decisions, and developers just don't perceive it as being "cool" any more. The latter is a terrible metric for which to base a technology decision, but I think you'll find it more difficult to recruit additional engineers if you choose Ruby on Rails.
Without knowing too much of the details, Node/Express (ideally with Typescript) seems like a better solution here, given you'll be building out the front-end in Vue or React. It might be worth looking at NestJS, as it's the closest I've seen to a well-formed opinionated framework on the Node side of things. We're also fans of Objection ORM.
I hope that's helpful!
I need a solid argument to explain to people that aren't necessarily tech-savvy as to why we should choose Rails over Nodejs
Hi Max, it sounds like that you are proficient in both stacks and probably have a higher expertise in Rails (correct me if I am wrong) and since you are the only dev on a project, a good argument that comes to mind is probably the velocity and maturity (enterprise grade, battle tested in production) that Rails provide with proven success stories in the tech industry such as Airbnb, Stripes, Shopify to name a few. You can also make the argument that Rails is great to run the backend and React+Vue (and nodejs for tooling) is ideal for the front-end development (see or find companies example that use both). You can also build and show a prototype using both and share your experience which could help you find and forge the selling points to those non tech savvy folks, why not.
Eventually, are you going to have other developers on your project? if yes then you will need to take in account, onboarding and ramp up to contribution time when they are hired.
IMHO, I am not a fan of the debate Rails vs Nodejs, they are just tools at the disposal of the developer it's just a matter of figuring out what makes the most sense.
Let me know if you wanna discuss further, happy to help out!
ps: markdown preview on stack share... no good.
Rails has advantages over node.js (specifically express) when working a more complicated backend. While Express has some speed advantages to Rails, this is mitigated if your software is more CPU intensive.
I have learned both Python and JavaScript. I also tried my hand at Django. But i found it difficult to work with Django, on frontend its Jinja format is very confusing and limited. I have not tried Node.js yet and unsure which tool to go ahead with. I want an internship as soon as possible so please answer keeping that in mind.
If you are currently not working my first suggestion is to study both the frameworks and get a good grasp of those. If you didn't get confident with Django in the first place you should reconsider going back and study more. Get a video course with some code-along and produce some simple application you can showcase on your interviews. If you already took a course take a different one. Another trainer could be more effective and you could experience something new with different excercises. There are lots of both free and paid courses out there. When you will get confident with Django get your feet wet with Node.js because it surely worth it. Node is very different from Django from some perspective, it looks more like an asynchronous version of Flask to me. Be sure to have a good knowledge of ES6 first, because it will be really useful to understand the Node best practices. Study as much as you can now if you are not working. It will supercharge you for the future...
From my experience of the early startup world, a majority of companies these days use Node.js. Python and Go are the next biggest languages, but significantly smaller than Node.
However, if you're having trouble with the front end aspect of Django, using Node probably won't make that easier for you. You'll have a lot more options between front end frameworks (React, Vue.js, Angular 2) , but they'll definitely take more time to learn than Django's templating system.
Think about whether you want to focus on front end or back end for now, and make a decision from there.
I would suggest to go with js, it's the craze now when you enter into the stack it has variety of options and tools that you can adopt , and more than that the demand for js engineers is exponentially increasing and js can do magic in any type of application or architecture.
I had the same question myself a few months ago. I finally chose Node.js, and it was one of the best options I did back then. From when I started programming, I always believed that Python was for me the best language, secure and stable. However, it is not flexible for web development, there are more packages & libraries that are built and work only with JavaScript / TypeScript, and the community, resources & support is much bigger. I was also fascinated by the Django ORM, which I still am, & the admin interface. But those are things, that can be replaces by other tools, such as TypeORM, and the admin interface was not needed at all finally for my case. I know understand that Python is not the language that I should use everywhere and every time, but I can say that it is really good for algorithms, computer science, maths, statistics, analytics & AI. To be honest, I chose TypeScript (TS) with Node.js & Express, because it has auto-completion and "strict" code checking. I hope this helps you, and let you take a look at various aspects of choosing a programming language to work with.
Jinja is a template rendering engine and you will encounter some sort of template rendering engine in each language. Jinja is a pretty standard tool and almost every language has some sort of Jinja equivalent. Ruby has Liquid, Node has Nunjucks, Java has Jinjava, Go's default templating engine is easy to pick up if you know Jinja, Helm charts are easier to pick if know Jinja . So learning Jinja is a good thing.
Actually, you could get very good solution with implementing BE and admin panel with Django and FE with React.js or Vue.js. it will provide you a pretty flexible and powerful environment.
If you already know some django stuff you should keep that learning path. And for the job if you really want an internship you should learn to make rest APIs using django or nodejs, and a front end that consumes those APIs using some framework
I'm planning with a small team to create an application which is a platform for restaurants. I'm on the backend almost alone currently. I'm going to use Node.js for that, and I'm very fond of TypeScript, and I worked before mostly with ExpressJS. The team may get bigger as the application becomes bigger and more successful, so I have the Scalability concern in mind now, and I was considering these options: 1) Use Node+Express+Typescript 2) Use Node+NestJs (which utilizes Typescript by default)
Option 2 is enticing to me because recently I came to love NestJS and it provides more scalability for the project and uses Typescript in the best way and uses Express under the hood. Also I come from an Angular 2 background, which I think is the best frontend framework (my opinion, and I know React quite well), which makes Nest feel familiar to me because of the similarity between Nest and Angular. Option 1 on the other hand uses Express which is a minimalist framework, very popular one, but it doesn't provide the same scalability and brings decision fatigue about what to combine with it and may not utilize Typescript in the best way. Yet, on the other hand, it is flexible and it may be easier to manipulate things in different ways with it. Another very important thing is that it would be easier in my view to hire Node developers with skills in Express than NestJs. The majority of Node developers are much more familiar with JavaScript and Express.
What is your advice and why? I would love to hear especially from developers who worked on both Express and Nest
I highly recommend NestJS because:
- It's a framework you already like;
- Typescript is growing fast, being increasingly adopted in the community;
- All layers are well defined, not needing to think much about the organization;
- Great documentation;
- Nest CLI increases the development speed and keep the pattern;
Only using express and knowing that project can grow, you'ill need to define the structure well so that it doesn't get out of control.
Hi Louai,
I am quite sure that you know the answer to your problem. And I am here to help you to follow your arrow. I have worked with the most popular Nodejs frameworks and I can sure you that there's no stack better than NestJS (at all). Typescript is the best thing that happened with Javascript, this is a fact. Ans NestJS make a such wonderful job using all the best Typescript tools. NestJS is the most mature and organized API manager. Its modular dependence injection, the use of DDD, the solid idea of single responsibility, it's unit a and e2e testing support, its documentation is the most incredible work in the world of Nodejs. You won't regret choosing this framework, even if your application grows a lot. If you follow the documentation tips you will be able to create an amazing and organized application.
ps: I am not part of the NestJS team, I am just a guy tired of wasting time with dumb and bad Frameworks and its bad documentations. I find relief in NestJS with all the time it's saved to me, it helped me to improve my job and let me create great things with Nodejs.
I would definitely suggest NestJs over other options because NestJs gives a lot of tooling. it would definitely suggest NestJs over other options because NestJs gives a lot of tooling & it gives a lot of functionality out of the box. If your team worked with angular 2+ then it will really easy to learn.
First of all, my experience using either Node.js with Express or NestJS is not wide. I liked NestJS due to it's similarity to Angular, so when you know Angluar and like TypeScript you are going to love NestJS, it will be instantly very familiar and easy to use, it's adds a good structure to the project out of the box and well, it uses TypeScript, which is a more structured language - it's good for scalability. As for performance concern s - NestJS is based on Node, it just brings Angular's modular structure to it, so the question is more about how is the additional layer influences the performance - I cannot answer that.
Hi, I'm in a similar position, but related to personal projects. After falling in love with few frameworks in the first day and rejecting them in day 2, I started learning nestJS last week. I currently develop personal side projects using cakephp, and I intend to migrate to nest + vue. This week I'm taking a nestJS course in order to be sure that this is what I want by praticing a little. If you didn't do it yet, I suggest you try to code a todo app or a similar example API using nest, so you can "feel" if this is indeed what you want to use in this larger-scale project.
Some of the characteristics that got my attention to nestJS are typescript, a lot of annotations/decorations, an oppinionated approach to organizing the project, nice documentation and discord, and it's evolution at npm trends shows me it's probably not going to vanish or get buggy anytime soon.
Have you checked out Hapi as an alternative? I'ts not Typescript by default though. If that doesn't seem too interesting, it sounds like you want to go with NestJS :)
I am learning app development. I'm having difficulty finding the right frameworks and stacks to learn, with React , React native with Node.js enough to create a complete app with good ui, analytics and a strong server base. And also is there any other criteria for me to consider when building an app besides the few i listed.
I recommand you use the mean stack. This is really effective :) MongoDB -> database Express -> backend api Angular -> frontend NodeJs -> backend server
You can use react instead of angular and firebase instead of mongo. This is a good place to start :)
Hi, I am looking to select tech stack for front end and back end development. Considering Spring Boot vs Node.js for developing microservices. Front end tech stack is selected as React framework. Both of them are equally good for me, long term perspective most of services will be more based on I/O vs heavy computing. Leaning toward node.js, but will require team to learn this tech stack, so little hesitant.
It's probably worth investing some time for your team to learn Node.js. There's very little overhead, especially with a framework like ExpressJS, so if your team is familiar with JavaScript it should be a quick process.
It handles I/O really well out of the box, and has a strong community with great open source libraries. Since you're using React on the front end, there's also some benefit to being able to use JavaScript throughout your stack.
It was easier to find people who've worked on React than Vue. Angular did not have this problem, but seemed way too bloated compared to React. Angular also brings in restrictions working within their MVC framework. React on the other hand only handles the view/rendering part and rest of the control is left to the developers. React has a very active community, support and has lots of ready-to-use plugins/libraries available.
It is a very versatile library that provides great development speed. Although, with a bad organization, maintaining projects can be a disaster. With a good architecture, this does not happen.
Angular is obviously powerful and robust. I do not rule it out for any future application, in fact with the arrival of micro frontends and cross-functional teams I think it could be useful. However, if I have to build a stack from scratch again, I'm left with react.
We actually initially wrote a lot of networking code in Kotlin but the complexities involved prompted us to try and compile NodeJS for Android and port over all the networking logic to Node and communicate with node over the Java Native Interface.
This turned out to be a great decision considering our battery usage fell by 40% and rate of development increased by a factor of 2.
Working on a new SaaS web/mobile app and ended up with React as our choice of Frontend JavaScript framework for SPA web version with React Native for iOS, Android, Windows clients.
The key takeaways:
Both frameworks can do the job quite well for us. This might be true for the majority of utility web apps being built out there as well, so there was no "wrong" decision here.
Vue is often cited as easier to learn and code on. But only in case your engineers never worked with either Vue or React and start learning them from scratch. In our case, we knew we'll be hiring engineers who already have experience in the framework we'll select - so it was not a big argument for Vue.
We're building our engineering team in Ukraine and realised we have 3(!) times more engineers with React experience on the market than having Vue experience.
Mobile - React Native, despite being a different framework, still shares a lot with React and it's just easier for React developers to start using React Native in days.
The strongest points for our decision:
React community is larger, means more/faster answers to your questions and existing components.
Way more experienced React engineers on the market.
React + React Native is a great combo if you're building web and mobile clients of the same app.
I used React not just because it is more popular than Angular. But the declarative and composition it gives out of the box is fascinating and React.js is just a very small UI library and you can build anything on top of it.
Composing components is the strongest asset of React for me as it can breakdown your application into smaller pieces which makes it easy to reuse and scale.
Svelte is everything a developer could ever want for flexible, scalable frontend development. I feel like React has reached a maturity level where there needs to be new syntactic sugar added (I'm looking at you, hooks!). I love how Svelte sets out to rebuild a new language to write interfaces in from the ground up.
As a small team, we wanted to pick the framework which allowed us to move quickly. There's no option better than Rails. Not having to solve the fundamentals means we can more quickly build our feature set. No other framework can beat ActiveRecord in terms of integration & ease-of use. To top it all of, there's a lot of attention paid to security in the framework, making almost everything safe-by-default.
Hey guys,
My backend set up is Prisma / GraphQL-Yoga at the moment, and I love it. It's so intuitive to learn and is really neat on the frontend too, however, there were a few gotchas when I was learning! Especially around understanding how it all pieces together (the stack). There isn't a great deal of information out there on exactly how to put into production my set up, which is a backend set up on a Digital Ocean droplet with Prisma/GraphQL Yoga in a Docker Container using Next & Apollo Client on the frontend somewhere else. It's such a niche subject, so I bet only a few hundred people have got a website with this stack in production. Anyway, I wrote a blog post to help those who might need help understanding it. Here it is, hope it helps!
Our whole Vue.js frontend stack (incl. SSR) consists of the following tools:
- Nuxt.js consisting of Vue CLI, Vue Router, vuex, Webpack and Sass (Bundler for HTML5, CSS 3), Babel (Transpiler for JavaScript),
- Vue Styleguidist as our style guide and pool of developed Vue.js components
- Vuetify as Material Component Framework (for fast app development)
- TypeScript as programming language
- Apollo / GraphQL (incl. GraphiQL) for data access layer (https://apollo.vuejs.org/)
- ESLint, TSLint and Prettier for coding style and code analyzes
- Jest as testing framework
- Google Fonts and Font Awesome for typography and icon toolkit
- NativeScript-Vue for mobile development
The main reason we have chosen Vue.js over React and AngularJS is related to the following artifacts:
- Empowered HTML. Vue.js has many similar approaches with Angular. This helps to optimize HTML blocks handling with the use of different components.
- Detailed documentation. Vue.js has very good documentation which can fasten learning curve for developers.
- Adaptability. It provides a rapid switching period from other frameworks. It has similarities with Angular and React in terms of design and architecture.
- Awesome integration. Vue.js can be used for both building single-page applications and more difficult web interfaces of apps. Smaller interactive parts can be easily integrated into the existing infrastructure with no negative effect on the entire system.
- Large scaling. Vue.js can help to develop pretty large reusable templates.
- Tiny size. Vue.js weights around 20KB keeping its speed and flexibility. It allows reaching much better performance in comparison to other frameworks.
The project is a web gadget previously made using vanilla script and JQuery, It is a part of the "Quicktext" platform and offers an in-app live & customizable messaging widget. We made that remake with React eco-system and Typescript and we're so far happy with results. We gained tons of TS features, React scaling & re-usabilities capabilities and much more!
What do you think?
Pros of Node.js
- Npm1.4K
- Javascript1.3K
- Great libraries1.1K
- High-performance1K
- Open source805
- Great for apis486
- Asynchronous477
- Great community423
- Great for realtime apps390
- Great for command line utilities296
- Websockets84
- Node Modules83
- Uber Simple69
- Great modularity59
- Allows us to reuse code in the frontend58
- Easy to start42
- Great for Data Streaming35
- Realtime32
- Awesome28
- Non blocking IO25
- Can be used as a proxy18
- High performance, open source, scalable17
- Non-blocking and modular16
- Easy and Fun15
- Easy and powerful14
- Future of BackEnd13
- Same lang as AngularJS13
- Fullstack12
- Fast11
- Scalability10
- Cross platform10
- Simple9
- Mean Stack8
- Great for webapps7
- Easy concurrency7
- Typescript6
- Fast, simple code and async6
- React6
- Friendly6
- Control everything5
- Its amazingly fast and scalable5
- Easy to use and fast and goes well with JSONdb's5
- Scalable5
- Great speed5
- Fast development5
- It's fast4
- Easy to use4
- Isomorphic coolness4
- Great community3
- Not Python3
- Sooper easy for the Backend connectivity3
- TypeScript Support3
- Blazing fast3
- Performant and fast prototyping3
- Easy to learn3
- Easy3
- Scales, fast, simple, great community, npm, express3
- One language, end-to-end3
- Less boilerplate code3
- Npm i ape-updating2
- Event Driven2
- Lovely2
- Creat for apis1
- Node0
Pros of React
- Components831
- Virtual dom672
- Performance578
- Simplicity508
- Composable442
- Data flow186
- Declarative166
- Isn't an mvc framework128
- Reactive updates120
- Explicit app state115
- JSX50
- Learn once, write everywhere29
- Easy to Use22
- Uni-directional data flow21
- Works great with Flux Architecture17
- Great perfomance11
- Javascript10
- Built by Facebook9
- TypeScript support8
- Server Side Rendering6
- Speed6
- Feels like the 90s5
- Excellent Documentation5
- Props5
- Functional5
- Easy as Lego5
- Closer to standard JavaScript and HTML than others5
- Cross-platform5
- Easy to start5
- Hooks5
- Awesome5
- Scalable5
- Super easy4
- Allows creating single page applications4
- Server side views4
- Sdfsdfsdf4
- Start simple4
- Strong Community4
- Fancy third party tools4
- Scales super well4
- Has arrow functions3
- Beautiful and Neat Component Management3
- Just the View of MVC3
- Simple, easy to reason about and makes you productive3
- Fast evolving3
- SSR3
- Great migration pathway for older systems3
- Rich ecosystem3
- Simple3
- Has functional components3
- Every decision architecture wise makes sense3
- Very gentle learning curve3
- Split your UI into components with one true state2
- Image upload2
- Permissively-licensed2
- Fragments2
- Sharable2
- Recharts2
- HTML-like2
- React hooks1
- Datatables1
Sign up to add or upvote prosMake informed product decisions
Cons of Node.js
- Bound to a single CPU46
- New framework every day45
- Lots of terrible examples on the internet40
- Asynchronous programming is the worst33
- Callback24
- Javascript19
- Dependency hell11
- Dependency based on GitHub11
- Low computational power10
- Very very Slow7
- Can block whole server easily7
- Callback functions may not fire on expected sequence7
- Breaking updates4
- Unstable4
- Unneeded over complication3
- No standard approach3
- Bad transitive dependency management1
- Can't read server session1
Cons of React
- Requires discipline to keep architecture organized41
- No predefined way to structure your app30
- Need to be familiar with lots of third party packages29
- JSX13
- Not enterprise friendly10
- One-way binding only6
- State consistency with backend neglected3
- Bad Documentation3
- Error boundary is needed2
- Paradigms change too fast2