Ich möchte spezifische Komponenten meines Frontends mit Purescript's Halogen schreiben.wie man die purescript-halogen applikation komponiert
Zum Beispiel möchte ich ein Registrierungsformular mit Halogen erstellen. Es wäre so etwas wie folgt aussehen:
module RegistrationForm where
import Prelude
...
-- | The state of the application
newtype State = State { email :: String, password :: String }
derive instance genericState :: Generic State
instance showState :: Show State where show = gShow
instance eqState :: Eq State where eq = gEq
initialState :: State
initialState = State { email: "", password: "" }
-- | Inputs to the state machine
data Input a = FormSubmit a
| UpdateEmail String a
| UpdatePassword String a
| NoAction a
type AppEffects eff = HalogenEffects (ajax :: AJAX, console :: CONSOLE | eff)
ui :: forall eff . Component State Input (Aff (AppEffects eff))
ui = component render eval
where
render :: Render State Input
render (State state) = H.div_
[ H.h1_ [ H.text "Register" ]
, ...
]
eval :: Eval Input State Input (Aff (AppEffects eff))
eval (NoAction next) = pure next
eval (FormSubmit next) = do
...
eval (UpdateEmail email next) = do
...
eval (UpdatePassword password next) = do
...
runRegistrationForm :: Eff (AppEffects()) Unit
runRegistrationForm = runAff throwException (const (pure unit)) $ do
{ node: node, driver: driver } <- runUI ui initialState
appendTo ".registration" node
Und ich habe ein LoginForm
Modul, das einen Benutzer in die Anwendung Griffe anzumelden.
Ich frage mich , wie man meinen Quellcode organisiert, meinen Quellcode aufbaut und meinen Purescript Code von Javascript anruft?
Derzeit mein Quellcode wie folgt gegliedert:
$ cd my-application/
$ tree
.
├── bower.json
├── README.md
├── site/
│ └── index.html
├── src/
│ ├── LoginForm.purs
│ └── RegistrationForm.purs
└── test/
└── Test.purs
Da ich aber keine Main.purs
haben, kann ich nicht mit einer der folgenden meine Quellcode zu bauen:
$ pulp build --to site/app.js
$ pulp browserify --to site/app.js
$ pulp server
Es wäre schön, die Lage sein, meinen PURESCRIPT Code in logische Javascript-Dateien zu erstellen. Zum Beispiel könnte src/LoginForm.purs
als site/loginForm.js
gebaut werden, und src/RegistrationForm.purs
könnte als site/registrationForm.js
gebaut werden.
Dann könnte ich und registrationForm.js
in meine tatsächlichen HTML-Seiten wie erforderlich sein.
Das Problem mit dieser Lösung besteht darin, dass Sie "Pulpe" zweimal ausführen müssen. Ich brauche ein zusätzliches 'gulpfile' oder' Makefile' um alle verschiedenen Aufrufe von 'pulp' anzugeben. Ich könnte auch einfach 'Schluck' verwenden. – illabout
Der normale Ansatz hier ist es in "Skripts" in package.json zu setzen. Diese Lösung hat den klaren Vorteil, zwei Zeilen anstelle von ~ 40 zu sein. – hdgarrood
Ich bin nicht vertraut mit dem Javascript-Ökosystem. Könnten Sie Ihre Antwort bearbeiten und ein Beispiel 'package.json' hinzufügen, das zeigt, wie es aussehen würde? Oder fügen Sie einfach einen Link zu einer Seite hinzu, die ihn beschreibt? – illabout