Echo JS 0.11.0

<~>

tracker1 1282 days ago. link 2 points
"JavaScript can only run in a browser, and it relies strongly on CSS & HTML." WRONG!!!

"JS is restricted to web applications, and its primary purpose is to create dynamic, interactive pages, web and mobile apps, and fully-featured GUIs." WRONG!!!

On Angular: I really wish it weren't the first framework mentioned... it's a horror show, I never want to touch it again, and it can die a painful/quick death for all I care.  It's not worth the time, hassle or effort and people that like it tend to create some massive monstrocities without ever really understanding it to begin with.

On Backbone: I'm surprised many use it anymore... it's okay-ish, and can be combined with React, Vue, Svelt and other view engines without much difficulty.

On React: Love it... React + Redux +_Thunks + Fetch + Material-UI is the single best combination of modules for web based applications I've ever used.  Can be a bit of a pain to get setup the way one wants, create-react-app and/or parcel go a long way to help that though.  Other libraries with JSX adapters are useful as well...  SVG support is an uncut gem in terms of application development in this space as well.

On Node.js, the cons seem to be written by someone that hasn't used it... the API changes are usually from V8 for compiled modules, and is generally not a concern for most apps (sqlite is probably the most used compiled module in broad use).  As for lack of standards and documentation, the API docs are massive and pretty thorough... though could use more examples for some of the use of crypto libraries, which can sometimes be confusing, though not nearly as much as the .Net or Java crypto libraries.

On backend frameworks, still love Koa the best, it has all the hindsite of Express and started by the same developer.  Much cleaner structure, better middleware abstractions and a dream for standing up server applications in general imho.

On JavaScript Widgets, for the love of god, don't use commercial widgets for JS projects... they tend to be massive, bloated messes and the only concern is how they look, never how they perform and will almost always fail on mobile devices.  Stick to components that are generally available via github/npm.  Material-UI, not mentioned, is the gold standard component library as far as I'm concerned, for more complex needs, there are decent options (see above mention of SVG in React/JSX).

On test frameworks... as heavy as Jest is, it's the cleanest integration with coverage setup and supports running concurrent tests in parallel.  Nothing comes close imho.  The methods are jasmine based, and while I like mocha+chai more, the extra setup for coverage is so painful, just use Jest.

On JS vs PHP, if your front end is an SPA, it's easier to get Node/JS on the backend.  I am leaning towards Deno for some future backend projects though.

On JS vs Ruby, if you have Rails developers in-house, then sure leverage that... if you don't, full stack JS is likely better as an option.

On JS vs Dar, imho dart is a dead end.

C++: only for CPU critical code, rust or go are generally better options for many modern projects though.

C#: see Ruby comments above, if you have C# devs in-house, leverage them...  Same for Java.

TypeScript: for services and libraries, I'm starting to lean towards TS + JSDoc comments.  TS has gotten better and parcel (or ts-node) has made it pretty easy to bootstrap a TS project with, not to mention Deno is TS in the box.  For single-dev projects that aren't shared libraries, I'm inclined to go plain JS.

On JS costs: stick to open-source as much as possible.  Leverage platform integrations from Lambda/Functions support or Docker/Kubernetes deployment models.  Applicaiton/Library costs should be really avoided as usually there's an open alternative that's better already.

On saving money with remote JS devs... this is *REALLY* hit or miss... the range of skill/talent for those considered "senior" developers (quotes intentional) is really broad.  There are many who consider themselves at a senior level with skills so poor it wouldn't fly with any other language or tool-set.  That's also why the salary range is so big as well, and doesn't necessarily align in either case.  Despite the range of $80-120k on the document higher up, the top end for the best developers can clear $140k+, rare exceptions over $180-240k for FAANG companies.  To reach these top end positions, you really need to know JS the language, how to leverage architectures and build systems that work together, and having experiences with other languages helps.

Aside: on that last note, you should try to be practiced in at least two platform languages if you want to level up.  I'd recommend Python, C#, Rust and/or Go for this.  A functional language like Haskel, Closure, F# or others can help as well.  Knowing different languages, and styles of languages can really help in terms of understanding how to leverage different styles.  JS is a very flexible language where you can use Imperative, Procedural, Functional and OO patters and/or mix them as needed, without exposure to other platform languages, it's difficult to know when/how/why.
Xenorplxx 1277 days ago. link 1 point
Thanks a lot for your fixes suggestions. We appreciate your time and will take them into account!

I share your love for React :).

As for the backend, I've never used Koa before, I should give it a try. I've been recently writing a greenfield project using NestJS and I appreciate that plenty of things are really well thought through (although maybe slightly underdocumented), I'm convention over configuration all the way - the "Rails way" was my way for a long time.

I too am often inclined to go plain JS, but I still can't shake a feeling that I'm doing a bad thing here not going with TS all the time.