49

Glue: Vue.js wrapper for ClojureScript

 5 years ago
source link: https://www.tuicool.com/articles/hit/6bYrayU
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

glue

Trying to glue cljs and vue together.

Overview

So far main idea is just to configure components via clojurescript.

Demo

Check out the glue cljs demo app for the usage example.

Example

<template id="sample-template">
        <div>
            <span>{{ label }} | </span>
            <span>{{ counterLabel }}</span>
            <button @click="clickMe">Click</button>
            <hr/>
        </div>
    </template>

    <div id="app">
        <sample-template label="sample button"></sample-template>
    </div>
(ns app.core
  (:refer-clojure :exclude [atom])
  (:require [glue.api :as g :refer [atom]]))

(g/defcomponent
  :samle-component
  {:template "#sample-template"
   :props [:label]
   :state (fn [] {:counter (atom 0)})
   :computed {:counter-label (fn [this state]
                               (str @(:counter state) " clicks"))}
   :methods {:click-me (fn [this state _]
                         (println "Click happened on" (g/prop this :label))
                         (swap! (:counter state) inc))}})

(g/vue {:el "#app"})

License

Copyright © 2017 Max Gonzih gonzih @ gmail.com

Distributed under the MIT license.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK