Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shadaj/slinky
Write Scala.js React apps just like you would in ES6
https://github.com/shadaj/slinky
frontend react scala scalajs slinky
Last synced: 3 days ago
JSON representation
Write Scala.js React apps just like you would in ES6
- Host: GitHub
- URL: https://github.com/shadaj/slinky
- Owner: shadaj
- License: mit
- Created: 2016-11-09T18:58:24.000Z (about 8 years ago)
- Default Branch: main
- Last Pushed: 2024-11-06T19:55:05.000Z (about 2 months ago)
- Last Synced: 2024-12-13T06:00:34.817Z (10 days ago)
- Topics: frontend, react, scala, scalajs, slinky
- Language: Scala
- Homepage: https://slinky.dev
- Size: 1.3 MB
- Stars: 656
- Watchers: 23
- Forks: 57
- Open Issues: 68
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-list - slinky
README
Write Scala.js React apps just like you would in ES6
# Get started at [slinky.dev](https://slinky.dev)
## What is Slinky?
Slinky is a framework for writing React apps in Scala with an experience just like using ES6.Slinky lets you:
+ Write React components in Scala with an API that mirrors vanilla React
+ Implement interfaces to other React libraries with automatic conversions between Scala and JS types
+ Write apps for React Native, React 360, and Electron, including the ability to share code with web apps
+ Develop apps iteratively with included hot-reloading support## Contributing
Slinky is split up into several submodules:
+ `core` contains the React.js facades and APIs for creating components and interfaces to external components
+ `web` contains bindings to React DOM and definitions for the HTML/SVG tag API
+ `reactrouter` contains bindings to React Router
+ `history` contains a facade for the HTML5 history API
+ `native` contains bindings to React Native and external component definitions for native UI elements
+ `vr` contains bindings to React 360 and external component definitions for VR UI elements
+ `readWrite` contains the `Reader` and `Writer` typeclasses used to persist state for hot reloading
+ `hot` contains the entrypoint for enabling hot-reloading
+ `scalajsReactInterop` implements automatic conversions between Slinky and Scala.js React types
+ `testRenderer` contains bindings to `react-test-renderer` for unit testing components
+ `coreIntellijSupport` contains IntelliJ-specific support for the `@react` macro annotation
+ `tests` contains the unit tests for the above modules (except native and vr which have local tests)
+ `docs` and `docsMacros` contains the documentation site, which is a Slinky app itselfTo run the main unit tests, first install the dependencies by running `npm install` inside the `tests` folder, then from the base folder run `sbt tests/test`. Similarly for React Native tests, run `npm install` inside the `native` folder, then from the base folder run `sbt native/test`.
Note to IntelliJ IDEA users. When you try to import Slinky SBT definition in IDEA and encounter an exception like
`java.nio.file.NoSuchFileException: /Users/someuser/.slinkyPluginIC/sdk/192.6817.14/plugins`, you should
try to download required IntelliJ files for plugin subproject manually before importing:```shell
sbt coreIntellijSupport/updateIntellij
```And then import the project again.