ForgejComponent
bg

jComponent

Маршрутизиране на страници в браузъра без презареждане

jComponent 20 · jcomponent@20 jcomponentfrontendroutingspa Изпълнено с jComponent 20

jComponent има собствен рутер за приложения от една страница. ROUTE(url, fn) регистрира маршрут: сегментите {name} се подават на fn като аргументи, по ред. REDIRECT(url) променя адреса с History API (без зареждане на страница) и изпълнява съвпадащия маршрут. Маршрутите се сравняват сегмент по сегмент: маршрут и URL трябва да имат еднакъв брой сегменти, а * съвпада с всяка стойност на своята позиция. NAV описва текущото местоположение: NAV.url е пътят, NAV.query разчетеният query string, а NAV.params аргументите на маршрута. NAV.back() и NAV.forward() се движат из историята, която jComponent поддържа.

За сървъра това си остава една страница, така че всеки URL под вашето приложение трябва да връща същия HTML (ROUTE('GET /*'), който изобразява скелета), иначе презареждане на /users/5/ би дало 404.

public/index.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>jComponent</title>
	<link rel="stylesheet" href="//cdn.componentator.com/spa.min@20.css" />
	<script src="//cdn.componentator.com/spa.min@20.js"></script>
</head>
<body>

	<h1 id="title"></h1>

	<script>

		ROUTE('/', function() {
			$('#title').text('Home');
		});

		ROUTE('/users/{id}/', function(id) {
			$('#title').text('User ' + id);
		});

		ROUTE('/files/*', function() {
			$('#title').text('Files');
		});

	</script>

</body>
</html>
Опитайте в браузъра си

Редактирайте примера и го изпълнете. Работи в изолирана рамка във вашия браузър; нищо не се изпраща към нашия сървър.

Преглед