3.2.5 • Published 3 years ago

springtype v3.2.5

Weekly downloads
12
License
MIT
Repository
github
Last release
3 years ago

SpringType combines the best parts of the React API with the simplicity of jQuery:

import { tsx, render, Ref } from "springtype";
import { $ } from "st-query";

interface HelloMessageProps {
  text: string;
}

// a functional component, just like in React
// but it only renders one time
const HelloMessage = ({ text }: HelloMessageProps) => {

  // reference is stored when the element is created
  const messageRef: Ref = {};

  // because there is no magic re-rendering,
  // we can safely use setInterval() and can also
  // safely wave goodbye to fancy hooks like useCallback() or useEffect()!
  setInterval(() => {

    // in case we want to change the rendering,
    // we just do this programmatically, where it's needed
    $(messageRef.current).html(<p>SpringType </p>);

  }, 1000 /* 1 sec */);

  return (
    <div ref={messageRef}>
      Hello, {text}!
    </div>
  )
}

// SpringType renders to document.body by default
// but you can just provide a second argument to change this
render(<HelloMessage text="World" />);

For a more complex demo, see: TODO list demo

  • ✅ React-like VDOM supporting native DOM access via ref
  • ✅ HTML/SVG-compatible TSX - supports standard class
  • ✅ ~1k bundle size: 1008 byte (best, brotli) - 1319 byte (worst, umd, gz)
  • ✅ Zero dependencies
  • ✅ Purely functional
  • ✅ First class TypeScript support
  • ✅ 100% Unit Test coverage
  • ✅ TestCafé smoke tests

Less is more! Complexity is the devil! SpringType does render the TSX structure only one-time.

SpringType does NOT update the DOM. This takes away tons of complexity and performance headaches.

After initial rendering, you can basically go with pure TypeScript/DOM APIs to mutate the DOM wherever and whenever it is actually needed - not when the framework thinks it's needed.

However there is...

  • st-query - a jQuery-like nano library for runtime DOM manipulation (+~500 byte)
  • st-route - an Expess-like nano library for client-side DOM routing (+~400 byte)
  • st-bus - a socket.io-like nano library for application/component eventing (+~150 byte)
  • st-state - a map-like nano library for client-side state management and persistency (+~200 byte)
  • st-i18n - a i18next-like nano library for translation and string interpolation (+~500 byte)

...to make your life easier :-)

Thank you so much for supporting us financially! 🙏🏻😎🥳👍

SpringType is brought to you by:

Please help out to make this project even better and see your name added to the list of our CONTRIBUTORS.md :tada:

3.2.5

3 years ago

3.2.4

3 years ago

3.2.3

3 years ago

3.2.2

3 years ago

3.2.1

3 years ago

3.2.0

3 years ago

3.1.2

3 years ago

3.1.1

3 years ago

3.1.0

3 years ago

3.0.4

3 years ago

3.0.3

3 years ago

3.0.2

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

2.0.0-beta.84

4 years ago

2.0.0-beta.85

4 years ago

2.0.0-beta.83

4 years ago

2.0.0-beta.82

4 years ago

2.0.0-beta.81

4 years ago

2.0.0-beta.80

4 years ago

2.0.0-beta.79

4 years ago

2.0.0-beta.77

4 years ago

2.0.0-beta.76

4 years ago

2.0.0-beta.78

4 years ago

2.0.0-beta.75

4 years ago

2.0.0-beta.73

4 years ago

2.0.0-beta.74

4 years ago

2.0.0-beta.72

4 years ago

2.0.0-beta.71

4 years ago

2.0.0-beta.70.1

4 years ago

2.0.0-beta.70

4 years ago

2.0.0-beta.69

4 years ago

2.0.0-beta.68

4 years ago

2.0.0-beta.66

4 years ago

2.0.0-beta.65

4 years ago

2.0.0-beta.64

4 years ago

2.0.0-beta.62

4 years ago

2.0.0-beta.61

4 years ago

2.0.0-beta.60

4 years ago

2.0.0-beta.55

4 years ago

2.0.0-beta.59

4 years ago

2.0.0-beta.58

4 years ago

2.0.0-beta.57

4 years ago

2.0.0-beta.56

4 years ago

2.0.0-beta.51

4 years ago

2.0.0-beta.50

4 years ago

2.0.0-beta.54

4 years ago

2.0.0-beta.53

4 years ago

2.0.0-beta.52

4 years ago

2.0.0-beta.49

4 years ago

2.0.0-beta.48

4 years ago

2.0.0-beta.47

4 years ago

2.0.0-beta.46

4 years ago

2.0.0-beta.45

4 years ago

2.0.0-beta.44

4 years ago

2.0.0-beta.42

4 years ago

2.0.0-beta.40

4 years ago

2.0.0-beta.41

4 years ago

2.0.0-beta.39

4 years ago

2.0.0-beta.38

4 years ago

2.0.0-beta.37

4 years ago

2.0.0-beta.36

4 years ago

2.0.0-beta.35

4 years ago

2.0.0-beta.34

4 years ago

2.0.0-beta.33

4 years ago

2.0.0-beta.32

4 years ago

2.0.0-beta.31

4 years ago

2.0.0-beta.30

4 years ago

2.0.0-beta.29

4 years ago

2.0.0-beta.28

4 years ago

2.0.0-beta.27

4 years ago

2.0.0-beta.26

4 years ago

2.0.0-beta.25

4 years ago

2.0.0-beta.24

4 years ago

2.0.0-beta.23

4 years ago

2.0.0-beta.22

4 years ago

2.0.0-beta.21

4 years ago

2.0.0-beta.20

4 years ago

2.0.0-beta.15

4 years ago

2.0.0-beta.19

4 years ago

2.0.0-beta.18

4 years ago

2.0.0-beta.17

4 years ago

2.0.0-beta.16

4 years ago

2.0.0-beta.14

4 years ago

2.0.0-beta.13

4 years ago

2.0.0-beta.12

4 years ago

2.0.0-beta.11

4 years ago

2.0.0-beta.10

4 years ago

2.0.0-beta.9

4 years ago

2.0.0-beta.8

4 years ago

2.0.0-beta.7

4 years ago

2.0.0-beta.5

4 years ago

2.0.0-beta.4

4 years ago

2.0.0-beta.3

4 years ago

2.0.0-beta.2

4 years ago

2.0.0-beta.1

4 years ago

2.0.0-alpha.1.24

4 years ago

2.0.0-alpha.1.23

4 years ago

2.0.0-alpha.1.22

4 years ago

2.0.0-alpha.1.21

4 years ago

2.0.0-alpha.1.20

4 years ago

2.0.0-alpha.1.19

4 years ago

2.0.0-alpha.1.18

4 years ago

2.0.0-alpha.1.17

5 years ago

2.0.0-alpha.1.16

5 years ago

2.0.0-alpha.1.15

5 years ago

2.0.0-alpha.1.14

5 years ago

2.0.0-alpha.1.13

5 years ago

2.0.0-alpha.1.12

5 years ago

2.0.0-alpha.1.11

5 years ago

2.0.0-alpha.1.10

5 years ago

2.0.0-alpha.1.9

5 years ago

2.0.0-alpha.1.8

5 years ago

2.0.0-alpha.1.7

5 years ago

2.0.0-alpha.1.6

5 years ago

2.0.0-alpha.1.5

5 years ago

2.0.0-alpha.1.4

5 years ago

2.0.0-alpha.1.3

5 years ago

2.0.0-alpha.1.2

5 years ago

2.0.0-alpha.1.1

5 years ago

1.0.0-alpha.1.51

5 years ago

1.0.0-alpha.1.49

5 years ago

1.0.0-alpha.1.48

5 years ago

1.0.0-alpha.1.47

5 years ago

1.0.0-alpha.1.46

5 years ago

1.0.0-alpha.1.45

5 years ago

1.0.0-alpha.1.44

5 years ago

1.0.0-alpha.1.43

5 years ago

1.0.0-alpha.1.42

5 years ago

1.0.0-alpha.1.41

5 years ago

1.0.0-alpha.1.40

5 years ago

1.0.0-alpha.1.39

5 years ago

1.0.0-alpha.1.38

5 years ago

1.0.0-alpha.1.37

5 years ago

1.0.0-alpha.1.36

5 years ago

1.0.0-alpha.1.35

5 years ago

1.0.0-alpha.1.34

5 years ago

1.0.0-alpha.1.33

5 years ago

1.0.0-alpha.1.31

5 years ago

1.0.0-alpha.1.30

5 years ago

1.0.0-alpha.1.28

5 years ago

1.0.0-alpha.1.27

5 years ago

1.0.0-alpha.1.26

5 years ago

1.0.0-alpha.1.25

5 years ago

1.0.0-alpha.1.24

5 years ago

1.0.0-alpha.1.23

5 years ago

1.0.0-alpha.1.22

5 years ago

1.0.0-alpha.1.21

5 years ago

1.0.0-alpha.1.20

5 years ago

1.0.0-alpha.1.19

5 years ago

1.0.0-alpha.1.16

5 years ago

1.0.0-alpha.1.15

5 years ago

1.0.0-alpha.1.14

5 years ago

1.0.0-alpha.1.13

5 years ago