Hacker News new | ask | show | jobs
by emodendroket 1136 days ago
Yeah but that doesn't answer why you can't share validators between the backend and the frontend if both are written in the same language.
1 comments

Because HTML form validation is a built-in native feature of HTML, and it's integrated in the browser:

    <input type="email" required placeholder="Please enter your email address">
Constantly reinventing the wheel in every app is silly.
These validators are rather limited and you’ll end up needing JavaScript for any Web app with anything beyond the simplest requirements.
They're limited in some ways but they're just about powerful enough to do almost everything you'd need or want to do client-side without making a network request. In my opinion it doesn't make sense to try to fit in tons of complex validation logic in the frontend.
Why make a round trip if you don’t have to?
Some kinds of validation really do need the round trip. If somebody is choosing a user name on a sign up for you do need to do a database lookup.

If your back end is fast and your HTML is lean, backend requests to validate can complete in less time than any of the 300 javascript, CSS, tracker, font, and other requests that a fashionable modern webapp does for no good reason...

It's true though that many back ends are run on the cheap with slow programming languages and single-thread runtimes like node.js that compete with slow javascript build systems to make people think slow is the new normal.

Yeah, obviously if it requires I/O you can’t write it client side, but the argument here seems to be in favor of doing validation only server-side even when it could also be done client-side.
Why be on the internet at all? Why not distribute a desktop app that doesn't need any connectivity at all?
Presumably there are some features of the app that won’t work that way. Surely you’re not saying you prefer a Web app just for the sake of making calls.
because many people wouldn't use the product or you would have to maintain multiple codebases for the various operating systems and devices (including mobile).