Skip to content
Fast & simple framework for building web applications
PureScript JavaScript HTML
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
examples
src
test
.gitignore
.travis.yml
LICENSE
README.md
bower.json
package-lock.json
package.json

README.md

Flame Build Status

Flame is a fast & simple framework for building web applications in PureScript inspired by purescript-hedwig and Elm

Documentation

See the project page or pursuit

Examples

See the examples folder

Quick start

Install:

npm install snabbdom snabbdom-to-html # for server side rendering
bower install purescript-flame

Example counter app:

module App.Main where

import Prelude

import Effect (Effect)
import Flame (Html, QuerySelector(..))
-- Update strategy for side effects free functions; see docs for other strategies
import Flame.Application.NoEffects as FAN
import Flame.HTML.Element as HE
import Flame.HTML.Attribute as HA

-- | The model represents the state of the app
type Model = Int

-- | This datatype is used to signal events to `update`
data Message = Increment | Decrement

-- | Initial state of the app
init :: Model
init = 0

-- | `update` is called to handle events
update :: Model -> Message -> Model
update model = case _ of
        Increment -> model + 1
        Decrement -> model - 1

-- | `view` is called whenever the model is updated
view :: Model -> Html Message
view model = HE.main "main" [
        HE.button [HA.onClick Decrement] "-",
        HE.text $ show model,
        HE.button [HA.onClick Increment] "+"
]

-- | Mount the application on the given selector
main :: Effect Unit
main = FAN.mount_ (QuerySelector "main") {
        init,
        update,
        view
}

License

Flame is MIT licensed.

You can’t perform that action at this time.