Look Ma No Hands
With Web APIs available now, you can do a lot without a framework.
Lets have a look at some of them.
The initial productivity boost on using a framework to get started on your project is hard to dismiss, I want to get on with the logic of my application and explore the domain.
Then again, revisiting an older project for bug fixes, new features and updates can be constrained: dependencies may conflict and even security can be compromised by an abandoned package way down deep in the dependency tree.
Standards take longer to arrive and be fully supported, also, longer to be abandoned, so use them where you can.
Hey, remember when jQuery was a no brainer? No? Well that was a while back now. It took a lot of the pain out of cross browser support, but now the browsers are much more aligned to standards and you don't need it.
This is a well trodden debate, and there is no maxim here. For me, I am leaning towards less dependencies now.
Anyway, lets pretend there's no pressure and see what we can do with standard browser APIs and some nice coding patterns.
There are some libraries that I will be using for build and test:
- Typescript
Type-safe coding, decorators, generics and other stuff - its a stair lift, a zimmer frame and an air fryer all in one.
There is lots of great resource on why you should use it too.
- Jest
Testing framework, Typescript support, lots and lots of documentation, walkthroughs, blogs etc.
- Webpack
Making my code work for test and production is easier using Webpack or Rollup.
Todo: explore raw module browser support further.
There is lots to discuss, and it's all going to be based around a puzzle I have written to help my son with Binary.
You can find it here 8bit.antix.co.uk.
A daily challenge to convert the 8 bit image into decimal, it's basic Maths, yes, but with a Computer Science flavour. - Yum :D
Next, these are the standards that I use
- Web Components
HTMLTemplateElement and other parts of the Web Component spec are available on all major browsers.
Reusable, customisable Web Components are possible, and not difficult at all.
Encapsulate logic, style and markup - hey, make a framework.
- Template Literals
String interpolation in JavaScript is standardised, and using tag functions, you can do all sorts of composition and formatting nice an fast, in both dev and runtime.
- Web Manifests for PWAs
Gives the ability to describe your web application to the OS via the browser, and get access to even more APIs to make it act more native.
- Service Workers
Runs on a separate browser thread, without DOM access.
Allows install and caching for offline support, OS notifications, background periodic sync when online.
We still need lots. In particular, proper offline scheduled tasks would be massive.
More to come on this, in the meantime, take a look at Fugu, the Web Capabiliies Project.