Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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: 7 days ago
JSON representation

Write Scala.js React apps just like you would in ES6

Awesome Lists containing this project

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 itself

To 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.