Currently in heavy development (learning project). Do not use in production.
Lucia is a tiny JavaScript library for web applications.
- Declarative: Lucia makes it painless to create interactive UIs. Design simple views for each state in your application, and Lucia will efficiently update and render just the right components when your data changes. Declarative views make your code more predictable, simpler to understand, and easier to debug.
- Reactive:
- Flexible:
Installation
Put this within your <head>
tags in html.
<script src="https://unpkg.com/lucia/dist/lucia.js"></script>
<script src="https://unpkg.com/lucia"></script>
Usage
Declarative Rendering
At the core of Lucia is a system that enables us to declaratively render data to the DOM using straightforward template syntax:
<div id="app">
<p>{{ hello }}</p>
<p>{{ hello === 'world' }}</p>
</div>
const app = new Lucia({
el: '#app',
data: {
hello: 'world',
},
});
app.data.hello = 'there';
Conditionals
It’s easy to toggle the presence of an element, too:
<div id="app">
<button l-if="show">You can't see me</button>
<button l-if="show === show">Is it equal though?</button>
</div>
const app = new Lucia({
el: '#app',
data: {
show: false,
},
});
Event Handlers
To let users interact with your app, we can use the l-on
directive to attach event listeners that invoke methods on our Lucia instances:
<div id="app">
<button l-on:click="alert(message)">{{ message }}</button>
</div>
const app = new Lucia({
el: '#app',
data: {
message: 'Hello world!',
},
});
Attribute Binding
In addition to text interpolation, we can also bind element attributes like this:
<div id="app">
<h1 l-bind:class="{ hello: show }">Classes are cool</h1>
<h1 l-bind:style="color">Styles are sassy</h1>
</div>
const app = new Lucia({
el: '#app',
data: {
show: true,
color: { color: 'purple' },
},
});