1.9.6 • Published 5 years ago

dooli v1.9.6

Weekly downloads
1
License
ISC
Repository
github
Last release
5 years ago

JavaScript libraly - Dooli

v1.9.6

install

npm i dooli

Мини библиотека, реализованная на ES6. Пример:

Dooli("dooli")
    .css("color: #F00", "font-size: 23px")
    .addClass("test", "test-new-dooli")
    .removeClass("dooli", "test")
    .attr("data-type=0", "data-start=hi!")
    .html()

Методы библиотеки:

МетодОписаниеПараметры
DooliУстанавливет DOM элементselector - id или querySelectorAll options - объект, содержащий isTag если необходим getElementsByTagName
objвозвращает установленный DOM элементне требуется
firstвозвращает первый элементне требуется
getNodesByAttrвозвращает коллекцию по аттрибутам либо контекстattr - (string), например, [data-type="1"], flag - (boolean), если флаг, то вовращает коллекцию по поиску, иначе контекст Dooli
numвозвращает элемент по его позицииindex - позиция элемента
cssприменяет CSS-стили к указанному элементупараметры через запятую
htmlПрименяет или возвращает содержимое контейнераЕсли указан value, то применит его, иначе вернет содержимое
addClassдобавляет CSS-классы для елементапараметры через запятую
removeClassудаляет CSS-классы для элементапараметры через запятую
focusзадает фокус элементуне требует
attrзадает 1 или несколько новых аттрибутов элементупараметры через запятую
getвозвращает 1 или несколько аттрибутов элемента (массив)параметры через запятую
showпоказывает элементне требует
hideскрывает элементне требует
widthвозвращает ширину элементане требует
heightвозвращает высоту элементане требует
prependдобавляет 1 или несколько элементов в начало блокапараметры через запятую
appendдобавляет 1 или несколько элементов в конец блокапараметры через запятую
clickустанавливает или вызывает обработчик элементаtype - тип события callback - коллбек context - контекст коллбека, если не указан, то принимает внутренний контекст
cloneклонирует элементне требует
addEventдобавляем событие к элементуel (or null) - куда вешаем событие event - название события (click, mousemove), callback - обработчик клика, context - контекст для обработчкика
removeEventудаляем событие у элементаel (or null) - элемент event - название события (click, mousemove), callback - обработчик клика, context - контекст для обработчкика
bindEventприменяет removeEvent и addEvent с таким же числом параметров
bindMultipleприменяет несколько обработчиков на элементel (or null), object - объект событий с ключем названия ивента и его обработчиком

Методы, которые не возвращают результата можно чейнить.

Таймер

Чтобы установить таймер на 10 секунд, достаточно сделать так:

const time = require('dooli/modules/time.dooli');
time.timer(10, () => {
    alert('10 секунд прошло');
});

Можно также триггерить коллбек каждые n секунд, пока таймер не завершил свою работу

const time = require('dooli/modules/time.dooli');
time.timer(86400, () => {
    console.log('день прошел');
}, 1, (options) => {
    console.log(`до конца дня осталось: ${options.hours}:${options.minutes}:${options.seconds}`);
});

options - объект, который содержит в себе ключи days, hours, minutes, seconds, timeEnd до конца работы таймера

События

Навешивать события можно несколькими способами:

Dooli('button').click(callback);
Dooli('button').addEvent('click', callback /*, context */);
Dooli('button').bindEvent('click', callback /*, context */);
Dooli('button').bindMultiple({
    click: () => {},
    mousemove: () => {},
});

Ивенты

Все довольно понятно:

require('dooli/modules/events.dooli');
D.events.on('event', () => {
    // делаем что то при каждом триггере ивента event
});
D.events.once('event', () => {
    // делаем что то один раз при триггере ивента event
});
// Создаем кастомный ивент с именем event
D.events.trigger('event'/*, param1, param2, param3 */);

Стороннее расширение библиотеки

Вы также можете расширить стандарный функционал библиотеки, например:

// наследуемся
class MyDooli extends DooliAbstract {
  html() {
    console.log("Ваша реализация метода HTML");
  }
}

//и используем
(new MyDooli("element_id")).html();

Расширение модулей:

// Создаем новый модуль
D.myModule = {};
D.myModule.sayHi = () => alert('Привет!');

// Расширяем существующий
D.touch.SENSITIVITY_X = 200; // меняем чувствительность тача
D.touch.callbacks.callbackTouchBottom = () => {
    // создаем свой обработчик свайпа снизу вверх
};

Шаблонизатор

Пример, есть такая разметка:

<div id="dooli_tpl">
  <div>{text}</div>
</div>

И нам надо продублировать содержимое контейнера dooli_object и заменить все {text} на что-то полезное, то это можно сделать так:

const Template = require('dooli/modules/template.dooli');
let tpl = new Template();
tpl.init("dooli_tpl");
tpl.each(2) //дублируем 2 раза
   .parse("text", "Hello!"); //заменяем {text} на Hello! 

Результат будет таким:

Hello!

Hello!

Условия

<dooli:if var="first">Первое условие</dooli:if>
<div dooli-if-var="second">div will be hidden</div>

Управлять условиями и переменными можно так:

tpl.setIfBlock('first', false);
tpl.setIfBlock('second', false);

В таком случае текст Первое условие отрендерен на странице не будет. Изменить значение переменной можно, передав вторым и третьим агрументом true.

Итерация

<dooli:iterate id="iterateWrap">
    <div>я в цикле {count} раз. My name is {name}. I'm {age}.</div>
</dooli:iterate>
tpl.setIteration('iterateWrap', {
    data: [
        {
            name: 'Artem',
            age: 20,
        },
        {
            name: 'Anya',
            age: 24,
        },
    ],
});

setIteration принимает два аргумента: irerateWrap - id контейнера, data - массив объектов, которыми будет заполнена строка. В данном примере результат HTML будет таким:

<div>я в цикле 2 раз. My name is Artem. I'm 20.</div>
<div>я в цикле 2 раз. My name is Anya. I'm 24.</div>

dooli:iterate может быть любым другим элементом

1.9.6

5 years ago

1.9.5

5 years ago

1.9.4

5 years ago

1.9.3

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.0

5 years ago