NX is a modular front-end framework - built with ES6 and Web Components. The building blocks of NX are the core, the middlewares, the components and the utilities. These are all hosted in separate GitHub repos and npm packages.
The NX core is a tiny library, responsible for one thing only. It allows you to create dumb components and to augment them with middlewares. A component executes its middlewares when it is attached to the DOM and it gains all the extra functionalities from them. NX comes with some core middlewares out of the box, which you can find listed below.
- Text interpolation: Interpolate values from the code into the view dynamically or one-time. Includes optional filters.
- Dynamic and custom attributes: Use one-time or dynamically evaluated native attributes or define some custom ones.
- Event handling: Add inline event handlers to listen on any event. Includes optional rate limiters.
- Visual flow: Use conditional blocks and loops inside the HTML view.
- Data binding: One-way, one-time or two-way data binding on any event and with no edge cases.
- Rendering: Modularize your HTML and CSS code by moving them into separate files for each component.
- Routing: Simple, but powerful routing with automatic parameter synchronization and router events.
- Metadata and analytics: Handle your SPA's metadata and analytics declaratively with ease.
- Dynamic styling: Simplify styling by passing objects to the style and class attributes.
- Animations: Create powerful animations by using only a few HTML attributes.
- Some other low level middlewares, mentioned in the Docs.
- Anything else you define with the simple
function middleware (elem, state, next) {}
syntax.
These can be combined to create components with the desired functionality. Alternatively ready made core components can be extended and used, to avoid boilerplate code.
You can get NX from npm with the npm install @nx-js/framework
command. See the
installation page for other options.
You can bundle the framework locally with the npm run build
command and minify it
with the npm run minify
command. The bundled and minified files are placed in the
lib
folder.
NX is very modular and every module is hosted in its own GitHub repository. Please open the issues and PRs in the relevant repositories. For example: if you have a feature request for routing, open a new issue in the route-middleware repo.