Introduction
As part of my web development learning journey, I came across many and many features to build but I always kept one thing in mind: use as few external libraries, frameworks and other dependencies as possible. Therefore, aemiJS comes with no dependencies, it is written in vanilla and modern JavaScript and actively developed to support NodeJS, EcmaScript Modules and later NodeJS ES Modules syntax in addition to Deno Modules.
AemiJS is structured as a Git repository with long-living branch. Actually, it includes es-module and node-module only. Each branch includes as much features as possible from every other unless there is no good reason or no compatibility at all, i.e. DOM features has nothing to do in Node branch. However, some features have to be tweaked according to their running environment (as below ExtendedWorker
, Dataset
or Utils#getUID
method).
ExtendedWorker
ExtendedWorker
is one of the main features of aemiJS. It straightforwardly consists in a wrapper for a Worker
that enables transferring workload to the Worker
and receive the computed result wrapped in a Promise
. Nothing is more annoying that dealing with event listeners communication when you have to use efficiently Workers. To do so, you just have to include the Multithread-worker.js
script in constructor arguments or via importScripts
in the Worker file. Also, the ExtendedWorker
truly enhances worker usage experience by allowing passing worker content directly in ExtendedWorker
constructor. What could be more appealing than that?
However, Node already gives the ability to pass worker content through the constructor but aemiJS provides the Promise feature through ExtendedWorker
even in Node. So, still a big deal.
Dataset
AemiJS also tries to deal with big amounts of data and in this way provides a basic Dataset
Handler primarily designed to ease preprocessing of datas for machine learning. This feature is still in early stages of development but could be really helpful.
Element Creation Shorthand
Once upon a time, web developers used to write raw HTML. But not anymore, you could use Vue, React or Angular and spend quite a lot of time to understand and learn these frameworks or you could also just use… ecs
. What is that? Just a tiny shorthand for Element creation. It accepts whatever you could insert in a HTML raw code but you can also directly insert EventListeners, dynamic attributes or make your element children depend on Promise resolution. Being on JavaScript side allows also to benefit of everything the language provides. So, it’s easier to use and less demanding.
Other stuffs
AemiJS also provides:
- an in-worker Markdown Parser that fetches the marked Markdown parser library from a CDN by default but you can overwrite it to set your own in place ;
- a custom short-code manager that allows to place a short-code and it will call a function you should predefine before and display the processed result in place ;
- a functional-oriented array implementation, accompanied by a pipe and compose function ;
- a shorthand to wait for common page events or create custom delayed callbacks.