All Projects → skruv → skruv

skruv / skruv

Licence: MIT license
No-dependency, no-build, small JS framework.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to skruv

Custom Elements Ts
Create native custom elements using Typescript
Stars: ✭ 52 (-54.78%)
Mutual labels:  shadow-dom
Hybrids
Extraordinary JavaScript framework with unique declarative and functional architecture
Stars: ✭ 2,529 (+2099.13%)
Mutual labels:  shadow-dom
lwc-test
LWC plugins and utilities for testing
Stars: ✭ 39 (-66.09%)
Mutual labels:  shadow-dom
Css Vars Ponyfill
Client-side support for CSS custom properties (aka "CSS variables") in legacy and modern browsers
Stars: ✭ 1,166 (+913.91%)
Mutual labels:  shadow-dom
Omi
Front End Cross-Frameworks Framework - 前端跨框架跨平台框架
Stars: ✭ 12,153 (+10467.83%)
Mutual labels:  shadow-dom
Ioing
Implement the solutions of performance improvement and componentization for your SPA (single page application) products with this Progressive Web App Development Engine.
Stars: ✭ 224 (+94.78%)
Mutual labels:  shadow-dom
Reactshadow
🔰 Utilise Shadow DOM in React with all the benefits of style encapsulation.
Stars: ✭ 948 (+724.35%)
Mutual labels:  shadow-dom
grid-container
A grid for the future, CSS Grid Layout + Web Components (Custom Elements v1 + Shadow DOM v1)
Stars: ✭ 51 (-55.65%)
Mutual labels:  shadow-dom
Shadow Dom In Depth
Everything you need to know about Shadow DOM
Stars: ✭ 191 (+66.09%)
Mutual labels:  shadow-dom
helium-animated-pages
A light spiritual succesor to neon-animated-pages using only css animations
Stars: ✭ 17 (-85.22%)
Mutual labels:  shadow-dom
Nutmeg
Build, test, and publish vanilla Web Components with a little spice
Stars: ✭ 111 (-3.48%)
Mutual labels:  shadow-dom
Omil
📝Webpack loader for Omi.js React.js and Rax.js components 基于 Omi.js,React.js 和 Rax.js 单文件组件的webpack模块加载器
Stars: ✭ 140 (+21.74%)
Mutual labels:  shadow-dom
Eplayer
🔮 A web-component html5 video player facing future
Stars: ✭ 253 (+120%)
Mutual labels:  shadow-dom
Custom Element
A base class for Web Components (Custom Elements) which provides simple data binding.
Stars: ✭ 60 (-47.83%)
Mutual labels:  shadow-dom
Shadow-DOM-inject-styles
🎉 A helper function to easily modify Shadow DOM CSS.
Stars: ✭ 47 (-59.13%)
Mutual labels:  shadow-dom
Cypress Shadow Dom
Extend Cypress commands with shadow DOM support
Stars: ✭ 48 (-58.26%)
Mutual labels:  shadow-dom
React Web Component
Create Web Components with React
Stars: ✭ 221 (+92.17%)
Mutual labels:  shadow-dom
crab
JavaScript library for building user interfaces with Custom Elements, Shadow DOM and React like API
Stars: ✭ 22 (-80.87%)
Mutual labels:  shadow-dom
material-webcomponents
Material Design implemented in Web Components (Custom Elements v1)
Stars: ✭ 110 (-4.35%)
Mutual labels:  shadow-dom
get-css-data
A micro-library for collecting stylesheet data from link and style nodes
Stars: ✭ 29 (-74.78%)
Mutual labels:  shadow-dom

skruv

skruv

No-dependency, no-build, small JS framework.

Features:

  • No buildtime or runtime dependencies, no parsers
  • Pretty small:
    • ~400 LOC vDOM
    • ~100 LOC State management
    • ~250 LOC HTML/SVG helpers
  • Useable without bundling/compilation/transpilation
  • Fast enough for most normal usecases: benchmark
  • Supports async components like import() and async generators
  • CSS scoping via shadow DOM
  • Hopefully grokable/understandable code

Why another JS framework?

I wanted a framework that:

  • had no build-time or run-time dependencies (for both the framework and apps built in it)
  • worked with async components (like dynamic imports and async generators)
  • has easy state management (in skruv the state imitates a normal object)
  • uses plain JS for building up the DOM tree (normal functions, no JSX or template tags)
  • allows for or implements css scoping
  • was small enough to be hackable and understandable

No framework that I have found satisfies more than two or three of those, so I built my own. I think skruv mostly satisfies the above points.

Goals:

  • No build steps, no parsing templates and no build or runtime dependencies: the way you write code should be the way it runs
  • It should be small enough that minification is a optional optimization step
  • Size matters, but only to a certain point: we're not playing golf here
  • Try to be easily forkable: Be small enough to maintain and simple enough to evolve/change
  • Parts (like state, html, vDOM) should be possible to exchange for alternative implementations: no internal references between core components should be allowed
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].