
Ask HN: Dynamic client interaction without big frameworks - dorukce
Hi,<p>I have built a server-rendered django project and I want to implement basic user interactions like adding a tag to a document. In future there can be multiple user actions, but now I just want to add a simple action-ajax-response lifecycle.<p>But I dont want to deep dive into big frameworks like React, Vue etc. and their messy configuration.<p>So here is my questions:<p>- Does jQuery still reliable in 2018?<p>- Is there any javascript library for basic user interactions?<p>- Should I implement my own state-action library or can redux solve it for me without much overhead?<p>- Have you ever been in this situation and what did you do?<p>PS: Sorry for my broken grammar, English is not my primary language.
======
cimmanom
If I understand your use cas properly, jQuery should be plenty; but if you
only need to support modern browsers, you can do 98% of what JQuery does using
vanilla JavaScript these days, and use lodash for the rest.

Consider using server-rendered partials for updating the display. That’s
particularly compatible with Django’s templating language.

------
cutety
> jQuery

Yes, jQuery is still fine, just (maybe) dying a bit in popularity. The biggest
problem I think most people had/have with jQuery is it doesn’t enforce any
kind of structure, therefore leading to a ton of spaghetti code if the
developer isn’t already fairly disciplined, unlike React/Vue that encourage
(almost force) you to write highly modular code through components. However, I
think a lot of this was caused by the fact that it was actually pretty hard to
write modular JS in jQuery’s hay day, as things like ES6 modules didn’t exist.

> Is there a lightweight JS framework for UI?

Tons. Are they any good/well supported? Meh. I’m sure there are a few good
ones out there, but none that have near the amount of dev support that
React/Vue/Angular have. The only one I can think of that I’ve seen mentioned,
in a positive manner, that might fall in this category and isn’t one of the
ones normally thrown around is Riot.js[1], which may be interesting to you.
It's mostly just regular JS, though it does have a template system, so
depending on who you ask that's either really neat/good thing or the worst
thing since ColdFusion.

> Should I implement my own state management lib

No.

> Redux

If you want to use Redux, you might as well add React. While you don’t
technically have to use them together, I don’t know why you would use Redux
without React (or at all). If you are interested in adding some sort of
central state management, and aren’t interesting in adding a framework I’d
suggest looking at MobX[2] instead. It’s quite a bit more agnostic than Redux.

> Have you ever been in this situation?

Yeah, about two(ish) years ago, I found myself working a fairly typical Rails
app, and I wasn’t satisfied with how shitty the UI was, and wanted to add some
JS crap to achieve the functionality I wanted (i.e more interactive & dynamic
interface). I looked at React, tried some tutorials and all that, hated it
almost immediately because of all the setup bullshit, weird api naming (which
I believe has gotten better), and JSX looked like complete shit to me (still
not in love with it).

So, I decided to check out this Vue thing that people were starting to talk
about (was only an early version 1 then). First impressions were good, I
didn’t have to configure a shit load of different build tools to add it to my
monolithic Rails app, just added a js file (and you can still just do this),
the docs were surprisingly easy to read and really helpful. I was productive
with it after a few days, prior I had only done some very minimal jQuery crap.
And what initially started out as an effort to add some interactivity turned
into the entire frontend being rewritten in Vue because it’s (my opinion) that
good.

jQuery is still fine, if you’re just looking to add some light interactivity,
that’s literally what it’s good for. If you want to make a highly dynamic
frontend, you’re probably best of biting the bullet and going for one of the
major frameworks (React/Vue/Angular/Ember(?)), as they have the most support
and aren’t going to be dropped because the maintainer realized he doesn’t give
a shit anymore. And, I’d say Vue is likely the most approachable, as the docs
are very good, the community is super helpful, and (if you want to) you can
gradually ease into the full blown modern build config setup (vue-cli makes
this something you don’t have to even worry about these days though). To start
using Vue, you just have to link a js a file in your HTML like the good ol
days (or even just use the CDN and not have to download anything)[3], unlike
React/Angular which require build steps to be in place. I also think, in my
slightly biased opinion, Vuex (Vue’s flux-esque state management lib) is the
easiest to use, and it doesn’t try to be a general, framework agnostic, lib so
it’s highly integrated into Vue which makes it easy add and unobtrusive to use
— I add it to any Vue project I’m working on regardless of size because it’s
so easy to work with. Not sure most people would be gunning to add Redux
(boilerplate) to their projects until it actually needs it.

[1] [https://riot.js.org/](https://riot.js.org/)

[2] [https://github.com/mobxjs/mobx](https://github.com/mobxjs/mobx)

[3] [https://vuejs.org/v2/guide/installation.html#Direct-lt-
scrip...](https://vuejs.org/v2/guide/installation.html#Direct-lt-script-gt-
Include)

~~~
dorukce
Thank you so much for taking your time to give a fully response. I will
definitely look in to vue and give it a try. Thanks.

