9.2.3 • Published 11 months ago

vldom v9.2.3

Weekly downloads
-
License
GPL-3.0-only
Repository
-
Last release
11 months ago

npm version

vldom TypeScript Frontend Component System

Simple component system with integrated routing.

version 9: new engine, even more efficient

Setup

You"ll need to enable jsx in your tsconfig

Compile your client with tsc and vldom compile!

tsc && vldom compile

Usage

Create a component by extending the component class

export class ExampleComponent extends Component {
	constructor() {
		super();
	}

	render() {
		return <section>
			Example Component!
		</section>;
	}
}

new ExampleComponent().host(document.body);

Let"s extends this by creating a recursive component

export class ExampleRecursiveComponent extends Component {
	constructor(private index: number) {
		super();
	}

	render() {
		return <section>
			Component {this.index}

			{index > 0 && new ExampleRecursiveComponent(index - 1)}
		</section>;
	}
}

new ExampleRecursiveComponent(10).host(document.body);

Router

vldom has a built-in router

const router = new Router(PageComponent
	.route("/home", HomeComponent),
	.route("/books", BooksComponent
		.route("/:id", BookComponent)
	)
);

class PageComponent extends Component {
	render(child) {
		return <main>
			<nav>App</nav>

			{child}
		</main>;
	}
}

class HomeComponent extends Component {
	render() {
		return <p>Welcome to my Book Store</p>;
	}
}

class BooksComponent extends Component {
	render() {
		return <section>
			<h1>Books!</h1>

			<button ui-href="someid">Some Book!</button>
		</section>;
	}
}

class BookComponent extends Component {
	params: { id: string }

	render() {
		return <p>Book with id {this.params.id}</p>;
	}
}

router.host(document.body);

onhashchange = () => router.update();

Directives

You can create custom directives (attribute handlers).

Component.directives["epic-link"] = (element, value, tag, attributes, content) => {
	element.onclick = () => {
		location.href = value;
	}
}

export class ExampleComponent extends Component {
	constructor() {
		super();
	}

	render() {
		return <section>
			Test <a epic-link="http://github.com/">Link</a>
		</section>;
	}
}

new ExampleComponent().host(document.body);
9.2.3

11 months ago

9.2.2

11 months ago

9.2.1

11 months ago

9.1.4

1 year ago

9.2.0

1 year ago

9.0.9

2 years ago

9.0.8

2 years ago

9.0.7

2 years ago

9.0.6

2 years ago

9.0.5

2 years ago

9.0.4

2 years ago

9.0.3

2 years ago

9.0.12

2 years ago

8.1.1

2 years ago

9.0.10

2 years ago

9.1.1

2 years ago

9.1.0

2 years ago

9.1.3

1 year ago

9.0.2

2 years ago

9.0.1

2 years ago

9.0.0

2 years ago

8.1.0

2 years ago

8.0.9

2 years ago

8.0.5

2 years ago

8.0.10

2 years ago

8.0.11

2 years ago

6.1.13

2 years ago

6.1.12

2 years ago

6.1.4

2 years ago

6.1.10

2 years ago

8.0.4

2 years ago

7.3.0

2 years ago

7.1.2

2 years ago

7.1.1

2 years ago

7.1.0

2 years ago

7.0.0

2 years ago

7.4.0

2 years ago

7.2.0

2 years ago

7.0.1

2 years ago

8.0.1

2 years ago

8.0.0

2 years ago

8.0.3

2 years ago

8.0.2

2 years ago

6.1.6

2 years ago

6.1.5

2 years ago

6.1.8

2 years ago

6.1.7

2 years ago

6.1.9

2 years ago

6.1.0

2 years ago

6.1.2

2 years ago

6.1.1

2 years ago

6.1.3

2 years ago

6.0.0

2 years ago

5.4.0

3 years ago

5.3.3

3 years ago

5.3.2

3 years ago

5.2.1

3 years ago

5.2.0

3 years ago

5.1.1

3 years ago

5.1.0

3 years ago

5.0.0

3 years ago

4.0.3

3 years ago

4.0.2

3 years ago

2.3.0

3 years ago

2.2.0

3 years ago

2.3.2

3 years ago

2.4.0

3 years ago

2.3.1

3 years ago

2.0.7

3 years ago

2.3.3

3 years ago

2.0.6

3 years ago

2.0.8

3 years ago

2.1.0

3 years ago

3.1.1

3 years ago

3.1.0

3 years ago

3.0.0

3 years ago

4.0.1

3 years ago

4.0.0

3 years ago

1.2.0

3 years ago

1.2.2

3 years ago

1.2.1

3 years ago

2.0.3

3 years ago

2.0.2

3 years ago

2.0.5

3 years ago

2.0.4

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.0.0

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.5

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago

0.0.0

3 years ago