3.2.5 • Published 4 years ago

springtype v3.2.5

Weekly downloads
12
License
MIT
Repository
github
Last release
4 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

4 years ago

3.2.4

4 years ago

3.2.3

4 years ago

3.2.2

4 years ago

3.2.1

4 years ago

3.2.0

4 years ago

3.1.2

4 years ago

3.1.1

4 years ago

3.1.0

4 years ago

3.0.4

4 years ago

3.0.3

4 years ago

3.0.2

4 years ago

3.0.1

4 years ago

3.0.0

4 years ago

2.0.0-beta.84

5 years ago

2.0.0-beta.85

5 years ago

2.0.0-beta.83

5 years ago

2.0.0-beta.82

5 years ago

2.0.0-beta.81

5 years ago

2.0.0-beta.80

5 years ago

2.0.0-beta.79

5 years ago

2.0.0-beta.77

5 years ago

2.0.0-beta.76

5 years ago

2.0.0-beta.78

5 years ago

2.0.0-beta.75

5 years ago

2.0.0-beta.73

5 years ago

2.0.0-beta.74

5 years ago

2.0.0-beta.72

5 years ago

2.0.0-beta.71

5 years ago

2.0.0-beta.70.1

5 years ago

2.0.0-beta.70

5 years ago

2.0.0-beta.69

5 years ago

2.0.0-beta.68

5 years ago

2.0.0-beta.66

5 years ago

2.0.0-beta.65

5 years ago

2.0.0-beta.64

5 years ago

2.0.0-beta.62

5 years ago

2.0.0-beta.61

5 years ago

2.0.0-beta.60

5 years ago

2.0.0-beta.55

5 years ago

2.0.0-beta.59

5 years ago

2.0.0-beta.58

5 years ago

2.0.0-beta.57

5 years ago

2.0.0-beta.56

5 years ago

2.0.0-beta.51

5 years ago

2.0.0-beta.50

5 years ago

2.0.0-beta.54

5 years ago

2.0.0-beta.53

5 years ago

2.0.0-beta.52

5 years ago

2.0.0-beta.49

5 years ago

2.0.0-beta.48

5 years ago

2.0.0-beta.47

5 years ago

2.0.0-beta.46

5 years ago

2.0.0-beta.45

5 years ago

2.0.0-beta.44

5 years ago

2.0.0-beta.42

5 years ago

2.0.0-beta.40

5 years ago

2.0.0-beta.41

5 years ago

2.0.0-beta.39

5 years ago

2.0.0-beta.38

5 years ago

2.0.0-beta.37

5 years ago

2.0.0-beta.36

5 years ago

2.0.0-beta.35

5 years ago

2.0.0-beta.34

5 years ago

2.0.0-beta.33

5 years ago

2.0.0-beta.32

5 years ago

2.0.0-beta.31

5 years ago

2.0.0-beta.30

5 years ago

2.0.0-beta.29

5 years ago

2.0.0-beta.28

5 years ago

2.0.0-beta.27

5 years ago

2.0.0-beta.26

5 years ago

2.0.0-beta.25

5 years ago

2.0.0-beta.24

5 years ago

2.0.0-beta.23

5 years ago

2.0.0-beta.22

6 years ago

2.0.0-beta.21

6 years ago

2.0.0-beta.20

6 years ago

2.0.0-beta.15

6 years ago

2.0.0-beta.19

6 years ago

2.0.0-beta.18

6 years ago

2.0.0-beta.17

6 years ago

2.0.0-beta.16

6 years ago

2.0.0-beta.14

6 years ago

2.0.0-beta.13

6 years ago

2.0.0-beta.12

6 years ago

2.0.0-beta.11

6 years ago

2.0.0-beta.10

6 years ago

2.0.0-beta.9

6 years ago

2.0.0-beta.8

6 years ago

2.0.0-beta.7

6 years ago

2.0.0-beta.5

6 years ago

2.0.0-beta.4

6 years ago

2.0.0-beta.3

6 years ago

2.0.0-beta.2

6 years ago

2.0.0-beta.1

6 years ago

2.0.0-alpha.1.24

6 years ago

2.0.0-alpha.1.23

6 years ago

2.0.0-alpha.1.22

6 years ago

2.0.0-alpha.1.21

6 years ago

2.0.0-alpha.1.20

6 years ago

2.0.0-alpha.1.19

6 years ago

2.0.0-alpha.1.18

6 years ago

2.0.0-alpha.1.17

6 years ago

2.0.0-alpha.1.16

6 years ago

2.0.0-alpha.1.15

6 years ago

2.0.0-alpha.1.14

6 years ago

2.0.0-alpha.1.13

6 years ago

2.0.0-alpha.1.12

6 years ago

2.0.0-alpha.1.11

6 years ago

2.0.0-alpha.1.10

6 years ago

2.0.0-alpha.1.9

6 years ago

2.0.0-alpha.1.8

6 years ago

2.0.0-alpha.1.7

6 years ago

2.0.0-alpha.1.6

6 years ago

2.0.0-alpha.1.5

6 years ago

2.0.0-alpha.1.4

6 years ago

2.0.0-alpha.1.3

6 years ago

2.0.0-alpha.1.2

6 years ago

2.0.0-alpha.1.1

6 years ago

1.0.0-alpha.1.51

6 years ago

1.0.0-alpha.1.49

6 years ago

1.0.0-alpha.1.48

6 years ago

1.0.0-alpha.1.47

6 years ago

1.0.0-alpha.1.46

6 years ago

1.0.0-alpha.1.45

6 years ago

1.0.0-alpha.1.44

6 years ago

1.0.0-alpha.1.43

6 years ago

1.0.0-alpha.1.42

6 years ago

1.0.0-alpha.1.41

6 years ago

1.0.0-alpha.1.40

6 years ago

1.0.0-alpha.1.39

6 years ago

1.0.0-alpha.1.38

6 years ago

1.0.0-alpha.1.37

6 years ago

1.0.0-alpha.1.36

6 years ago

1.0.0-alpha.1.35

6 years ago

1.0.0-alpha.1.34

6 years ago

1.0.0-alpha.1.33

6 years ago

1.0.0-alpha.1.31

6 years ago

1.0.0-alpha.1.30

6 years ago

1.0.0-alpha.1.28

6 years ago

1.0.0-alpha.1.27

6 years ago

1.0.0-alpha.1.26

6 years ago

1.0.0-alpha.1.25

6 years ago

1.0.0-alpha.1.24

6 years ago

1.0.0-alpha.1.23

6 years ago

1.0.0-alpha.1.22

6 years ago

1.0.0-alpha.1.21

6 years ago

1.0.0-alpha.1.20

6 years ago

1.0.0-alpha.1.19

6 years ago

1.0.0-alpha.1.16

6 years ago

1.0.0-alpha.1.15

6 years ago

1.0.0-alpha.1.14

6 years ago

1.0.0-alpha.1.13

6 years ago