Введение в NikaFramework (NKF). Часть 2

в 10:57, , рубрики: javascript, open source, web 2.0, web-разработка, Веб-разработка, метки: , , ,

Продолжение первой части.

4. Система сборки проекта
За что я люблю системы сборки — так это за то, что я могу создавать множество разных файлов и не волноваться, как потом это организовать, чтобы на стороне пользователя это все быстро подгружалось.

Что делает система сборки проекта?
Одну простую вещь — берет все файлы, упаковывает их определенным способом и на выходе у нас один, единственный файл — index.xhtmlz.
Это позволяет разработчику создавать сколь угодное количество файлов, напр., делить классы на несколько подклассов, писать стили в нескольких файлах, создавать XHTML заготовки для любого случая жизни.

К тому же, позже мы можем доступиться до тех же ресурсов (XHTML, SVG, JSON) при помощи унаследованных методов без прибеганию к AJAX, так как все эти ресурсы уже находятся в index.xhtmlz.

Если рисунки используются в XHTML либо в стилях (CSS/Sass), то система сборки проекта преобразует их в data:URL, при использовании base64.

index.xhtmlz:
Введение в NikaFramework (NKF). Часть 2

DOM:
Введение в NikaFramework (NKF). Часть 2

В будущем планируется внести поддержку «annotations», при использовании которых ресурс не должен преобразовываться в data:URL, что может быть полезно для очень больших файлов, напр., видео.

У системы сборки проекта — два режима. development и production. В development (по умолчанию) все ресурсы упаковываются, но JS не сжимается и не обфускируется.
В production режиме — идет дополнительное сжатие. В конце работы (в любом из режимов) —
файл сжимается в zip формат, что дает экономию по трафику.

Система сборки проекта написана на NodeJS и в среднем занимает 1 сек в development режиме для среднего проекта (350 файлов).

Преимущество использования все время компиляции (сборки проекта) — это то, что у вас всегда код, который отвечает боевым условиям, то есть production режиме.
Так как часто бывает, при использовании отдельно подключаемый script/link тегов все работает нормально, а позже когда все упаковывается в один файл, начинают вылезать косяки.

5. Семантика генерируемого DOM
Как часто вам приходилось инспектировать элемент (Firebug, Web Developer), а потом искать по всему коду его имплементацию? NKF решает эту проблему тем, что он знает к какому типу компонента относиться каждый компонент, и сам генерирует DOM понятный для быстрого нахождения компонента.

data-nkf-component-type — тип компонента
data-nkf-component-name — название компонента

Введение в NikaFramework (NKF). Часть 2

Введение в NikaFramework (NKF). Часть 2

6. Локализация на лету
Это возможность без перезагрузки менять локаль на другую. Сделано это при помощи data-* аттрибута data-lang-*.

Напр.

<label data-lang-textcontent="{{Search}}" data-lang-title="{{Search!}}"/>

будет в конечном итоге вот так, для англ.

<label data-lang-textcontent="{{Search}}" data-lang-title="{{Search!}}" title="Search!">Search</label>

или вот так для рус.

<label data-lang-textcontent="{{Search}}" data-lang-title="{{Search!}}" title="Поиск!">Поиск</label>

Файлы локализации создаются в директории /data/lang в виде обычных JSON файлов.

Напр.

ru.json:

{
	"translate":{
		"Search": "Поиск",
		"Products": "Продукция"
		....
	}
}

Так же возможная частичная локализация сгенерированной части DOM и даже CSS (content).

В будущем планируется сделать возможность привязки меток, для локализации большого текста.

В следующей части я покажу как создавать приложения используя данный фреймворк.

P.S. Конструктивная критика и идеи по улучшению приветствуются.

Автор: siegerstein

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js