Обновить
132
Константин Лебедев@RubaXa

Оператор ПК

57
Подписчики
Отправить сообщение

Хотя думаю погорячился, так что всё это ИМХО, просто у себя я именно так и сделал, вот:


Правила
export function minLength(min: number): ValidateRule {
    return ({value}) => value.length >= min ? null : {
        id: 'minLength',
        detail: {
            min,
        },
    };
}

export function required(): ValidateRule {
    return createComplexRule('required', {}, [minLength(1)]);
}

export function email(): ValidateRule {
    return createComplexRule('email', {}, [regexp(/^.+@.+\..+$/)]);
}

export function password(additionalRules: ValidateRule[] = []): ValidateRule {
    return createComplexRule('password', {}, [
        required(),
        minLength(6),
    ].concat(additionalRules));
}

Результат вылидации
const validaty = password()({value: "123"});
// {
//   id: 'password',
//   detail: {},
//   nested: {
//     id: 'minLength',
//     detail: {min: 6},
//   },
// }

Плохо тем, что на каждый чих вместо уже подготовленной (возможно оптимальной под конкретный паттерн) функции (которую барузер успешно заJITит), будет создаваться новый объект, методы которого вдобавок завраплены, т.е. как не крути, это всё оверхед.


Ок, допустим он небольшой, но всё равно остаётся проблема повторного использования, да, можно завернуть это в метод, как вы написали, но это нужно догадаться, без шуток.


Кроме этого, если оформить в функциональном стиле, мы получим достаточно гибкую штуку и комбинации правил, типа


import {validate, compose, minLength, regExp} import '...';

const emailRule = compose('email', [
  minLength(6),
  regExp(/^.+@.+\.[a-z]+$/),
]);
const onlyGmail = compose('only-gmail', [
  emailRule(),
  regExp(/@gmail.com$/),
]);

validate(onlyGmail, input.value);
если мы говорим про валидацию, которая выполняется на каждый чих пользователя, то ответ: ВСЕМ.
import {composeRules, minLength, maxLength, has} from '...';

const passwordRule = composeRules(
   minLength(6),
   maxLength(32),
   has(/[0-9]/, 'numbers'),
   has(/^[a-z]+$/i, 'only-latin'),
);

const result = passwordRule(inputPass.value);
А нигде и не написано, что есть поддержка вложенных списков. Скажу больше, её никогда и не будет, увы.
Смотрите `onMove`, через него можно реализовать подобный механизм.
Нет, они генераторы бойлерплейта.
В счёт, что там под копотом не важно, главное суть --> это очередной бандлер.

Да не вопрос, вот свежачёк microbundle (zero-configuration bundler for tiny modules), всего неделю назад вышел и уже 1.5K✰

Нормуль, у нас например есть схожий инструмент, только он делает обратную задачу, по коду приложения визуализирует его структуру.
Пример фрагмента

Всё правильно vlreshet говорит, вечные конфиги, rc-шки, соглашения и другие тайные занания. Почему никто не задумывается о another-awesome-bundler init, который бы сам задетектил jsx, ts, less/sass/postcss и сконфигурил бы как надо? Хочешь продвинутой конфигурации, не вопрос another-awesome-bundler eject, create-xxxx-app ведь создали, тут-то что мешает?

Тут вам видней, я слишком редко менял место, но когда приходилось, то выбирал не из списка вакансий, а контор, в которых бы мне хотелось работать и по ходу дела узнавал условия/вилку.

Чего? Любое собеседование заканчивается вопросом о «ваших ожиданиях», как вы предлагаете на него отвечать? Типа «а сколько дадите?», лол.


Кроме этого, если у конторы заведомо потолок в Х, а вы хотите Х+Y%, то разговор будет короткий, ну либо задачи/место такое расчудесное, но тут и ценник уже не важен.

А что именно «так»? Если в вакансии не указан ценник, спросите, это не сложно.

ого-го, ну ок

Релевантные для кого? Есть вакансии и есть соискатели, всё. А это непонятно для чего, да и под авторизацией, так что я указал от балды, чтобы просто посмотреть «красивую картику» таких же.

И все подумали «А давай!» и указали от балды, чтобы проверить.

В каком-нибудь 2012/13, до разделения хабра, за минус сотню бы с легкостью ушло.

Хоспади, та статья, настолько дно, насколько это в принципе возможно, ей просто не место на хабре. Я понимаю, если бы в ней было хоть что-то интересное, например про нейросети, которые преобразуют макеты в код или нейросети, которые пишут копипастом, но Weebly как пример, это прям лютый пи**ец.

Если бы каждый уважаемый разработчик не пытался поделиться своими наработками, вы бы никогда не увидели: Prototype, jQuery, Knockout, Angular, React, Vue и __список_зависимостей_из_вашего_package.json__.

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность