• Stars
    star
    2,882
  • Rank 15,744 (Top 0.4 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 5 years ago
  • Updated 15 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The application worker driven frontend framework

Downloads Version License Join the Slack channel Discord Chat PRs Welcome

Welcome to neo.mjs!

neo.mjs enables you to create scalable & high performant Apps using more than just one CPU core. No need to take care of a workers setup, and the cross channel communication on your own.

Version 4 release announcement

Content

  1. Slack Channel for questions & feedback
  2. Scalable frontend architectures
  3. Multi Window COVID19 IN NUMBERS Demo App
  4. COVID19 IN NUMBERS Demo App
  5. What if ... (Short overview of the concept & design goals)
  6. Want to learn more?
  7. Online Examples
  8. Online Docs
  9. Command-Line Interface
  10. Ready to get started?
  11. Story & Vision
  12. neo.mjs is in need of more contributors!
  13. neo.mjs is in need of more sponsors!



1. Slack Channel for questions, ideas & feedback

Join our community:
Join the Slack channel



2. Scalable frontend architectures

Most frontends today still look like this. Everything happens inside the main thread (browser window), leading to a poor rendering performance. The business logic happens inside main as well, which can slow down DOM updates and animations. The worst case would be a complete UI freeze.

To solve this performance problem, it is not enough to just move expensive tasks into a worker. Instead, an application worker needs to be the main actor. neo.mjs offers two different setups which follow the exact same API. You can switch between dedicated and shared workers at any point.

The dedicated workers setup uses 3-6 threads (CPUs). Most parts of the frameworks as well as your apps and components live within the app worker. Main threads are as small and idle as possible (42KB) plus optional main thread addons.

In case you want to e.g. create a web based IDE or a multi window banking / trading app, the shared worker setup using 5+ threads (CPUs) is the perfect solution.

All main threads share the same data, resulting in less API calls. You can move entire component trees across windows, while even keeping the same JS instances. Cross window state management, cross window drag&drop and cross window delta CSS updates are available.



3. Multi Browser Window COVID19 IN NUMBERS Demo App

The most compelling way to introduce a new framework might simply be to show what you can do with it.

Blog post: Expanding Single Page Apps into multiple Browser Windows

Live Demo: COIN App (Multi Window)
Chrome (v83+), Edge, Firefox (Safari does not support SharedWorkers yet).
Desktop only.


You can find the code of the multi window covid app here.



4. COVID19 IN NUMBERS Demo App

Live Demo: COIN App dist/production
Desktop only => support for mobile devices is on the roadmap.


You can find the code of the covid app here.



5. Short overview of the concept & design goals

What if ... Benefit
1. ... a framework & all the apps you build are running inside a separate thread (web worker)? You get extreme Performance
2. ... the main thread would be mostly idle, only applying the real dom manipulations, so there are no background tasks slowing it down? You get extreme UI responsiveness
3. ... a framework was fully built on top of ES8, but can run inside multiple workers without any Javascript builds? Your development speed will increase
4. ... you don’t need source-maps to debug your code, since you do get the real code 1:1? You get a smoother Debugging Experience
5. ... you don’t have to use string based pseudo XML templates ever again? You get unreached simplicity, no more scoping nightmares
6. ... you don’t have to use any sort of templates at all, ever again? You gain full control!
7. ... you can use persistent JSON structures instead? You gain more simplicity
8. ... there is a custom virtual dom engine in place, which is so fast, that it will change your mind about the performance of web based user interfaces? You get extreme performance
9. ... the ES8 class system gets enhanced with a custom config system, making it easier to extend and work with config driven design patterns? Extensibility, a robust base for solid UI architectures
10. ... your user interfaces can truly scale? You get extreme Performance



6. Want to learn more?

neo.mjs Concepts



7. Online Examples

You can find a full list of (desktop based) online examples here:
Online Examples

You can pick between the 3 modes (development, dist/development, dist/production) for each one.



8. Online Docs

The Online Docs are also included inside the Online Examples.

dist/production does not support lazy loading the examples yet, but works in every browser:
Online Docs (dist/production)

The development mode only works in Chrome and Safari Technology Preview, but does lazy load the example apps:
Online Docs (dev mode)

Hint: As soon as you create your own apps, you want to use the docs app locally,
since this will include documentation views for your own apps.



9. Command-Line Interface

You can run several build programs inside your terminal.
Please take a look at the Command-Line Interface Guide.



10. Ready to get started?

There are 3 different ways on how you can get the basics running locally.
Please take a look at the Getting Started Guide.

Here is an in depth tutorial on how to build your first neo.mjs app:
https://itnext.io/define-a-web-4-0-app-to-be-multi-threaded-9c495c0d0ef9?source=friends_link&sk=4d143ace05f0e9bbe82babd9433cc822

11. Story & Vision

Although neo.mjs is ready to craft beautiful & blazing fast UIs,
the current state is just a fraction of a bigger picture.

Take a look at the Project Story and Vision.



12. neo.mjs is in need for more contributors!

Another way to fasten up the neo.mjs development speed is to actively jump in.
As the shiny "PRs welcome" badge suggests: open source is intended to be improved by anyone who is up for the challenge.

You can also write a guide in case you learned something new while using neo.mjs or just help to get more eyes on this project.

Either way, here are more infos: Contributing



13. neo.mjs is in need for sponsors!

neo.mjs is an MIT-licensed open source project with an ongoing development.
So far the development was made possible with burning my (tobiu's) personal savings.

This is obviously not sustainable. To enable me keep pushing like this, please support it.
The benefit of doing so is getting results delivered faster.

Sponsor tobiu

More infos: Sponsors & Backers



Logo contributed by Torsten Dinkheller.



Build with ❤️ in Germany.



Copyright (c) 2015 - today, Tobias Uhlig & Rich Waters

More Repositories

1

covid-dashboard

COVID19 Dashboard
JavaScript
33
star
2

create-app

Create a neo.mjs workspace & app with the 1-liner npx neo-app
JavaScript
19
star
3

multiwindowcolors

JavaScript
7
star
4

shared-offscreen

test case to move an existing canvas node into a new browser window
JavaScript
7
star
5

covid19

COVID19 Gallery
JavaScript
6
star
6

cross-browser-state

Contains a standalone version of the examples/model/multiWindow app(s)
JavaScript
4
star
7

covid-helix

3d visualisation of the current COVID 19 outbreak
JavaScript
4
star
8

pages

Online examples for the neo.mjs framework
HTML
4
star
9

workspace

Default output for npx neo-app
JavaScript
3
star
10

offscreen-canvas

Demo app using worker.Canvas
JavaScript
3
star
11

admin-workspace

JavaScript
2
star
12

webcomponents-demo

Demo of using Google MWC wrapped into neo components
JavaScript
2
star
13

tutorial-covid-app-part-1

Contains the result of the first part of the tutorial
JavaScript
2
star
14

micro-frontends-demo

Scaling your micro-frontends off the main thread
JavaScript
2
star
15

workshops

JavaScript
2
star
16

tutorial-covid-app-part-2

How to create a webworkers driven multithreading App — Part 2
JavaScript
2
star
17

theming-demo

Example app to show how to use workspace based theming
JavaScript
1
star
18

pages2

new version
JavaScript
1
star
19

tutorial-shared-covid-app-part-1

Contains the result of Part 1 of this tutorial
JavaScript
1
star
20

shared-covid-dashboard

SharedWorkers driven multi Browser Window Covid App based on neo.mjs.
JavaScript
1
star
21

websocket

Testing data.connection.WebSocket with dummy BEs
JavaScript
1
star
22

cypress-ct-neo.mjs

Integrating with Cypress Component Testing
JavaScript
1
star
23

learning-section

JavaScript
1
star