0.0.39 • Published 8 months ago
@vanille/core v0.0.39
Features
- Web components as first class citizens
- Templating with JSX
- Reactive rendering with signals
- Pass
objects
to custom element attributes - No virtual DOM
Installation
yarn add @vanille/core
Prerequisites
vite.config.ts
Using vite
, please specify the esbuild
options:
esbuild: {
jsxFactory: 'h',
jsxFragment: 'Fragment',
}
tsconfig.json
To use decorators
, enable experimentalDecorators
:
"experimentalDecorators": true
No dependencies
All features are in-house implementations to maximize native functionality, with a few exceptions (check out below!)
Extending web components for native performance
import { View } from '@vanille/core';
export class App extends View {}
Fast templating web components with in-house JSX
export class App extends View {
render() {
return (
<div>
<span>JSX!</span>
</div>
);
}
}
Signals
export class App extends View {
render() {
const name = state('your name');
const computedName = computed(() => name.get());
return (
<div>
<span>{name}</span>
<span>{computedName}</span>
</div>
);
}
}
Simple routing
<v-route path="/">
Home
</v-route>
<v-route path="/dashboard">
Dashboard
</v-route>
<v-route path="/users/:id">
User with id
</v-route>
Pass objects in web component attributes
const user = { name: 'vanille' };
<v-app user="user"></v-app>;
export class App extends View {
render() {
return (
<p>{this.props.user.name}</p>
)
}
}
Query the DOM with refs
to update elements
export class App extends View {
setBindings() {
this.refs.name.textContent = newValue;
}
render() {
return (
<div>
<span ref="name">JSX!</span>
</div>
);
}
}
Declarative testing with JSX
import { mount } from './test-utils';
// load the component
import './test-utils/Test';
test('can render from jsx', () => {
const $shadow = mount(<v-test />) <---- JSX!
const $el = $shadow.querySelector('[data-id="test"');
expect($el).toBeTruthy();
});
0.0.37
8 months ago
0.0.38
8 months ago
0.0.39
8 months ago
0.0.36
8 months ago
0.0.35
2 years ago
0.0.34
2 years ago
0.0.33
2 years ago
0.0.32
2 years ago
0.0.31
2 years ago
0.0.29
2 years ago
0.0.28
2 years ago
0.0.27
2 years ago
0.0.26
2 years ago
0.0.25
2 years ago
0.0.24
2 years ago
0.0.23
2 years ago
0.0.22
2 years ago
0.0.21
2 years ago
0.0.20
2 years ago
0.0.19
2 years ago
0.0.18
2 years ago
0.0.17
2 years ago
0.0.16
2 years ago
0.0.15
2 years ago
0.0.14
2 years ago
0.0.13
2 years ago
0.0.12
2 years ago
0.0.11
2 years ago
0.0.10
2 years ago
0.0.9
2 years ago
0.0.8
2 years ago
0.0.7
2 years ago
0.0.6
2 years ago
0.0.5
2 years ago
0.0.4
2 years ago
0.0.3
2 years ago
0.0.2
2 years ago
0.0.1
2 years ago