- Notifications
You must be signed in to change notification settings - Fork2
Demo to showcase server-reason-react with Melange
ml-in-barcelona/fullstack-reason-react-demo
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
WarningThis repo is in constant flux as I'm polishing the experience with
server-reason-reactand related tooling.
A demo of a fullstack reason-react app using Melange and Dream. Code is written in Reason and compiled by bothMelange and OCaml.
Demoingserver-reason-react.
The app consist of 3 folders:shared,server andclient, which encapsulates each compilation target defined by dune.
A folder that contains the code executed in the client only. It's defined in dune as amelange.emit to emit JavaScript from Reason via Melange. It uses all the ReScript goodies: Belt, Js, etc. Currently is tiny: client only renders theShared_js.App component:
switch (ReactDOM.querySelector("#root")) {|Some(el) => ReactDOM.render(<Shared_js.App />, el)| None => ()};
An executable that expose a dream app with a home route which serves an HTML page. Written inserver-reason-react and send it as a string withReactDOM.renderToString
The folder contains the library for shared code betweenclient andserver. dune generates the two librariesShared_js andShared_native withcopy_files# and the dependencies that matter for each compilation:
; shared/js/dune(library (name shared_js) (modes melange) (flags:standard -bs-jsx3) (libraries reason_react bs_css bs_css_emotion))(copy_files#"../*.re")
; shared/native/dune(library (name shared_native) (modes best); best means native and byte (libraries server-reason-react.react server-reason-react.reactDom server-reason-react.js server-reason-react.css) (preprocess (pps server-reason-react.ppx)))(copy_files#"../*.re")
Shared_js is compiled by Melange to JavaScript whileShared_native by OCaml to a native library.
The code of shared consist of an app to demostrate a few usages of server-reason-react implementations, such as server-reason-react.css or server-reason-react.js.
server-reason-react.cssis the implementation of bs-css in the server. Maintains the same API and does the same functionality as emotion.js but in the server. All Css.* methods are available and generates the hash of the classnames. It also adds a fnCss.render_style_tag()to render the resultant CSS in the page, with the intention to be called in native.server-reason-react.beltis the implementation ofBelt in pure OCaml.server-reason-react.jsis an incomplete implementation ofJs
About
Demo to showcase server-reason-react with Melange
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.
Contributors3
Uh oh!
There was an error while loading.Please reload this page.