Oxe

A mighty tiny web components framework/library.

API

Api documentation can be found at API.md.

VERSION

Breaking version changes can be found at VERSION.md.

Features

  • Small size
  • Front end routing
  • Configuration based
  • Dynamic import polyfill
  • Template string polyfill
  • In browser Template and Import/Export rewrites

Polyfill

  • poly.min.js includes everything need except shadow poly code.
    • customElements
    • DocumentFragment
    • URL, Promise, fetch
    • HTMLTemplateElement
    • Event, CustomEvent, MouseEvent constructors and Object.assign, Array.from
  • poly.shadow.min.js includes everything.
    • Webcomponentsjs
    • DocumentFragment
    • URL, Promise, fetch

Support

  • IE10~
  • IE11
  • Chrome
  • Firefox
  • Safari 7
  • Mobile Safari
  • Chrome Android

Overview

Live examples vokeio.github.io/oxe/.

Install

  • npm i oxe --save
  • Script dst/poly.min.js
  • UMD dst/oxe.min.js

Example

// home.js

export default {
	path: '/',
	title: 'Home',
	component: {
		name: 'r-home',
		template: `
			<h1 o-text="title"></h1>
			<button o-on-click="greet">Greet</button>
		`,
		model: {
			greeting: 'Old Hello World'
		},
		methods: {
			greet: function () {
				console.log(this.model.greeting);
			}
		},
		created: function () {
			console.log(this.model.greeting);
			this.model.greeting = 'New Hello World';
		}
	}
};
// index.js

import './elements/e-menu.js';
import Home from './home.js';

Oxe.setup({
	loader: {
		type: 'es' // required to rewrite import exports
	},
	router: {
		routes: [
			Home,
			'error' // dynamically loads and resolves to /routes/error.js
		]
	}
}).catch(console.error);
<!-- index.html -->

<html>
<head>

	<base href="/">
	<script src="./poly.min.js" defer></script>
	<script src="./oxe.min.js" o-setup="./index.js, es" defer></script>

</head>
<body>

	<e-menu>
		<ul>
			<li><a href="/home">Home</a></li>
		</ul>
	</e-menu>

	<o-router></o-router>

</body>
</html>

GitHub