Пакеты в JavaScript — jpack

в 14:14, , рубрики: javascript, Песочница, метки:

Разговор пойдет именно про JavaScript и ничего больше.

Давно мучаюсь от мысли, что часто приходится переносить функции из проекта в проект и, поскольку я не очень-то люблю файлики типа common.js или utils.js, где свалено всё в кучу, иногда даже приходится держать эти функции в разных файлах. В этом-то и состоит суть проблемы. Хочется иметь большую переносимость, при этом не загромождая глобальную область видимости и, соответствено, не использую префиксов функций.

Недавно я смотрел Java и мне очень понравилось то, как там подключаются пакеты, и я подумал, что это может мне помочь в решении проблемы. Я не мастер в JavaScript и Java, и будет много неверных конструкций и прочено, но мне искренне интересны мнения людей по поводу задумки. Я назвал проект jpack по аналогии с jQuery, но хочу отметить, что это не конкурент jQuery — jpack, решает другую задачу.

Репозиторий: github.com/arturgspb/jpack/

Примеров и пакетов пока мало — просто из-за того, что возможно и не будет смысла дальше развивать, если дело гиблое людям будет не интересно.

Для тех, кому лень поднимать проект:

<!-- Подключаем основной и единственный файл -->
<script data-main="scripts/main" src="../js/jpack.js"></script>
<script type="text/javascript">
    <!-- Настраиваем путь подключения пакетов (по-умолчанию /js/packages/) -->
	jpack.setPackagesPath('../js/packages');
    <!-- Настраиваем какие пакеты/модули подгрузить -->
	jpack.load('jpack/utils');
	jpack.load('jpack/system/out');
</script>

А в body пишите:

<script type="text/javascript">
	jpack.run(function(){
		var date1 = '2012-01-02'
		var date2 = '2012-02-02';
		var counter = jpack.utils.datetime.getDateDiff(
			new Date(date1), new Date(date2)
		);
		jpack.system.out.println('Разница времени: ' + date1 + ' и ' + date2 + ':');
		jpack.system.out.println('Недель: ' + counter.week);
		jpack.system.out.println('Дней: ' + counter.day);
	});
</script>

Для заключения. Я понимаю, что подгрузка скриптов разными файлами не оптимальна — проект еще совсем молод и хотелось показать рабочую модель а не оптимальную структуру. Хотелось бы узнать мнения именно по модели работы библиотеки. Как улучшить саму суть.

Спасибо за внимание.

Автор: arturgspb


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


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