Handmade Network»Forums
Colin J. Mills
3 posts
Web developer by day. C programmer by night. Sorta like batman but with more segfaults.
Handmade JS
Edited by Colin J. Mills on Reason: Initial post
Does anyone have any experience with "Handmade JS" as in the simplest way of getting into web dev without alot of different frameworks? I find that I am always grasping at straws in terms of building "simple" web sites they always rely on React or Vue etc. I find that React is a good framework for a multitude of different reasons. I was wondering what everyone's experience is in trying to make the web a bit simpler.

Thanks
Asaf Gartner
64 posts / 2 projects
Handmade Network Staff
Handmade JS
You can make webapps without using libraries, and you'll probably end up with a much smaller JS package and better performance. Personally I don't like any of today's JS frameworks. I find that they only get in the way and I can do a much better job without them.
If you want to work without libraries, you'll need to have good familiarity with the browser's APIs. MDN has pretty good documentation and they link to the relevant parts of the spec at the bottom of each page.

Unfortunately, I don't know of any good guides for working without frameworks, but if you have more specific questions I can try to answer them.
Mārtiņš Možeiko
2559 posts / 2 projects
Handmade JS
That is pretty much only way how I do webpages. Just plain JS, CSS and HTML. Same way I did it 15 or so years ago.
Colin J. Mills
3 posts
Web developer by day. C programmer by night. Sorta like batman but with more segfaults.
Handmade JS
Yeah I understand that this probably makes the most sense.

I find the DOM API to be a bit clunky that is the only complaint with Vanilla JS.

But simple is always better!
Oliver Marsh
193 posts / 1 project
Olster1.github.io
Handmade JS
I've tried doing a bit of the handmade style js. I've found you've got to 'play by the rules' a bit more than if you're writing a c style program. For example I tried adding an animation system using the 'setInterval' callback, and control the animations directly manipulating the DOM , but was not very performant. Whereas if i used the css animation keyword (a lot less work), the browser expected this, so was more performant. So reading up on conventional ways of doing things, would probably save time.
Ryan Fleury
204 posts / 4 projects
Working at Epic Games Tools (RAD). Former Handmade Network lead. Maker of Hidden Grove.
Handmade JS
This is to some degree off-topic as it doesn't necessarily pertain to JavaScript (other than getting rid of it in some cases), but it does pertain to the more general concept of "handmade thinking" when it comes to web development.

I have been dabbling in the web recently out of necessity. A good approach for my case (my personal website) was custom static site generation. This was done with just a simple C program that parses my own text format that tries to be as close to a natural description of the static content as possible.

This approach has two notable benefits (among others):

  • I actually have the ability to separate the content from the web entirely, and can export directly to different formats, like BBCode or Markdown (any other format would just a different backend for the content transpiler).

  • I now have the ability to perform work at 'generation time' (much like Jai provides compile-time capabilities). One of the things that I can do at generation time is, for example, generating a list of all of the blog posts I've written, sorted by date. This helps move work that is often done at runtime with JavaScript to generation time, which happens offline. This is better for the end-user, as their browser doesn't need to do work that could've been done offline.


  • I was also surprised to hear from Ben Visness and Asaf Gartner that there is quite a bit of interesting server-side work that can be done in a handmade fashion. Some of the options that I heard about were CGI programs, where a webserver is configured to run an arbitrary command when it receives a particular HTTP request, then the command is expected to produce HTTP output in stdout (this command could be, for example, your own C program), and additionally the concept of a custom reverse-proxy HTTP server (which only communicates with the main outward-facing web server locally server-side, so there isn't the concern of security), which seems like it could be up and running in a relatively short amount of time.