<output> отображает результат вычислений или пользовательского ввода непосредственно в форме. Связывается с элементами формы через атрибут for или form, реагируя на изменения.
<form oninput="result.value = parseInt(a.value) + parseInt(b.value)">
<input type="number" id="a" name="a" value="10">
<input type="number" id="b" name="b" value="20">
<output name="result" for="a b">30</output>
</form>
Значение
output динамически обновляется при изменении связанных полей. Может использоваться с JavaScript для сложных операций.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤1💯1
unknown и any позволяют обходить проверку типов, но работают по-разному. Тип
any отключает проверку типов полностью. Переменная с типом any может быть присвоена куда угодно, и с ней можно выполнять любые операции без ошибок компиляции.
let value: any = "hello";
value = 42; // OK
value.foo(); // OK (но вызовет ошибку в runtime)
Тип
unknown безопаснее. Переменная с типом unknown не может быть использована без явного приведения типа или проверки.
let value: unknown = "hello";
value = 42; // OK
value.foo(); // Ошибка компиляции
if (typeof value === "string") {
console.log(value.toUpperCase()); // OK после проверки
}
Использование
unknown требует дополнительных проверок, что делает код безопаснее. any следует избегать, так как он лишает TypeScript главного преимущества — статической типизации.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
| и могут быть использованы в mustache-синтаксисе или v-bind.
// Регистрация фильтра
Vue.filter('capitalize', function(value) {
if (!value) return '';
return value.toString().toUpperCase();
});
<!-- Использование в шаблоне -->
<p>{{ message | capitalize }}</p>
Фильтры можно объединять в цепочки ({{ text | filterA | filterB }}) и передавать аргументы ({{ date | format('YYYY-MM-DD') }}). Во Vue 3 фильтры удалены в пользу вызовов методов или вычисляемых свойств.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
box-sizing определяет, как рассчитываются ширина и высота элемента — включая или исключая padding и border. Основные значения:
-
content-box (по умолчанию) — width/height задают размер содержимого, padding и border добавляются к общим размерам. -
border-box — width/height включают padding и border, упрощая расчеты макета.
.box {
box-sizing: border-box; /* padding и border входят в общую ширину */
}
Использование
border-box делает верстку более предсказуемой, так как размеры элемента не меняются при добавлении отступов или рамок.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Основные функции:
- Фиксация изменений (коммиты) с возможностью отката
- Ветвление (branches) для параллельной разработки
- Слияние изменений (merge) из разных веток
- Удалённая работа через репозитории (push/pull)
git commit -m "Add new feature"
Позволяет эффективно управлять историей кода, координировать работу команды и минимизировать конфликты при совместной разработке.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Контролируемые компоненты хранят состояние в React и обновляют его через
setState. Значение элемента формы полностью контролируется React.
<input
type="text"
value={this.state.value}
onChange={(e) => this.setState({ value: e.target.value })}
/>
Неконтролируемые компоненты используют DOM для хранения данных. Значения получают через ref после отправки формы.
<input
type="text"
ref={(input) => this.input = input}
/>
Контролируемые компоненты обеспечивают предсказуемость, неконтролируемые — меньше кода для простых форм.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
В JavaScript есть несколько способов создать пустой объект:
Литеральная нотация – самый простой и читаемый вариант:
Конструктор Object – менее предпочтителен, но также работает:
Object.create(null) – создает объект без прототипа:
Все три способа создают пустые объекты, но отличаются в деталях наследования и производительности. Литеральная нотация рекомендуется для большинства случаев.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Frontend собеседования
Литеральная нотация – самый простой и читаемый вариант:
const obj = {};
Конструктор Object – менее предпочтителен, но также работает:
const obj = new Object();
Object.create(null) – создает объект без прототипа:
const obj = Object.create(null);
Все три способа создают пустые объекты, но отличаются в деталях наследования и производительности. Литеральная нотация рекомендуется для большинства случаев.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Относительные единицы зависят от контекста:
-
-
-
-
Абсолютные единицы фиксированы и не зависят от окружения:
-
-
-
Относительные единицы обеспечивают адаптивность, абсолютные – точный контроль.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Frontend собеседования
-
em – относительно размера шрифта родителя -
rem – относительно размера шрифта корневого элемента -
% – относительно размера родительского элемента -
vw/vh – относительно ширины/высоты viewport
.container {
font-size: 1.2rem; /* 1.2 × корневой размер шрифта */
width: 80%; /* 80% от ширины родителя */
}
Абсолютные единицы фиксированы и не зависят от окружения:
-
px – пиксели -
pt – пункты (1/72 дюйма) -
cm/mm/in – физические единицы Относительные единицы обеспечивают адаптивность, абсолютные – точный контроль.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
useContext — это хук для доступа к данным контекста без пропсдриллинга. Создание контекста:
const MyContext = createContext(defaultValue);
Обертывание компонентов провайдером:
<MyContext.Provider value={someValue}>
<ChildComponent />
</MyContext.Provider>
Использование в компоненте:
const value = useContext(MyContext);
Хук подписывает компонент на изменения контекста и вызывает ререндер при обновлении значения. Работает только с контекстом, созданным через
createContext. Позволяет избежать передачи данных через промежуточные компоненты.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Для вставки видео используется тег
Атрибуты
Для встраивания YouTube-видео используется
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Frontend собеседования
<video> с атрибутом controls, чтобы отображать элементы управления.
<video width="640" height="360" controls>
<source src="video.mp4" type="video/mp4">
Ваш браузер не поддерживает видео.
</video>
Атрибуты
width и height задают размеры плеера. Тег <source> указывает путь к видео и его формат. Альтернативный текст показывается, если видео не загружается. Для встраивания YouTube-видео используется
<iframe>:
<iframe src="https://www.youtube.com/embed/ID_ВИДЕО" allowfullscreen></iframe>
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Метод slice()
Возвращает часть строки между указанными индексами. Отрицательные значения отсчитываются с конца строки.
Метод substring()
Аналогичен
Метод substr() (устаревший)
Принимает начальный индекс и длину подстроки.
Для простых случаев также можно использовать деструктуризацию или регулярные выражения.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Frontend собеседования
Возвращает часть строки между указанными индексами. Отрицательные значения отсчитываются с конца строки.
const str = 'Hello, world!';
const subStr = str.slice(0, 5); // 'Hello'
Метод substring()
Аналогичен
slice(), но не поддерживает отрицательные индексы.
const subStr = str.substring(7, 12); // 'world'
Метод substr() (устаревший)
Принимает начальный индекс и длину подстроки.
const subStr = str.substr(7, 5); // 'world'
Для простых случаев также можно использовать деструктуризацию или регулярные выражения.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Основные возможности:
- Генерация проекта с предустановленными зависимостями (vue create).
- Плагины для добавления Vuex, Router, PWA и других технологий.
- Режим разработки с горячей перезагрузкой (vue serve).
- Оптимизированная сборка для продакшена (vue build).
Преимущества:
- Стандартизированная структура проекта.
- Гибкость через
настройку vue.config.js. - Интеграция с современным фронтенд-стеком (TypeScript, SCSS, Jest).
// vue.config.js
module.exports = {
devServer: { port: 8080 }
};
Упрощает разработку, обеспечивая лучшие практики из коробки.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
const value: string | number;
// Переменная value может быть строкой или числом
type A = { a: string };
type B = { b: number };
type C = A & B;
// Тип C должен содержать свойства a и bСтавь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
git show HEAD # Просмотр текущего коммита
HEAD хранится в
.git/HEAD и может ссылаться на другой указатель (например, ref: refs/heads/main) или хэш коммита.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Создание контекста:
const StateContext = React.createContext();
Провайдер с состоянием:
function StateProvider({ children }) {
const [state, setState] = useState(initialState);
return (
<StateContext.Provider value={{ state, setState }}>
{children}
</StateContext.Provider>
);
}
Использование в компоненте:
const { state, setState } = useContext(StateContext);
Для сложного состояния можно использовать useReducer вместо useState. Такой подход заменяет Redux в небольших приложениях.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4