All Projects → symbiotejs → symbiote.js

symbiotejs / symbiote.js

Licence: MIT license
Simple, light and very powerful library to create embedded components for any purpose, with a data flow management included.

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to symbiote.js

lit-components
Moved to https://github.com/vaadin/component-mixins
Stars: ✭ 59 (+47.5%)
Mutual labels:  webcomponents, web-components, custom-elements
web-components
A set of high-quality standards based web components for enterprise web applications. Part of Vaadin 20+
Stars: ✭ 322 (+705%)
Mutual labels:  webcomponents, web-components, custom-elements
toggle-icon
toggle-icon is a custom element created with Polymer. It provides an extremely powerful and customizable switch that looks like a paper-icon-button.
Stars: ✭ 21 (-47.5%)
Mutual labels:  webcomponents, web-components, custom-elements
cwco
Powerful and Fast Web Component Library with a Simple API
Stars: ✭ 27 (-32.5%)
Mutual labels:  webcomponents, web-components, custom-elements
Vanilla Hamburger
Animated hamburger menu icons for modern web apps (1.8 KB) 🍔
Stars: ✭ 110 (+175%)
Mutual labels:  webcomponents, web-components, custom-elements
lego
🚀 Web-components made lightweight & Future-Proof.
Stars: ✭ 69 (+72.5%)
Mutual labels:  webcomponents, web-components, custom-elements
custom-elements-manifest
Custom Elements Manifest is a file format that describes custom elements in your project.
Stars: ✭ 81 (+102.5%)
Mutual labels:  webcomponents, web-components, custom-elements
modulor-html
Missing template engine for Web Components
Stars: ✭ 36 (-10%)
Mutual labels:  webcomponents, web-components, custom-elements
Aybolit
Lightweight web components library built with LitElement.
Stars: ✭ 90 (+125%)
Mutual labels:  webcomponents, web-components, custom-elements
Vanilla Colorful
A tiny color picker custom element for modern web apps (2.7 KB) 🎨
Stars: ✭ 467 (+1067.5%)
Mutual labels:  webcomponents, web-components, custom-elements
anywhere-webcomponents
A UI work in progress based on custom elements (web components) for use in anywhere.
Stars: ✭ 17 (-57.5%)
Mutual labels:  webcomponents, web-components, custom-elements
Omi
Front End Cross-Frameworks Framework - 前端跨框架跨平台框架
Stars: ✭ 12,153 (+30282.5%)
Mutual labels:  webcomponents, web-components, custom-elements
Nutmeg
Build, test, and publish vanilla Web Components with a little spice
Stars: ✭ 111 (+177.5%)
Mutual labels:  webcomponents, web-components, custom-elements
smart-webcomponents-community
Material & Bootstrap Web Components built with Smart
Stars: ✭ 30 (-25%)
Mutual labels:  webcomponents, web-components, custom-elements
vaadin-select
Customizable Web Component similar to a native browser select. Part of the Vaadin components.
Stars: ✭ 18 (-55%)
Mutual labels:  webcomponents, web-components
webcomponents.dev
Web Components IDE
Stars: ✭ 51 (+27.5%)
Mutual labels:  webcomponents, web-components
notification-service-js
🚦Notification Service based on Custom Elements
Stars: ✭ 16 (-60%)
Mutual labels:  webcomponents, custom-elements
MoleculeJS
A library for creating fast and reactive Custom Elements
Stars: ✭ 39 (-2.5%)
Mutual labels:  webcomponents, custom-elements
pattern-library
AXA CH UI component library. Please share, comment, create issues and work with us!
Stars: ✭ 103 (+157.5%)
Mutual labels:  webcomponents, custom-elements
aurum
Fast and concise declarative DOM rendering library for javascript
Stars: ✭ 17 (-57.5%)
Mutual labels:  webcomponents, web-components

npm version

Symbiote.js

Simple, light and very powerful library to create embedded components for any purpose, with a data flow management included.

⚖️ What for?

Symbiote.js - is for symbiosis. That means, you can create complex meta-applications, above another applications, built with any modern stack.

The major purpose of Symbiote.js - is to move application inner interactions from the locked space of certain frameworks implementations to the common open space based on native platform features and standards, to be closer to the HTML, CSS and simple DOM APIs, without a lack of DX.

Best for:

  • Complex widgets
  • Micro frontends
  • Reusable component libraries
  • Fast and reliable web applications
  • Framework agnostic solutions
  • Meta-applications
  • JamStack solutions

Symbiote.js is designed to give the level of freedom, you got with Vanilla JS and to give the convenience level, as you got from the modern frameworks at the same time.

🔥 Core benefits

  • Minimal but rich.
  • No extra dependencies.
  • Ultralight (~4kb br/gzip for the all BaseComponent features).
  • Blazing fast.
  • Memory friendly (no immutables).
  • CSP friendly - good for enterprise usage.
  • Highly extensible - you can add new custom features with ease.
  • Easy to learn - nothing completely new for experienced developers, nothing complicated for newbies.
  • Works in all modern browsers. As is.
  • Easy to test.
  • TypeScript friendly - use it in TS or JS projects from the common source code.
  • Integration friendly: works with any modern development stack.
  • Lifecycle control: no need to initiate something from outside.
  • ESM friendly - native JavaScript modules are best!
  • Developer Experience on the mind: compact & convenient APIs, habitual syntax.
  • Open source (MIT license).

💎 Tech concept keypoints

  • Native modern APIs instead of expensive libraries.
  • Shadow DOM is optional. Use it when you need it only.
  • Total styling freedom: from the old classics to the cutting edge platform abilities.
  • Native HTML instead of custom template syntax processing.
  • Templates are out of the component or render function context. It’s just a simple JavaScript template literals. So you can keep or process them wherever you want.
  • No logical operators in templates. Logic and presentation are strictly separated.
  • Fast synchronous UI updates, no unexpected redraws.
  • Full data context access from the document structure.
  • Full data context availability for template bindings.
  • DOM API friendly approach for the most performant solutions.
  • Convenient object model access instead of opaque abstractions.

🍏 Quick start

The easiest way to try Symbiote.js is to create a simple html file in your text editor and connect the Symbiote base class from web:

<script type="module">
  import { BaseComponent } from 'https://symbiotejs.github.io/symbiote.js/core/BaseComponent.js';

  class MyComponent extends BaseComponent {
    init$ = {
      count: 0,
      increment: () => {
        this.$.count++;
      },
    }
  }

  MyComponent.template = /*html*/ `
    <h2>{{count}}</h2>
    <button set="onclick: increment">Click me!</button>
  `;

  MyComponent.reg('my-component');
</script>

<my-component></my-component>

This code can work directly in any modern browser, so you don't need to install anything to try it!

🧜‍♀️ Dive deeper

Check the project documentation for details:

🤖 Live examples

Browser: https://symbiotejs.github.io/examples/

Use devtools to discover details

GitHub: https://github.com/symbiotejs/examples

Browser support

Symbiote.js is supported and tested in all major modern desktop and mobile browsers:

  • Chrome
  • Firefox
  • Safari
  • Edge
  • Opera
  • etc.

Internet Explorer - is outdated and not supported anymore:

https://uploadcare.com/blog/uploadcare-stops-internet-explorer-support/

(But it's possible with polyfills: https://github.com/webcomponents/polyfills/tree/master/packages/webcomponentsjs)

💰 General sponsor

Big thanks to 🟡 Uploadcare for supporting this project!

https://uploadcare.com/

🌎 Useful external links

If you have questions or proposals - welcome to Symbiote Discussions! ❤️

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].