newhelper-js 2.1.5 → 2.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -17
- package/history.md +30 -5
- package/newHelper.js +1233 -965
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,32 +2,44 @@
|
|
|
2
2
|
Наш дискорд сервер!
|
|
3
3
|
Our discord server!
|
|
4
4
|
https://discord.gg/zetb62mqsS (newHelper.js dev)
|
|
5
|
-
Сейчас передо мной стоит вопрос - делать ли движок плагинов? и если делать выносить движок окон в внешний плагин?
|
|
6
5
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
|
|
6
|
+
- Библиотека для создания сверхлёгких но очень функциональных админ панелей, один из лучших примеров Object hub, Общий бандл всего сайта составляет всего 280 кб чистого кода, внутренная админ панель со всем html+css+js весит всего 25 килобайт (при gzip размер ещё ниже).
|
|
7
|
+
- Я стараюсь придерживать библиотеку в состоянии "Модульного монолита".
|
|
8
|
+
- Текущая версия - 2.1.7, с невероятно хорошей документацией в коде
|
|
9
|
+
|
|
11
10
|
## Модули в комплекте
|
|
12
|
-
- Широкий движок окон (ресайз, разворот на весь экран, taskbar
|
|
13
|
-
- Удобные горячие клавиши (press/release
|
|
14
|
-
- Роутер (
|
|
15
|
-
- Ультралёгкий аналог
|
|
16
|
-
- Самописный lazy-load (
|
|
17
|
-
- Модуль отлова ошибок
|
|
18
|
-
- Простой http клиент с прогрессом загрузки файлов
|
|
19
|
-
- DOM
|
|
20
|
-
- Изоляция над Storage
|
|
11
|
+
- Широкий движок окон (ресайз, разворот на весь экран, taskbar)
|
|
12
|
+
- Удобные горячие клавиши (press/release колбеки)
|
|
13
|
+
- Роутер (с поддержкой вложенных и динамичных путей)
|
|
14
|
+
- Ультралёгкий аналог l10n
|
|
15
|
+
- Самописный lazy-load (создан для ручного распила файлов а не для сборщиков)
|
|
16
|
+
- Модуль отлова ошибок
|
|
17
|
+
- Простой http клиент с прогрессом загрузки файлов
|
|
18
|
+
- DOM-хелпер
|
|
19
|
+
- Изоляция над Storage
|
|
20
|
+
- Автосохранение форм
|
|
21
|
+
- Драггер
|
|
22
|
+
|
|
23
|
+
### Моя модель версионирования (я не люблю semver):
|
|
24
|
+
- 2 - вечная ветка (ну я хотябы мечтаю об этом)
|
|
25
|
+
- X - номер обновления (например щас готовится 2.2.0 которая на самом деле 2.2)
|
|
26
|
+
- 0 - стабильная версия. Если стоит любая цифра помимо 0 - нестабильная версия
|
|
27
|
+
- (По этой модели 2.1.7 - нестабильная, если хотите стабильную версию берите 2.1)
|
|
28
|
+
|
|
29
|
+
### последний замер min+gzip = 5.01 kb
|
|
30
|
+
я использую terser без настроек, а для проверки gzip я просто беру и ставлю новую версию в object hub => я не ломаю совместимость
|
|
21
31
|
|
|
22
32
|
## Особенности
|
|
23
33
|
- Библиотека использует классическое подключение с тегом script и не требует никаких сборщиков/компиляторов. Но если очень хочется вы можете настроить его, но зачем? это же ассемблер из мира веб
|
|
24
|
-
- Зависимости? неа, это ванильный
|
|
25
|
-
- Указанный в начале размер библиотеки является размером исходного кода, так что минификация+gzip уменьшат размер ещё сильнее
|
|
34
|
+
- Зависимости? неа, это ванильный ES11
|
|
26
35
|
- Из-за минималистичности кода вы можете спокойно переопределить любой встроенный метод под свои нужны. В крайнем случае можно прибегнуть к модификации кода библиотеки, но такое мы не рекомендуем делать в случае если вы собираетесь обновляться до самых последних версий
|
|
27
|
-
- Весь код написан внутри
|
|
36
|
+
- Весь код написан внутри фабрики Intl.newHelper без использования глобальных читателей событий. Из-за этого конфликты с остальными библиотеками минимальны (если не нулевые), если вы готовы то можете пробовать запустить newHelper вместе с jQuery или если вы очень хотите реактивность то пробуйте в связке с ультралёгкими реактивными фреймворками (у меня на слуху из адекватных alpine.js)
|
|
28
37
|
- Если вы последователь "14 килобайтных сайтов" то можете смело прогнать библиотеку через минификатор, минифицированный код библиотеки не должен весить больше 5 килобайт, а если отбросить ненужные вам модули и то меньше (например код движка окон составляет приблизительно 50% всего кода библиотеки, если вам не нужен движок окон - оставляйте 2 килобайта gzip-ядра)
|
|
29
38
|
- Если вы научитесь грамотно использовать ленивую загрузку, то ваши и без того лёгкие сайты станут в разы легче (тот же стартовый трафик Object Hub уменьшился 330кб до 180кб при старте из-за разбития всего на lazyload модули)
|
|
30
39
|
- На базе этой библиотеки работает парочка моих сайтов не связанных с админ панелями - GDPS Helper (каталог приватных серверов geometry dash, но там тоже идёт админка для демонлистов), Object hub (каталог с элементами вики движка и hr-платформы для OSC сообщества, вики движок во всю использует окна вместо костылей mediawiki). Если захотеть можно не только админку за 2 часа собрать, но и написать мегасайт за пару недель
|
|
31
40
|
- Библиотека родилась 3 года назад как внутренний инструмент веб сайта GDPS Helper, развивалась она из-за презрения к тяжеловесности react, позже исходный код GDPS Helper стал основоположником Object Hub, в процессе развития которого как раз таки и появились движок окон, горячих клавиш, и более мощная ленивая загрузка
|
|
32
41
|
- Я как разработчик стараюсь следовать философии Unix систем, как пример простота превыше сложности - в коде всего 600 строк кода, или модульность, пусть у меня модули и чуть чуть связаны но каждый модуль отвечает за свою вещь
|
|
33
42
|
- Продолжая прошлый пункт, вы можете использовать newHelper.js везде и всюду, его применение ограничено лишь вашей фантазией, хотите сделать классную админку? либа на это и целится. хотите написать полноценный веб форум? если вы ещё помните GDPS Helper или Object hub это вполне возможно. хотите написать свой фронтенд к Яндекс API? если у вас много времени пожалуйста
|
|
43
|
+
|
|
44
|
+
### Библиотека родилась из внутренних потребностей
|
|
45
|
+
Значит, что я могу осознанно пойти против стандартов (моя библиотека не умеет в сборщики) ради решения своих проблем. Если вам не нравится какой то модуль и не забыли третий пункт особенностей - переписывайте хоть модуль целиком
|
package/history.md
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
История newHelper.js
|
|
2
2
|
# 1.7
|
|
3
|
-
### 01
|
|
3
|
+
### 2024-06-01 как часть GDPS Helper
|
|
4
4
|
Всё берётся с GDPS Helper 1.6. Само по себе обновление 1.6 дало мне базу работы с javascript чтобы я потом выпустил 1.7, которая уже реально использует наработки ставшие первой весией newHelper.js:
|
|
5
5
|
- helperRequest (нынеший _.http)
|
|
6
6
|
- примитивная интерационализация, с сохранением всех пакетов в глобальном объекте (нынешний _.lang)
|
|
7
7
|
|
|
8
8
|
# 1.8
|
|
9
|
-
### 24
|
|
9
|
+
### 2024-08-24 как часть GDPS Helper
|
|
10
10
|
Эта версия привнесла обновленную систему локализации, она стала походить на нынешний _.lang из-за скачивания json с сервера
|
|
11
11
|
|
|
12
12
|
# 1.9
|
|
13
|
-
### 17
|
|
13
|
+
### 2024-11-17 как часть GDPS Helper
|
|
14
14
|
- Появилася helperStorage, класс-обёртка над localStorage (нынешний _.storage, но тогда принимал только localStorage)
|
|
15
15
|
- Добавлена функция loadScript, которая позже станет частью _.lazy.load
|
|
16
16
|
|
|
17
17
|
# 2.0
|
|
18
|
-
### 20
|
|
18
|
+
### 2025-05-20 как часть Object hub
|
|
19
19
|
- Инкапсуляция всего в $ (ранее было 30+ глобальных переменных в коде)
|
|
20
20
|
- Движок окон в почти полном его виде
|
|
21
21
|
- глобальный error handler который указывает точную строку с ошибкой (иногда может работать не совсем правильно)
|
|
@@ -23,9 +23,34 @@
|
|
|
23
23
|
- Создание конфиг скрипта в котором можно изменять некоторые базовые значения newHelper.js без прямой перезаписи функций
|
|
24
24
|
|
|
25
25
|
# 2.1
|
|
26
|
-
### 23
|
|
26
|
+
### 2026-02-23 как самостоятельная библиотека
|
|
27
27
|
- Перенос $ в _
|
|
28
28
|
- Дополнение движка окон возможностью переименовать окно
|
|
29
29
|
- Движок горячих клавиш
|
|
30
30
|
- DOM хелперы (_.$, _.http)
|
|
31
31
|
- Минимизация размера кода (2.0.1 29.4 кб => 2.1 13.6 кб)
|
|
32
|
+
|
|
33
|
+
# 2.2
|
|
34
|
+
### 2026-05-?? как самостоятельная библиотека
|
|
35
|
+
BREAKING CHANGES:
|
|
36
|
+
- Как исправлять их? Добавьте указанные в пунктах строчки в начало ваших nhConfig.js или main.js, ну или что у вас там
|
|
37
|
+
- newHelper теперь не вешается автоматически в "_", а стал фабрикой в Intl.newHelper. Фиксится это в одну строку:
|
|
38
|
+
```
|
|
39
|
+
window._ = Intl.newHelper();
|
|
40
|
+
|
|
41
|
+
// теперь _ работает точь в точь как в 2.1
|
|
42
|
+
```
|
|
43
|
+
- один из модулей DOM хелперов (_.$) удалён, полифилл если вы использовали его в проекте:
|
|
44
|
+
```
|
|
45
|
+
_.$ = {
|
|
46
|
+
D: document,
|
|
47
|
+
id: i=> document.getElementById(i),
|
|
48
|
+
q: (i,p=document)=> p.querySelector(i),
|
|
49
|
+
qa: (i,p=document)=> p.querySelectorAll(i),
|
|
50
|
+
|
|
51
|
+
on: (el,ev,fn,opts)=> el.addEventListener(ev,fn,opts),
|
|
52
|
+
off: (el,ev,fn,opts)=> el.removeEventListener(ev,fn,opts),
|
|
53
|
+
|
|
54
|
+
cliRect: e=> e.getBoundingClientRect(), // сокращение чтобы не писать 25+ символов
|
|
55
|
+
}
|
|
56
|
+
```
|