Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/LightTable/fetch
A ClojureScript library for Client/Server interaction ⛺
https://github.com/LightTable/fetch
Last synced: about 2 months ago
JSON representation
A ClojureScript library for Client/Server interaction ⛺
- Host: GitHub
- URL: https://github.com/LightTable/fetch
- Owner: LightTable
- License: mit
- Archived: true
- Created: 2012-02-04T21:21:32.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2020-10-25T07:46:03.000Z (about 4 years ago)
- Last Synced: 2024-08-04T00:05:13.029Z (5 months ago)
- Language: Clojure
- Homepage:
- Size: 22.5 KB
- Stars: 207
- Watchers: 17
- Forks: 30
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-clojurescript - Fetch
README
# fetch
A ClojureScript library that makes client/server interaction painless.
## Usage
### Remotes
Remotes let you make calls to a noir server without having to think about XHR. On the client-side you simply have code that looks like this:
```clojure
(ns playground.client.test
(:require [fetch.remotes :as remotes])
(:require-macros [fetch.macros :as fm]))(fm/remote (adder 2 5 6) [result]
(js/alert result))(fm/remote (get-user 2) [{:keys [username age]}]
(js/alert (str "Name: " username ", Age: " age)));; for a much nicer experience, use letrem
(fm/letrem [a (adder 3 4)
b (adder 5 6)]
(js/alert (str "a: " a " b: " b)))
```Note that the results we get are real Clojure datastructures and so we use them just as we would in normal Clojure code. No JSON here.
The noir side of things is just as simple. All you do is declare a remote using defremote.
```clojure
(use 'noir.fetch.remotes)(defremote adder [& nums]
(apply + nums))(defremote get-user [id]
{:username "Chris"
:age 24})(server/start 8080)
```## License
Copyright (c) 2014 Kodowa, Inc. & Light Table contributors
Distributed under the MIT License. See LICENSE.md