1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/silis-MarkupJS

Клонировать/Скачать
README.md 4.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 09.06.2025 00:54 926eae0

jsm

Javascript Markup, также известный как jsm, представляет собой язык разметки, использующий нативные синтаксисы JavaScript. Он может быть встроен в JavaScript без необходимости использования сторонних библиотек или инструментов. jsm обладает такими характеристиками, как легковесность, постепенная загрузка, управление компонентами, динамические шаблоны и привязка данных.

(Автор данного проекта прекратил его поддержку, и он используется исключительно для академических исследований.)

Примеры использования

Отображение "Hello World"

HTML-код:

hello world

jsm-код:

jsm`hello world`.render();

Исходный файл демонстрации: /demo/Hello.html

Клик по кнопке выводит "Is me"

HTML-код:

<input type="button" id="btnHtml" value="Нажми меня" />
<script>
	var btnHtml = document.getElementById("btnHtml");
	btnHtml.addEventListener("click", function(){
		alert("Is me!");
	});
</script>

jsm-код:

jsm
	.input({type:"button",id:"btnjsm",value:"Нажми меня"})()
	(function(){
		var btnjsm = document.getElementById("btnjsm");
		btnjsm.addEventListener("click", function(){
			alert("Is me!");
		});
	})
.render();

jsm-код без использования ID:

jsm
	.input({type:"button",value:"Нажми меня"})()
	(function(btnjsm){
		btnjsm.addEventListener("click", function(){
			alert("Is me!");
		});
	})
.render();

Исходный файл демонстрации: /demo/Script.html

Динамические шаблоны

var output = jsm.div`Динамический шаблон:`();
for(var i = 0; i < 10; i++){
	if(i % 2 == 0){
		output.div({style:"background:yellow"})`Строка ${i+1}`();
	} else {
		output.div({})`Строка ${i+1}`();
	}
}
output.render();
```#### Исходный файл демонстрации: /demo/Dynamic.html

### Привязка данных
```js
var _ = jsm.model({Value: "Это начальное значение"});
// Определение счетчика
var count = 0;
jsm
	.input({type: "text", value: _`Value`})()
	.div`hello ${_`Value`} world`()
	.div({style: "background:yellow"})(_`Value`)()
	.input({type: "button", onclick: "_.Value = 'Счетчик: ' + (count++)", value: "Увеличить счетчик"})()
.render();

Исходный файл демонстрации: /demo/Binding.html

Компоненты

// Определение компонента YellowPanel
jsmWidget.YellowPanel = function(input, output){
	output
		.div({style: "text-align:center; background:yellow;"})
			(input.children)
		();
};
jsm
	.YellowPanel`hello world`()
.render();

Исходный файл демонстрации: /demo/Widget.html

Загрузка внешних компонентов

// в /lib/jsm/Widget/YellowPanel.js
jsmWidget.YellowPanel = function(input, output){
	output
		.div({style: "text-align:center; background:yellow;"})
			(input.children)
		();
};

ЖелтаяПанель = function(вход, выход) { выход .div({style: "text-align:center; background:yellow;"}) (вход.children) (); }; // в /lib/demo/Widget-LoadFile.html //Необходимо запускать в веб-сервере //Автоматическая загрузка файла JavaScript "./lib/jsm/Widget/ЖелтаяПанель.js" jsm .ЖелтаяПанельпривет мир() .render();

  исходный файл: /demo/Widget-LoadFile.html
  ### Расширение компонентов
  Не реализовано, для запроса демонстрации оставьте комментарий
  # Описание файлов в папке lib
 - /lib/jsm.js  исходный код без корутин
 - /lib/jsm.min.js  минифицированный исходный код без корутин
 - /lib/jsm.coro.js  исходный код с корутинами
 - /lib/jsm.coro.min.js  минифицированный исходный код с корутинами

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/silis-MarkupJS.git
git@api.gitlife.ru:oschina-mirror/silis-MarkupJS.git
oschina-mirror
silis-MarkupJS
silis-MarkupJS
master