C
C
ChibiZ2018-02-07 17:36:26
JavaScript
ChibiZ, 2018-02-07 17:36:26

Which JS framework to choose for full-stack?

Which framework is currently the most developing for full-stack development in javascript?
I have development experience in React + redux, Angular, Vue, JQ, but this is more about the client.
On Node.js, I only used ORM + Express, for some simple micro services (chat, landing, API host, etc.).
From the express, the feeling of a Lego constructor, and the whole architecture is on you, and it allows a fair amount of shit code.
Fate brought me to symphony and laravel, and it was very comfortable, but this is php, which I would not like.
I am an ardent fan of JS, I make websites, games, applications on it.
Interested in the following things:

  • Strict architecture (Goal: stop shitty code, many developers, little time to do code reviews for them)
  • Rich set of built-in debug tools
  • Document generation
  • Availability of tests, unit, end-to-end
  • Independence from a specific database. Maybe in Mongo and SQL
  • npm package manager
  • Flexibility in fronend build (possibility to use both gulp and webpack)
  • Convenient React/Angular/Vue rendering on the server
  • Ease of Host API
  • Working with authorization, cookies and the like
  • Websocket, or alternative
  • Timeliness of updates
  • Cross-platform (Win/Mac/Lin)?
  • Templateization? Pug?
  • Dynamic filenames, paths

Of the contenders
koa.js
total.js
sails.js
meteor.js
derby.js
A meteor is coming out of the repositories and support, but maybe I don’t know something.
There is an opinion that the meteor will be more dead than alive. They write the meteor is dead, the react is popular, but damn it, these are completely different things. Everything, articles "Meteor is the future" from 2014.
There is no experience with any of the listed frameworks, so don’t scold me too much for naive questions.

Answer the question

In order to leave comments, you need to log in

10 answer(s)
V
Vladlen Hellsite, 2018-02-07
@Negezor

For Vue.js, there is a great Nuxt.js for handy SSR. Nuxt.js natively uses Webpack under the hood. Vue has one file components that allow you to choose a template engine, a preprocessor for CSS. As for convenience, the API could offer the GraphQL specification .

A
Alexander Litvinenko, 2018-02-08
@edli007

At one time I worked with React \ Redux, and Vue, and Angular.
Depends on the task, the most convenient is React \ Redux, if there is a person who can set up custom webpack for you, this is just a fairy tale and not development.
Vue is for the lazy, when there is none of the above, it allows you to quickly rivet a template out of the box. The same basic ReactApp that lazy people love so much does almost nothing.
Honestly, I didn’t appreciate Angular with its TypeScript, in our team all people have a certain level of qualification and they don’t even think about such children’s mistakes that he warns. But if you have the possibility of homocoders and grandiose plans - this may be the way out, but not the fact that it is cheap.
The conventions of using TypeScript slow down the overall development to a large extent, you should independently evaluate the profit from fewer bugs due to the built-in fool protection, because there will be fewer bugs from higher-ranking specialists initially and they will work faster without TypeScript.
Well, if you, pardon the word, are completely woodpeckers, then there is only one way out for them - Ember, this framework is very good, its main idea is to strictly follow the specification, ignoring the personal preferences of programmers. Such a code is very easy to read, maintain, and in general it is the best in the long run, but the difficulty is to find the embers themselves, the entry threshold is high. So if you have a crowd of people who still don’t know how and need to do something, make them learn Ember, then they will do what they need, no matter how crooked their hands are.

D
Dmitry Kuznetsov, 2018-02-08
@dima9595

If js is important to you both on the front and on the back, then try Adonis JS. This is something like Laravel, only on Node.JS. Here is an article on Habré: https://habrahabr.ru/post/324220/

C
Coder321, 2018-02-07
@Coder321

If you choose Angular for the front, then you can look towards nestjs, this is an angular-like node framework.
I also liked Loopback.

X
xfg, 2018-02-08
@xfg

The best available now is koa or express for the http protocol and socket.io for the websocket protocol. PHP is also moving away from full-stack frameworks towards micro-frameworks. Today, a modern framework is request routing implemented on the concept of middleware.
The problem of spaghetti code is not solved by the framework, but by the architecture. On the server, this is usually a multilayered architecture. You break the application into 4 layers of presentation, application, domain and infrastructure (they can also be called data access layer or persistence layer). The controllers of the framework where the user's request goes will be your topmost presentation layer. It is better to build an infrastructure layer from separate libraries than to tie it to a framework. In this case, you do not have to rewrite the entire infrastructure layer due to the fact that the framework is no longer developed. The Application and Domain layers use the Infrastructure layer through interfaces, thereby abstracting away from specific implementations. Thus, you can always replace one implementation with another (Strategy pattern) without changing the higher layers. The presentation layer simply calls the services from the application layer and returns the result in html/json/xml/etc to the client.
Sometimes they simplify to 3 or even 2 layers. For example, if you have a CRUD application, then the application and domain layers are not needed and you can leave only the presentation and infrastructure. Also, if your application layer does nothing but call the domain layer, then you can also get rid of it, leaving 3 presentation, domain and infrastructure layers.
Implementation examples can be found here and here . They are in Java. Haven't seen it in javascript yet.
You can study the topic in more detail by taking any book on this topic.
I do not recommend Meteor. This is not the future. This is a crutch. They wanted to make a framework for real-time applications. But in fact, it turned out to be just a platform for streaming the changes that have occurred in mongo directly to the client.
Sails is an attempt to make a full-stack framework. But the whole world is moving in the opposite direction.

V
Vitaly, 2018-02-08
@vshvydky

I liked the meteor, but its sharpness for mongo didn’t quite attract, it seems like there is customization for other databases, but I don’t like
orms because my choice is koa.js jwt socket.io pg-promise (back), postgres as a database, on front two options react / react redux either through CRA with eject configuration and its correction with subsequent proxying through nginx or if SSR is required then connecting next.js.
In any case, the framework of the project and the requirements for what the developers write should be installed immediately, but if the project is without any problems, I don’t think this can be a problem.

I
itexams, 2018-10-29
@itexams

I do not recommend using Meteor. This is a tool primarily for prototyping, not for production. We encountered this on a project that began to grow from a prototype into an application that was actively used by several people at the same time - uploading pictures and their markups.
As a result - 100% memory load and hellish brakes. As a result, the meteor had to part.

V
Victor, 2018-02-08
@akafloa

Angular is a full-fledged framework and not just for the client, it has everything you need

D
Dmitry Slepnev, 2018-02-17
@dimaslepnyov

node.js was not invented for this, everything works on microservices there.

P
PxlFxr, 2018-02-19
@PxlFxr

Fate brought me to symphony and laravel, and it was very comfortable

Well.
So what? Modern php is very good. The prevailing opinion about php does not reflect the current situation.
Recently I tried laravel, I liked it. All the functionality you need is there.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question