$HTML, HTTP, проблемы веб-интеграции
1. На что SEO-специалистам следует обратить внимание на внешний интерфейс
- разумный
title,description,keywords:Вес трех элементов в поиске уменьшается один за другим.Значение title может подчеркивать ключевые моменты.Важные ключевые слова не должны встречаться более 2 раз,и они должны быть на первом месте.Разные страницы.titleБыть другим;descriptionСодержание страницы должно быть кратко изложено, длина должна быть подходящей, а ключевые слова не должны располагаться чрезмерно друг над другом.descriptionразные;keywordsСписок важных ключевых слов - Семантический
HTMLКод, совместимый с W3C: семантический код упрощает понимание веб-страниц поисковыми системами. - важный контент
HTMLCode First: поисковое сканированиеHTMLПорядок — сверху вниз.Некоторые поисковые системы имеют ограничения на продолжительность сканирования, чтобы обеспечить сканирование важного контента. - Не используйте важный контент
jsВывод: рептилия не будет выполнять сбор контента js - бесполезный
iframe: поисковые системы не будут сканироватьiframeсодержание в - Должны быть добавлены недекоративные изображения
alt - Улучшите скорость сайта: скорость сайта является важным показателем для рейтинга в поисковых системах.
2. В чем разница между заголовком и альтом изображения
- Обычно отображается, когда мышь находится над элементом
-
altда<img>Уникальный атрибут — это эквивалентное описание содержимого изображения, которое используется для отображения изображения, когда оно не может быть загружено, и для чтения изображения программой чтения с экрана. Это может улучшить высокую доступность картинок.Помимо чисто декоративных картинок должны быть заданы осмысленные значения, а поисковые системы сосредоточатся на анализе.
3. Использование нескольких методов запроса HTTP
-
1,
GETметод- Отправить запрос на получение ресурса на сервере
-
2,
POSTметод- К
URLУказанный ресурс отправляет данные или добавляет новые данные
- К
-
3.
PUTметод- а также
POSTМетод очень похож, и он также хочет отправить данные на сервер. Однако между ними есть различия. PUT указывает расположение ресурса на сервере, аPOSTнет
- а также
-
4.
HEADметод- Запрашивать только заголовок страницы
-
5.
DELETEметод- удалить ресурс на сервере
-
6.
OPTIONSметод- Используется для получения текущего
URLподдерживаемые методы. Если запрос выполнен успешно, появитсяAllowЗаголовок содержит что-то вроде“GET,POST”такая информация
- Используется для получения текущего
-
7.
TRACEметод-
TRACEЗапрос сообщений цикла используется для возбуждения удаленного метода, слой приложения
-
-
8,
CONNECTметод- Преобразование соединения запроса в прозрачное
TCP/IPряд
- Преобразование соединения запроса в прозрачное
4. Шаги по вводу URL-адреса из адресной строки браузера для отображения страницы
- браузер по запросу
URLсдаватьDNSРазрешение доменного имени, найди правдуIP, инициировать запрос к серверу; - Сервер возвращает данные после завершения фоновой обработки, а браузер получает файл (
HTML、JS、CSS, изображения и др.); - Браузер отвечает на ресурс, загруженный в (
HTML、JS、CSSи т. д.) для выполнения анализа синтаксиса и создания соответствующих внутренних структур данных (таких какHTMLизDOM); - Загрузите проанализированный файл ресурсов, визуализируйте страницу и завершите работу.
5. Как оптимизировать работу сайта
-
contentаспект- уменьшать
HTTPЗапросы: объединить файлы,CSSэльфы,inline Image - уменьшать
DNSСпросите:DNSКэширование, распределение ресурсов на нужное количество имен хостов - уменьшать
DOMколичество элементов
- уменьшать
-
Serverаспект- использовать
CDN - настроить
ETag - Использование компонентов
Gzipкомпрессия
- использовать
-
Cookieаспект- уменьшать
cookieразмер
- уменьшать
-
cssаспект- Поместите таблицу стилей вверху страницы
- Не используйте
CSSвыражение - использовать
<link>Не используйте@import
-
Javascriptаспект- Поместите скрипт внизу страницы
- Буду
javascriptа такжеcssимпортированный извне - компрессия
javascriptа такжеcss - удалить ненужные скрипты
- уменьшать
DOMдоступ
-
Фотографий
- Оптимизируйте изображения: выбирайте глубину цвета и сжатие в соответствии с реальными потребностями в цвете.
- оптимизация
cssспрайт - Уходите
HTMLсредняя растяжка
6. Коды состояния HTTP и их значения
-
1XX: Код статуса информации-
100 Continueпродолжать, вообще отправкаpostПо запросу отправилиhttp headerПосле этого сервер вернет эту информацию для подтверждения, а затем отправит информацию о конкретном параметре.
-
-
2XX: код состояния успеха-
200 OKнормальная информация о возврате -
201 CreatedЗапрос был выполнен успешно, и сервер создал новый ресурс -
202 AcceptedСервер принял запрос, но еще не обработал его
-
-
3XX: перенаправить-
301 Moved PermanentlyЗапрошенная веб-страница была окончательно перемещена в новое место. -
302 FoundВременная переадресация. -
303 See OtherВременное перенаправление и всегда использоватьGETзапросить новыйURI. -
304 Not ModifiedЗапрошенная страница не была изменена с момента последнего запроса.
-
-
4XX: ошибка клиента-
400 Bad RequestСервер не понимает формат запроса, и клиент НЕ ДОЛЖЕН пытаться снова сделать запрос с тем же содержимым. -
401 UnauthorizedЗапрос не авторизован. -
403 ForbiddenНет доступа. -
404 Not Foundне могу найти какURIсоответствующие ресурсы.
-
-
5XX:Ошибка сервера-
500 Internal Server ErrorНаиболее распространенные ошибки на стороне сервера. -
503 Service UnavailableСторона сервера временно не может обработать запрос (вероятно, из-за перегрузки или технического обслуживания).
-
7. Семантическое понимание
- Делайте правильные вещи с правильным ярлыком!
-
htmlСемантическая — сделать содержимое страницы структурированным, что удобно для парсинга браузерами и поисковыми системами; - ни в каком стиле
CSSДела также отображаются в формате документа и легко читаются. - Сканеры поисковых систем полагаются на теги для определения контекста и веса отдельных ключевых слов, что полезно для
SEO. - Упростите для людей, которые читают исходный код, разделение веб-сайта на части для удобства чтения, обслуживания и понимания.
8. Расскажите о своем понимании ядра браузера?
Он в основном разделен на две части: движок рендеринга (
layout engineerилиRendering Engine)а такжеJSдвигательМеханизм рендеринга: отвечает за получение содержимого веб-страницы (
HTML,XML, изображения и т. д.), упорядочивать сообщения (например, добавлятьCSSд.), и вычисляет, как отображается веб-страница, которая затем выводится на монитор или принтер. Разные ядра браузеров по-разному интерпретируют синтаксис веб-страниц, поэтому эффекты рендеринга также будут разными. Ядро требуется для всех веб-браузеров, почтовых клиентов и других приложений, которым необходимо редактировать и отображать веб-контент.JSДвижок: разбор и выполнениеjavascriptДля достижения динамического эффекта веб-страницыИзначально движок рендеринга и
JSДвижок четко не выделяется, позже движок JS становился все более и более независимым, а ядро имело тенденцию ссылаться только на движок рендеринга.
9. Какие новые функции и элементы были удалены в html5?
-
HTML5не сейчасSGMLПодмножество, в основном касающееся изображений, местоположения, хранилища, многозадачности и т. д.- картина
canvas - для воспроизведения мультимедиа
videoа такжеaudioэлемент - локальное автономное хранилище
localStorageДолгосрочное хранение данных, данные не пропадут после закрытия браузера -
sessionStorageданные автоматически удаляются после закрытия браузера - Семантически улучшенные элементы контента, такие как
article,footer,header,nav,section - контроль формы,
calendar,date,time,email,url,search - Новая технология
webworker,websocket,Geolocation
- картина
-
Удалены элементы:
- Элементы чистого исполнения:
basefont,big,center,font,s,strike,тт, ты - Элементы, негативно влияющие на удобство использования:
frame,frameset,noframes
- Элементы чистого исполнения:
-
служба поддержки
HTML5Новая вкладка:-
IE8/IE7/IE6поддержка черезdocument.createElementметка, созданная методом - Вы можете использовать эту функцию, чтобы позволить этим браузерам поддерживать
持HTML5новая вкладка - После того, как браузер поддерживает новые вкладки, вам также необходимо добавить стиль вкладки по умолчанию.
-
Конечно, зрелые фреймворки также можно использовать напрямую, например
html5shim
10. Как использовать автономное хранилище HTML5, можете объяснить принцип работы?
Когда пользователь не подключен к Интернету, к сайту или приложению можно получить доступ в обычном режиме, а файл кеша на компьютере пользователя обновляется, когда пользователь подключен к Интернету.
принцип:
HTML5Автономное хранилище основано на недавно построенном.appcacheМеханизм кэширования (не технология хранения) для файлов, которые хранят ресурсы в автономном режиме через список разбора этого файла, который будет выглядеть какcookieто же самое хранилось. Позже, когда сеть отключена, браузер будет отображать страницу через данные, сохраненные в автономном режиме.-
как использовать:
- Добавьте заголовок, как показано ниже.
manifestхарактеристики; - существует
cache.manifestРесурсы для записи файлов для автономного хранения - В автономном режиме операция
window.applicationCacheОсуществлять реализацию требований
- Добавьте заголовок, как показано ниже.
CACHE MANIFEST
#v0.11
CACHE:
js/app.js
css/style.css
NETWORK:
resourse/logo.png
FALLBACK:
/ /offline.html
11. Как браузер управляет ресурсами автономного хранилища HTML5 и загружает их?
онлайн, браузер находит
htmlголова имеетmanifestсобственности, он запроситmanifestфайл, если к нему обращаются в первый разapp, то браузер загрузит соответствующие ресурсы в соответствии с содержимым файла манифеста и сохранит их в автономном режиме. если вы посетилиappИ ресурс был сохранен в автономном режиме, тогда браузер будет использовать автономный ресурс для загрузки страницы, а затем браузер сравнит новыйmanifestфайл со старымmanifest, если файл не изменился, ничего не делать, если файл изменился, то ресурсы в файле будут повторно загружены и сохранены в автономном режиме.В автономном режиме браузер напрямую использует ресурсы, хранящиеся в автономном режиме.
12. Пожалуйста, опишите разницу между файлами cookie, sessionStorage и localStorage?
cookieЧтобы отметить, что сайт - это данные пользователя, хранящиеся на локальном терминале пользователя (сторона клиента) (обычно зашифрованы)Данные cookie всегда передаются в HTTP-запросах одного и того же источника (даже если они не нужны) и передаются туда и обратно между браузером и сервером.
sessionStorageа такжеlocalStorageДанные не будут автоматически отправляться на сервер, а будут храниться только локально-
Размер хранилища:
-
cookieРазмер данных не может превышать 4k -
sessionStorageа такжеlocalStorageХотя есть ограничение на размер хранилища, но отношениеcookieГораздо больше, может достигать 5 м и более
-
-
Период:
-
localStorageХраните постоянные данные, данные не будут потеряны после закрытия браузера, если данные не будут активно удалены. -
sessionStorageДанные автоматически удаляются после закрытия текущего окна браузера -
cookieзадаватьcookieДействителен до истечения срока действия, даже если окно или браузер закрыты
-
13. Каковы недостатки iframe?
-
iframeзаблокирует главную страницуOnloadмероприятие - Поисковая программа поисковой системы не может интерпретировать такие страницы, что не способствует
SEO -
iframeПул подключений общий с главной страницей, а в браузере есть ограничения на подключение одного и того же домена, поэтому это повлияет на параллельную загрузку страницы - использовать
iframeЭти два недостатка необходимо учитывать заранее. При необходимости используйтеiframe, желательно черезjavascriptДинамичная давкаiframeДобавить кsrcзначение атрибута, которое может обойти две вышеупомянутые проблемы
14. Что такое стандарты WEB и стандарты W3C?
- Закрытые теги, строчные теги, отсутствие произвольной вложенности, использование внешних ссылок
cssа такжеjs, разделение структурного поведения
15. В чем разница между xhtml и html?
-
Одна из них — функциональное отличие.
- в основном
XHTMLСовместимость с основными браузерами, мобильными телефонами иPDA, а браузер так же быстро и корректно компилирует страницу
- в основном
-
Кроме того, разница в привычках письма
-
XHTMLЭлементы должны быть правильно вложены, закрыты, регистрозависимы, а документ должен иметь корневой элемент.
-
16. Какова роль Doctype Как отличить строгий режим от неразборчивого режима? Что они имеют в виду?
- Когда страница загружается,
linkбудет загружаться одновременно, а@imortКогда страница загружается,linkбудет загружаться одновременно, а@importцитируетсяCSSБудет ждать, пока страница загрузится перед загрузкой
importтолько вIE5можно определить по вышеизложенному иlinkдаXHTMLЯрлыки, нет проблем с совместимостью
linkВес стиля пути выше, чем@importвес -
<!DOCTYPE>Декларация находится в верхней части документа, в<html>перед этикеткой. Сообщите синтаксическому анализатору браузера, какую спецификацию типа документа использовать для анализа этого документа. - Типографика строгого режима и
JSРежим работы должен работать на самом высоком стандарте, поддерживаемом браузером. - В неразборчивом режиме страницы отображаются в свободной обратной совместимости. Эмулирует поведение старых браузеров, чтобы сайты не работали.
DOCTYPEНесуществующий или неправильно отформатированный документ отображается в неразборчивом режиме.
17. Что такое встроенные элементы? Что такое блочные элементы? Что такое пустые (void) элементы? В чем разница между встроенными элементами и элементами блочного уровня?
- Встроенные элементы:
a b span img input select strong - Элементы уровня блока:
div ul ol li dl dt dd h1 h2 h3 h4…p - Пустой элемент:
<br> <hr> <img> <input> <link> <meta> - Встроенные элементы не могут устанавливать ширину и высоту и не занимают одну строку.
- Элементы уровня блока могут иметь ширину и высоту, исключая одну строку
18. Что такое глобальные атрибуты HTML?
-
class: Установите идентификатор класса для элемента. -
data-*: добавление настраиваемых атрибутов к элементам. -
draggable: Установленные элементы пересекаются -
id: элементid, уникальный в пределах документа -
lang: язык содержимого элемента -
style: в линиюcssстиль -
title: Предлагаемая информация об элементе
19, Холст и SVG В чем разница?
-
svgКаждый нарисованный графический элемент независимDOMУзлы можно легко привязать к событиям или использовать для их изменения.canvasНа выходе - целое полотно -
svgВыходная графика представляет собой векторную графику, и параметры могут быть изменены для свободного увеличения и уменьшения масштаба на более позднем этапе без искажений и алиасинга. а такжеcanvasВыходной скалярный холст, как и изображение, масштабирование будет искажено или сглажено.
20. Почему HTML5 нужно только писать?
-
HTML5Не на основеSGML, так что не надоDTDцитировать, но нужноdoctypeрегулировать поведение браузера - а также
HTML4.01на основеSGML, поэтому необходимоDTDСсылки делаются, чтобы сообщить браузеру, какой тип документа использует документ.
21. Как реализовать круглую интерактивную область на странице?
svgborder-radius- чистый
jsРеализация требует простого алгоритма, чтобы определить, находится ли точка на окружности, получить координаты мыши и т. д.
22. Что такое проверочный код веб-страницы и какую проблему безопасности он должен решить?
- Общедоступная полностью автоматическая программа, которая различает, является ли пользователь компьютером или человеком. Это может предотвратить злонамеренный взлом паролей, считывание билетов и флуд на форуме.
- Эффективно предотвращайте постоянные попытки хакеров войти в систему для определенного зарегистрированного пользователя с помощью определенного метода взлома программы методом грубой силы.
Раздел $CSS
1. Что такое css спрайт и каковы его преимущества и недостатки
Концепция: сшивание нескольких маленьких картинок в одну картинку. пройти через
background-positionи настройка размера элемента должна отображать фоновый рисунок.-
преимущество:
- уменьшать
HTTPКоличество запросов, значительно повышающих скорость загрузки страницы - Увеличьте количество повторений информации об изображении, улучшите коэффициент сжатия и уменьшите размер изображения.
- Удобно изменить стиль, просто измените цвет или стиль на одном или нескольких изображениях, чтобы добиться
- уменьшать
-
недостаток:
- Проблемы со слиянием изображений
- Обслуживание проблематично, изменение изображения может потребовать изменения макета всего изображения, стиля
2. Разница между отображением: нет и видимостью: скрыто;
Контакт: они оба делают элемент невидимым
-
разница:
-
display:none; заставит элемент полностью исчезнуть из дерева рендеринга и не занимать места при рендеринге;visibility: hidden; не приводит к исчезновению элемента из дерева рендеринга, элемент рендерера продолжает занимать место, но содержимое не видно -
display: none; является ненаследуемым атрибутом, узел-потомок исчезает, поскольку элемент исчезает из дерева рендеринга и не может быть отображен путем изменения атрибута узла-потомка;visibility: hidden;Это унаследованное свойство, и узел-потомок исчезает из-за наследования.hidden, установивvisibility: visible;Вы можете сделать дочерние узлы явными - Измените элемент
displayОбычно вызывает перестановку документа. ИсправлятьvisibilityАтрибуты вызывают только перерисовку этого элемента. - Программы чтения с экрана не читают
display: none;Содержимое элемента;будет читатьvisibility: hidden;содержимое элемента
-
3. Разница между ссылкой и @import
-
linkдаHTMLСпособ,@importэто способ CSS -
linkМаксимальная поддержка параллельных загрузок,@importСлишком большая вложенность приводит к последовательной загрузке, появляющейсяFOUC -
linkв состоянии пройтиrel="alternate stylesheet"Укажите стили-кандидаты - пара браузеров
linkподдержку раньше, чем@import,можно использовать@importСкрыть стили для старых браузеров -
@importДолжны быть перед правилами стиля, на другие файлы можно ссылаться в файле css. - В основном:
linkлучше чем@import
4. Что такое FOUC и как этого избежать
-
Flash Of Unstyled Content: Браузер использует стиль по умолчанию для отображения документа перед загрузкой пользовательской таблицы стилей.После загрузки и отображения пользовательского стиля документ отображается снова, что приводит к мерцанию страницы. -
Решение: Поместите таблицу стилей в папку документа.
head
5. Как создать контекст форматирования блока (контекст форматирования блока), какая польза от BFC
-
Создайте правило:
- корневой элемент
- плавающий элемент (
floatнетnone) - Абсолютно позиционированные элементы (
positionстоимостьabsoluteилиfixed) -
displayстоимостьinline-block,table-cell,table-caption,flex,inline-flexодин из элементов -
overflowнетvisibleЭлементы
-
эффект:
- Может содержать плавающие элементы
- не покрыт плавающими элементами
- Блокировка родительских и дочерних элементов
marginскладывать
6. Взаимосвязь между отображением, поплавком и позицией
- если
displayдляnone,Такpositionа такжеfloatни один из них не работает, в этом случае элемент не создает поле - В противном случае, если
positionзначениеabsoluteилиfixed, коробка абсолютно позиционирована,floatрассчитывается какnone,displayВнесите коррективы в соответствии с таблицей ниже. - В противном случае, если
floatнетnone, коробка плавает,displayОтрегулируйте в соответствии с таблицей ниже - В противном случае, если элемент является корневым,
displayОтрегулируйте в соответствии с таблицей ниже - в других случаях
displayзначение указанного значения - Подводить итоги:Абсолютное позиционирование, плавающие, корневые элементы — все это необходимо настроить.
display
7. Есть несколько способов очистки поплавка, их преимущества и недостатки
- Отец
divопределениеheight - пусто в конце
divЭтикеткаclear:both - Отец
divопределять псевдоклассы:afterа такжеzoom - Отец
divопределениеoverflow:hidden - Отец
divТакже плавает, нужно определить ширину - добавить в конце
brЭтикеткаclear:both - Лучше использовать третий способ, которым пользуются многие сайты.
8. Зачем инициализировать стили CSS?
- Из-за проблем совместимости браузеров разные браузеры имеют разные значения по умолчанию для некоторых тегов.
CSSИнициализация имеет тенденцию показывать различия в отображении страниц между браузерами. - Конечно, стиль инициализации будет
SEOЕсть определенное влияние, но вы не можете иметь оба, но постарайтесь инициализировать с наименьшим влиянием
9. Какие новые возможности CSS3?
- добавить различные
cssСелектор - закругленные углы
border-radius - Многоколоночный макет
- тени и отражения
- текстовые эффекты
text-shadow - Линейный градиент
- вращать
transform
Какие новые псевдоклассы появились в CSS3?
-
p:first-of-typeВыбирает первый элемент, принадлежащий его родителю<p>каждый из элементов<p>элемент. -
p:last-of-typeвыбирает последний элемент, который принадлежит его родителю<p>каждый из элементов<p>элемент. -
p:only-of-typeВыборки, которые уникальны для его родительского элемента<p>каждый из элементов<p>элемент. -
p:only-childВыбирает каждый элемент, который является единственным дочерним элементом своего родительского элемента.<p>элемент. -
p:nth-child(2)Выбирает каждый элемент, который является вторым дочерним элементом его родительского элемента.<p>элемент. -
:afterДобавляет содержимое перед элементом, также может использоваться для очистки поплавков. -
:beforeдобавить содержимое после элемента :enabled-
:disabledУправляет отключенным состоянием элемента управления формы. -
:checkedПереключатели или флажок установлен
10. Какие значения отображения? объяснить их роль
-
blockОтображается как элемент блочного типа. -
noneЗначение по умолчанию. Выглядит как встроенные типы элементов. -
inline-blockОтображается как встроенный элемент, но его содержимое отображается как блочный элемент. -
list-itemОтображается как элемент блочного типа и добавляет стилизованные теги списка. -
tableЭтот элемент будет отображаться в виде таблицы блоков -
inheritУказывает, что он должен наследовать от родительского элементаdisplayстоимость имущества
11. Представляете стандартную блочную модель CSS? Чем отличается блочная модель младших версий IE?
- Есть два вида,
IEкоробочная модель,W3Cкоробочная модель; - Блочная модель: содержимое (содержание), заполнение (
padding),граница(margin), граница (border); - разница:
IEсontentчастично положитьborderа такжеpaddingрасчетный;
12. Как рассчитывается алгоритм приоритета CSS?
- Приоритетом является принцип близости, в случае одинакового веса преобладает наиболее близкое определение стиля.
- Стиль загрузки основан на последнем загруженном позиционировании.
- Приоритет:
!important > id > class > tagimportantболее высокий приоритет, чем встроенный
13. Как вы понимаете спецификацию BFC?
- Он определяет, как расположены элементы, а также их отношения и взаимодействие с другими элементами.
14. Поговорите о поплавках и очистке поплавков
- Плавающий блок можно перемещать влево или вправо, пока его внешний край не коснется границы содержащего блока или другого плавающего блока. Поскольку поплавок отсутствует в обычном потоке документа, блок-бокс нормального потока документа ведет себя так, как будто поплавка там не было. Плавающий блок-бокс будет плавать над блок-боксом в обычном потоке документа.
15. Значение положения, относительного и абсолютного начала позиционирования
-
absolute: Создание абсолютно позиционированных элементов относительноstaticРазместите первый родительский элемент, отличный от позиционирования -
fixed: генерировать абсолютно позиционированные элементы, расположенные относительно окна браузера. -
relative: Создает относительно позиционированный элемент, расположенный относительно его нормального положения. -
staticПо умолчанию. Без позиционирования элемент появляется в обычном потоке -
inheritуказывает наследование от родительского элементаpositionстоимость имущества
16. Когда display:inline-block не будет отображать пробел? (Поездка)
- удалить пробелы
- использовать
marginотрицательное значение - использовать
font-size:0 letter-spacingword-spacing
17. Разница между PNG, GIF и JPG и как выбрать
-
GIF-
8битовые пиксели,256цвет - сжатие без потерь
- Поддержка простой анимации
- служба поддержки
booleanПрозрачный - Подходит для простых анимаций.
-
-
JPEG- Цвета ограничены
256 - сжатие с потерями
- Контролируемое качество сжатия
- Прозрачность не поддерживается
- подходит для фотографий
- Цвета ограничены
-
PNG- имеют
PNG8а такжеtruecolor PNG -
PNG8аналогичныйGIFЦвет крышки есть256, маленький файл, поддержкаalphaПрозрачность, отсутствие анимации - Подходит для иконок, фонов, кнопок
- имеют
18. Становится ли встроенный элемент элементом уровня блока после float:left?
- После плавала встроенные элементы не становятся массивными элементами, но может быть предусмотрена ширина и высота. Стать массивной линией элементами в элементе, на линию, напрямую
display:block;. Но если элемент установлен, установите его обратно.display:block; он не займет ни одной строки.
19. Следует ли использовать на веб-страницах четные или нечетные шрифты? Зачем?
- Четные числа относительно легче масштабировать с остальной частью веб-дизайна.
20. В чем разница между двойным двоеточием и одинарным двоеточием в ::before и :after? Объясните роль этих двух псевдоэлементов.
- одно двоеточие (
:) для псевдоклассов CSS3 двойное двоеточие (::) дляCSS3псевдоэлемент - Используется для отличия псевдоклассов от псевдоэлементов.
21. Если вам нужно вручную писать анимацию, как вы думаете, какой минимальный интервал времени и почему? (Али)
- Частота по умолчанию для большинства мониторов
60Hz,Прямо сейчас1Обновить в считанные секунды60раз, поэтому теоретический минимальный интервал равен1/60*1000ms = 16.7ms
22. Метод слияния CSS
- избегать использования
@importимпортировать несколькоcssфайл, вы можете использоватьCSSинструмент будетCSSсливаться в одинCSSфайл, например, используяSass\CompassЖдать
23. Вес разных селекторов CSS (правила каскадирования CSS)
-
!importantПравила важнее других правил - Правила встроенного стиля, а также
1000 - для каждого из заданных селекторов
IDзначение атрибута плюс100 - Для каждого атрибута класса, селектора атрибута или селектора псевдокласса, заданного в селекторе, добавьте
10 - Добавьте 1, чтобы выбрать каждый селектор тега элемента, указанный в нем.
- Если веса совпадают, они применяются в соответствии с порядком правил стиля, и более поздние значения переопределяют более ранние.
24. Перечислите свойства, которые, как вы знаете, могут изменить макет страницы.
-
position,display,float,width,heighон,margin,padding,top,left,right,`
25, практика CSS с точки зрения оптимизации производительности
-
cssсжать и объединить,Gzipкомпрессия -
cssфайл вheadвнутри не использовать@import - Используйте как можно больше сокращений, избегайте фильтров и используйте селекторы с умом.
26. Анимация CSS3 (реализация простой анимации, например поворот и т.д.)
- полагаться на
CSS3Три свойства, предложенные в:transition,transform,animation -
transition: определяет, как выглядит элемент в процессе изменения, в том числеtransition-property,transition-duration,transition-timing-function,transition-delay. -
transform: определить результат изменения элемента, включаяrotate,scale,skew,translate. -
animation: Анимация определяет каждый кадр действия (@keyframes) имеет какое-либо влияние, в том числеanimation-name,animation-duration,animation-timing-function,animation-delay,animation-iteration-count,animation-direction
27. Принцип и преимущества и недостатки base64
- Преимущества могут быть зашифрованы,
httpпросить - Недостаток в том, что требуется
CPUкодек
28. Несколько распространенных макетов CSS
плавный макет
.left {
float: left;
width: 100px;
height: 200px;
background: red;
}
.right {
float: right;
width: 200px;
height: 200px;
background: blue;
}
.main {
margin-left: 120px;
margin-right: 220px;
height: 200px;
background: green;
}
<div class="container">
<div class="left"></div>
<div class="right"></div>
<div class="main"></div>
</div>
Макет Святого Грааля
.container {
margin-left: 120px;
margin-right: 220px;
}
.main {
float: left;
width: 100%;
height:300px;
background: green;
}
.left {
position: relative;
left: -120px;
float: left;
height: 300px;
width: 100px;
margin-left: -100%;
background: red;
}
.right {
position: relative;
right: -220px;
float: right;
height: 300px;
width: 200px;
margin-left: -200px;
background: blue;
}
<div class="container">
<div class="main"></div>
<div class="left"></div>
<div class="right"></div>
</div>
Двухстворчатая компоновка
.content {
float: left;
width: 100%;
}
.main {
height: 200px;
margin-left: 110px;
margin-right: 220px;
background: green;
}
.main::after {
content: '';
display: block;
font-size:0;
height: 0;
zoom: 1;
clear: both;
}
.left {
float:left;
height: 200px;
width: 100px;
margin-left: -100%;
background: red;
}
.right {
float: right;
height: 200px;
width: 200px;
margin-left: -200px;
background: blue;
}
<div class="content">
<div class="main"></div>
</div>
<div class="left"></div>
<div class="right"></div>
29. Разница между stylus/sass/less
- Все они имеют пять основных характеристик: «переменная», «смешение», «вложение», «наследование» и «смешение цветов».
-
Scssа такжеLESSГрамматика строже,LESSНеобходимо использовать фигурные скобки "{}",Scssа такжеStylusИерархические и вложенные отношения могут быть представлены отступом -
Scssнет понятия глобальных переменных,LESSа такжеStylusСовокупная концепция, аналогичная другим языкам -
Sassосновывается наRubyязык иLESSа такжеStylusможет основываться наNodeJSNPMСкачав соответствующую библиотеку, скомпилируйте ее;
30. Роль postcss
- Интуитивно это можно понять так: это платформа. Зачем называть это платформой? Поскольку мы используем его напрямую, кажется, что мы ничего не можем сделать, но если вы позволите некоторым плагинам работать на нем, это будет очень мощно.
-
PostCSSпредоставляет анализатор, который преобразуетCSSРазобрать в абстрактное синтаксическое дерево - в
PostCSSНа этой платформе мы можем разработать некоторые плагины для обработки нашихCSS, такие как популярные:autoprefixer -
postcssможет быть обработан sasscssОбработка самых распространенныхautoprefixer
$JavaScript
1. Закрытие
Замыкания — это функции, которые могут читать переменные внутри других функций.
Замыкание — это функция, которая имеет доступ к переменным в области действия другой функции. Наиболее распространенный способ создания замыкания — создать другую функцию внутри функции и получить доступ к локальным переменным этой функции через другую функцию. масштаб
-
Особенности закрытия:
- функция внутри функции
- Внутренние функции могут ссылаться на внешние параметры и переменные.
- Параметры и переменные не будут собираться механизмом сборки мусора.
Расскажите мне о своем понимании замыканий
Замыкания в основном используются для разработки частных методов и переменных. Преимущество замыкания в том, что оно позволяет избежать загрязнения глобальных переменных. Недостаток в том, что замыкание будет находиться в памяти, что увеличит объем используемой памяти. Неправильное использование может легко привести к утечке памяти. В js функции являются замыканиями, и только функции генерируют концепцию области видимости.
Есть два самых больших применения замыканий: одно — чтение переменных внутри функции, а другое — постоянное хранение этих переменных в памяти.
Другое использование замыканий — инкапсуляция частных свойств и частных методов объекта.
выгода: Включить упаковку и кеш и т. Д.;
вред: Это проблема потребления памяти и неправильного использования, которая вызовет переполнение памяти.
Примечания по использованию замыканий
- Поскольку замыкание заставит переменные в функции храниться в памяти, потребление памяти очень велико, поэтому замыканием нельзя злоупотреблять, иначе это вызовет проблемы с производительностью веб-страницы, что может привести к утечкам памяти в IE.
- Решение состоит в том, чтобы удалить все неиспользуемые локальные переменные перед выходом из функции.
2. Расскажите о своем понимании цепочки задач
- Роль состоит в том, чтобы гарантировать, что переменные и функции выполнения цепей объема и функции имеют доступ к упорядоченному доступу, переменная цепи объема может получить доступ только к переменной доступу к
windowОбъект завершается, и доступ к переменным ниже по цепочке областей видимости запрещен. - Проще говоря, область видимости — это доступная область видимости переменных и функций, то есть область видимости управляет видимостью и жизненным циклом переменных и функций.
3. Прототип JavaScript, цепочка прототипов, каковы характеристики?
Каждый объект инициализирует внутри себя свойство, которое
prototype(прототип), когда мы обращаемся к свойству объектаЕсли этого свойства внутри этого объекта нет, то он уйдет в
prototypeнайти это свойство в个prototypeбудет иметь свой собственныйprototype, поэтому мы продолжаем его искать, что и является концепцией цепочки прототипов, которую мы обычно называемсвязь:
instance.constructor.prototype = instance.__proto__-
Функции:
-
JavaScriptОбъекты передаются по ссылке, и каждая новая объектная сущность, которую мы создаем, не имеет собственной копии прототипа. Когда мы модифицируем прототип, связанные с ним объекты также наследуют изменение
-
Когда нам нужен атрибут,
JavascriptДвижок сначала увидит, есть ли это свойство в текущем объекте, если нетнайдет его
PrototypeБыл ли извлечен объект с этим атрибутом и т. д. рекурсивноObjectвстроенные объекты
4. Пожалуйста, объясните, что такое брокер событий
- Брокер событий (
Event Delegation), также известный как делегирование события. даJavaScriptОбщие методы связывания событий, обычно используемые в . Как следует из названия, «прокси событий» должен делегировать события, которые необходимо привязать к родительскому элементу, и позволить родительскому элементу взять на себя роль мониторинга событий. Принцип делегирования событий — всплытие событий DOM-элементов. Преимущество использования брокера событий заключается в том, что он может повысить производительность. - Это может сэкономить много памяти и уменьшить количество регистраций событий, например, в
tableВсе на агентеtdизclickсобытие отличное - Можно добиться того, чтобы при добавлении дочернего объекта его не нужно было связывать снова.
5. Как Javascript реализует наследование?
Конструктивное наследование
прототипное наследование
наследование экземпляра
копирование наследства
прототип
prototypeмеханизм илиapplyа такжеcallМетод относительно прост в реализации, рекомендуется использовать смесь конструкторов и прототипов.
function Parent(){
this.name = 'wang';
}
function Child(){
this.age = 28;
}
Child.prototype = new Parent();//继承了Parent,通过原型
var demo = new Child();
alert(demo.age);
alert(demo.name);//得到被继承的属性
}
6. Расскажите о понимании этого объекта
-
thisвсегда относится к прямому вызывающему объекту функции (а не к косвенному вызывающему) - Если есть
newключевые слова,thisнаправлениеnewобъект, который вышел - В случае,
thisУказывает на объект, вызвавший это событие, в частности,IEсерединаattachEventсерединаthisвсегда указывает на глобальный объектWindow
7. Модель событий
W3CВозникновение событий, определенных вcapturing), целевой этап (targetin), стадия пузырения (bubbling)
- Всплывающие события: при использовании всплывающих событий сначала срабатывает дочерний элемент, а затем родительский элемент.
- Захваченные события: когда вы используете захват событий, родительский элемент срабатывает первым, а дочерний элемент срабатывает позже.
-
DOMПотоковая передача событий: поддерживает обе модели событий: захват событий и всплывающие события. - Хватит булькать: в
W3cв использованииstopPropagation()Метод; устанавливается в IEcancelBubble = true - Блокировать захват: блокирует поведение событий по умолчанию, например.
click - <a>Прыгай следом. существуетW3cв использованииpreventDefault()метод, вIEв настройкахwindow.event.returnValue = false
8. Что именно делает новый оператор?
- создает пустой объект и
thisПеременная ссылается на объект, а также наследует прототип функции. - Свойства и методы добавляются в
thisв указанном объекте - Вновь созданный объект создается
thisссылается и, наконец, неявно возвращаетсяthis
9. Принцип Аякса
-
AjaxПринцип заключается в простом добавлении промежуточного слоя между пользователем и сервером (AJAXдвигатель), черезXmlHttpRequestобъект для отправки асинхронных запросов на сервер, получения данных с сервера, а затем использованияjavascripт работатьDOMИ обновить страницу. Асинхронные действия пользователя и ответы сервера. Наиболее важным шагом в этом является получение данных запроса с сервера. -
AjaxВ процессе участвуют толькоJavaScript,XMLHttpRequestа такжеDOM.XMLHttpRequestдаajaОсновной механизм x
// 1. 创建连接
var xhr = null;
xhr = new XMLHttpRequest()
// 2. 连接服务器
xhr.open('get', url, true)
// 3. 发送请求
xhr.send(null);
// 4. 接受请求
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if(xhr.status == 200){
success(xhr.responseText);
} else { // fail
fail && fail(xhr.status);
}
}
}
Каковы преимущества и недостатки ajax?
- преимущество:
- Благодаря асинхронному режиму пользовательский опыт улучшается.
- Оптимизируйте передачу между браузером и сервером, уменьшите количество ненужных циклов передачи данных и уменьшите использование полосы пропускания.
-
AjaxЗапуск на стороне клиента берет на себя часть работы, изначально взятой на себя сервером, что снижает нагрузку на сервер при большом количестве пользователей. -
AjaxМожет быть достигнуто динамическое отсутствие обновления (частичное обновление).
- недостаток:
- безопасный вопрос
AJAXРаскрывает детали взаимодействия с сервером. - Поддержка поисковых систем относительно слабая.
- Не легко отлаживать.
- безопасный вопрос
10, как решить междоменные проблемы?
-
jsonp,iframe,window.name,window.postMessage, Установить прокси-страницу на сервере
11. Как сделать модульную разработку?
- Выполнение функции немедленно, без раскрытия закрытых членов
var module1 = (function(){
var _count = 0;
var m1 = function(){
//...
};
var m2 = function(){
//...
};
return {
m1 : m1,
m2 : m2
};
})();
12. Какие есть способы асинхронной загрузки JS?
- отложить, только поддерживает
IE -
async: - Создайте
script, вставленный вDOM, после загрузкиcallBack
13. Какие операции вызовут утечку памяти?
- Утечка памяти — это любой объект, который сохраняется после того, как он вам больше не нужен или больше не нужен.
-
setTimeoutИспользование строки вместо функции в качестве первого параметра приведет к утечке памяти - Неправильное использование замыканий
14. В чем разница между XML и JSON?
-
объем данных
-
JSONотносительно于XMLДругими словами, чем меньше размер данных, тем выше скорость передачи.
-
-
-
JSONJavaScript
-
-
-
JSONXML
-
-
-
JSONXML
-
15. Расскажите о своих мыслях о webpack
-
WebPackэто инструмент для упаковки модулей, вы можете использоватьWebPackУправляйте зависимостями модулей и компилируйте статические файлы, необходимые для экспорта модулей. Управляется, хорошо упаковываетWebиспользуется в разработкеHTML,Javascript,CSSИ различные статические файлы (изображения, шрифты и т.д.), чтобы сделать процесс разработки более эффективным. Для разных типов ресурсов,webpackИмеется соответствующий загрузчик модулей.webpackУпаковщик модулей проанализирует зависимости между модулями и, наконец, сгенерирует оптимизированные и объединенные статические ресурсы.
16. Расскажите о своем понимании AMD и Commonjs
-
CommonJSспецификация серверного модуля,Node.jsпринял эту спецификацию.CommonJSКанонический загрузочный модуль является синхронным, то есть только после завершения загрузки можно выполнять последующие операции.AMDСпецификация заключается в асинхронной загрузке модулей, что позволяет указывать функции обратного вызова. -
AMDРекомендуемый стиль - возвращать объект как объект модуля,CommonJSстиль по парамmodule.exportsилиexportsНазначение атрибута для достижения цели предоставления объекта модуля
17. Общие принципы веб-безопасности и защиты
-
sqlПринцип впрыска- поставив
SQLВставить команду вWebОтправьте форму или введите строку запроса доменного имени или запроса страницы и, наконец, обманите сервер для выполнения вредоносных команд SQL.
- поставив
-
В общем есть следующие
- Никогда не доверяйте вводу пользователя. Чтобы проверить ввод пользователя, вы можете использовать регулярные выражения или ограничить длину одинарных и двойных кавычек.
"-"конвертировать и т.д. - Никогда не используйте динамическую сборку SQL, используйте параметризованный
SQLИли напрямую используйте хранимые процедуры для доступа к данным - Никогда не используйте подключения к базе данных с правами администратора, используйте отдельные подключения к базе данных с ограниченными правами для каждого приложения.
- Не храните конфиденциальную информацию в открытом виде, зашифруйте или
hashСбросьте пароли и конфиденциальную информацию
- Никогда не доверяйте вводу пользователя. Чтобы проверить ввод пользователя, вы можете использовать регулярные выражения или ограничить длину одинарных и двойных кавычек.
Принцип XSS и предотвращение
-
Xss(cross-site scripting)Атака означает, что злоумышленникWebВставка злонамеренного намерения на страницуhtmlэтикетка илиjavascriptкод.比如:攻击者在论坛中放一个看似安全的链接,骗取用户点击后,窃取cookieПользовательская личная информация; или злоумышленник добавил форум злонамеренной формы, когда пользователь представляет форму, но передаю информацию на сервер злоумышленника, а не изначально подумал пользователь доверенных сайтов
Методы предотвращения XSS
- Прежде всего, необходимо тщательно проверить места ввода пользователем и переменные в коде на предмет длины и совпадения.
”<”,”>”,”;”,”’”Дождитесь фильтрации символов, во-вторых, любой контент должен быть закодирован перед записью на страницу, чтобы избежать случайной записиhtml tagПолучить это. Успех на этом уровне может по крайней мере заблокировать более половины XSS-атак.
Есть ли разница между XSS и CSRF?
XSSЭто получение информации без предварительного знания кода и пакетов данных других пользовательских страниц.CSRFЭто заключается в том, чтобы завершить указанное действие от имени пользователя и необходимо знать код и пакеты данных других страниц пользователей. завершить один разCSRFатака, жертва должна последовательно выполнить два шагаВойдите на надежные сайты
Aи генерировать локальноCookieбез выхода
Aбез посещения опасных сайтовB
Защита CSRF
- серверная часть
CSRFСпособов и способов много, но общая идея одна, то есть добавление псевдослучайных чисел на страницу клиента - Как пройти код подтверждения
18. Какие шаблоны проектирования вы использовали?
-
Заводской узор:
- Фабричный шаблон решает проблему повторного создания экземпляров, но есть и другая проблема — проблема идентификации, потому что нет способа
- Основным преимуществом является то, что связь между объектами может быть устранена, используя инженерные методы вместо
newключевые слова
-
Шаблон конструктора
- Метод использования конструктора не только решает проблему повторной инстанциации, но и решает проблему распознавания объектов Отличие этого режима от фабричного заключается в том, что
- Назначайте свойства и методы непосредственно
thisобъект;
19. Почему существует ограничение по гомологии?
- Политика происхождения означает: имя протокола, тот же порт, та же политика происхождения является протоколом безопасности.
- Пример: Например, хакерская программа, использующая
IframeВстроить на его страницу настоящую страницу входа в банк, при входе с реальным логином и паролем доступ к его странице возможен черезJavascriptчитать в вашей формеinputТаким образом, имя пользователя и пароль могут быть легко получены.
20. Разница между offsetWidth/offsetHeight, clientWidth/clientHeight и scrollWidth/scrollHeight
-
offsetWidth/offsetHeightвозвращаемое значение содержитcontent + padding + border, эффект такой же, как у e.getBoundingClientRect() -
clientWidth/clientHeightВозвращаемое значение содержит толькоcontent + padding, если есть полосы прокрутки, такжеНе включает полосы прокрутки -
scrollWidth/scrollHeightвозвращаемое значение содержитсодержимое + заполнение + размер переполняющего содержимого
21. Какие методы есть в javascript для определения объектов?
- Литералы объекта:
var obj = {}; - Конструктор:
var obj = new Object(); - Object.create():
var obj = Object.create(Object.prototype);
22. Распространенные проблемы совместимости?
-
png24В браузере iE6 появляются фоновые изображения, решение состоит в том, чтобы сделатьPNG8 - браузер по умолчанию
marginа такжеpaddingразные. Решение состоит в том, чтобы добавить глобальный*{margin:0;padding:0;}Объединить, но общая эффективность очень низкая, как правило, решается следующим образом:
body,ul,li,ol,dl,dt,dd,form,input,h1,h2,h3,h4,h5,h6,p{
margin:0;
padding:0;
}
-
IEВниз,eventобъект имеетx,yсвойства, но нетpageX,pageYАтрибуты -
FirefoxВниз,eventобъект имеетpageX,pageYсвойства, но нетx,yАтрибуты.
22. Расскажите мне о своем понимании обещаний
-
согласно с
Promise/A+Определение,PromiseЕсть четыре состояния:pending:исходное состояние, неfulfilledилиrejected.fulfilled:Успешная операция.rejected:неудачная операция.settled: PromiseБылfulfilledилиrejected, и неpending
Кроме того,
fulfilledа такжеrejectedколлективноsettledPromiseобъект используется для отложенного (deferred) и асинхронный (asynchronous) рассчитать
Конструктор обещаний
- построить
Promise, самое основное использование выглядит следующим образом:
var promise = new Promise(function(resolve, reject) {
if (...) { // succeed
resolve(result);
} else { // fails
reject(Error(errMessage));
}
});
-
Promiseэкземпляр владеетthenметод (сthenметод объекта, обычно называемыйthenable). Он используется следующим образом:
promise.then(onFulfilled, onRejected)
- Получает две функции в качестве параметров, одну в
fulfilledназывается, когдаrejectedвызывается, когда полученный параметрfuture,onFulfilledвести перепискуresolve,onRejectedвести перепискуreject
23. Как вы думаете, где лучше всего писать исходный код jQuery?
-
jqueryИсходный код инкапсулируется в самовыполняющееся окружение анонимной функции, что помогает предотвратить глобальное загрязнение переменных, а затем передается вwindowпараметр объекта, вы можете сделатьwindowОбъекты используются как локальные переменные, преимущество в том, что когдаjqueryдоступ вwindowобъекта, нет необходимости возвращать цепочку областей видимости в область видимости верхнего уровня, чтобы к объекту окна можно было получить доступ быстрее. Так же пройти вundefinedпараметр для сокращения поискаundefinedцепочка прицелов -
jqueryНекоторые свойства и методы прототипа инкапсулированы вjquery.prototype, в целях сокращения имени ему присвоеноjquery.fn, что является очень образным способом написания - Есть некоторые методы массива или объекта, которые можно часто использовать,
jQueryсохранить его как локальную переменную для более быстрого доступа -
jqueryРеализованные цепные вызовы могут сэкономить код, и все они возвращают один и тот же объект, что может повысить эффективность кода.
24. vue, реагировать, угловой
Vue.js
один для созданияwebБиблиотека интерактивных интерфейсов, оптимизированнаяMVVM. Он использует двустороннюю привязку данных кViewслой иModelслои связаны. действительныйDOMИ инкапсуляция, и формат вывода абстрагируются отDirectivesа такжеFiltersAngularJS
является относительно полным интерфейсомMVVMFramework, включая шаблоны, двустороннюю привязку данных, маршрутизацию, модульность, сервисы, внедрение зависимостей и другие функции.Angularинструкцияreact
ReactТолько чтоVIEWслойfacebookКомпания. Тот, что запущен для строительстваUIБиблиотека, обеспечивающая рендеринг на стороне сервера. использовалvirtual dom, так что производительность хорошая.
25. Сценарии применения Node
-
Функции:
- 1. Это
JavascriptРабочая среда - 2. зависит от
Chrome V8движок для интерпретации кода - 3. Ориентированность на события
- 4. Неблокирующий
I/O - 5, один процесс, один поток
- 1. Это
-
преимущество:
- Высокий параллелизм (наиболее важное преимущество)
-
недостаток:
- 1. Поддерживать только одиночные
核CPU, используется не полностьюCPU - 2. Низкая надежность: при выходе из строя определенного звена кода рушится вся система.
- 1. Поддерживать только одиночные
26. Расскажите о своем понимании AMD и CMD.
CommonJSспецификация серверного модуля,Node.jsпринял эту спецификацию.CommonJSКанонический загрузочный модуль является синхронным, то есть только после завершения загрузки можно выполнять последующие операции.AMDСпецификация заключается в асинхронной загрузке модулей, что позволяет указывать функции обратного вызова.AMDРекомендуемый стиль - возвращать объект как объект модуля,CommonJSстиль по парамmodule.exportsилиexportsНазначение атрибута для достижения цели предоставления объекта модуля
27. Какие операции вызовут утечку памяти?
- Утечка памяти — это любой объект, который сохраняется после того, как он вам больше не нужен или больше не нужен.
-
setTimeoutИспользование строки вместо функции в качестве первого параметра приведет к утечке памяти - Замыкания, журналы консоли, циклы (цикл возникает, когда два объекта ссылаются друг на друга и сохраняют друг друга)
28. Какие есть методы отслеживания сессий в веб-разработке
cookiesession-
urlпереписать - Спрятать
input -
ipадрес
29. Познакомьтесь с основными типами данных js
-
Undefined,Null,Boolean,Number,String
30. Какие есть встроенные объекты js?
-
ObjectдаJavaScriptродитель всех объектов в - Объект класса инкапсуляции данных:
Object,Array,Boolean,Numberа такжеString - Другие объекты:
Function,Arguments,Math,Date,RegExp,Error
31. Расскажите несколько основных правил написания JavaScript?
- Не объявляйте несколько переменных в одной строке
- пожалуйста, используйте
===/!==сравниватьtrue/falseили числовое значение - Используйте замену литерала объекта
new Arrayэта форма - не используйте глобальные функции
-
Switchзаявление должно иметьdefaultветвь -
IfОператоры должны использовать фигурные скобки -
for-inСледует использовать переменную в циклеvarКлючевые слова явно ограничивают область действия, чтобы избежать ее загрязнения.
32, JavaScript есть несколько типов стоимости? Можете ли вы сделать карту памяти?
- стек: примитивный тип данных (
Undefined,Null,Boolean,Numbeдень,String) - Куча: ссылочные типы данных (объекты, массивы и функции)
- Разница между двумя типами заключается в следующем: место хранения отличается;
- Примитивные типы данных хранятся непосредственно в стеке (
stack) в простом сегменте данных, который занимает мало места и имеет фиксированный размер, а также является часто используемыми данными, поэтому хранится в стеке; - Ссылочные типы данных хранятся в куче (
heap) у объекта, занимающего большое пространство, размер не фиксирован, если хранить в стеке, это повлияет на производительность программы; эталонный тип данных хранит указатель в стеке, указатель указывает на начальный адрес сущность в куче. Когда интерпретатор ищет ссылочное значение, он сначала извлекает его - Адрес в стеке, получить сущность из кучи после получения адреса
33. Сколько способов javascript создает объекты?
javascriptПроще говоря, создание объектов — это не что иное, как использование встроенных объектов или различных пользовательских объектов.Конечно, вы также можете использоватьJSON; но есть много способов написать это, а также можно смешивать
- Буквальный способ объекта
person={firstname:"Mark",lastname:"Yun",age:25,eyecolor:"black"};
- использовать
functionдля имитации конструктора без аргументов
function Person(){}
var person=new Person();//定义一个function,如果使用new"实例化",该function可以看作是一个Class
person.name="Mark";
person.age="25";
person.work=function(){
alert(person.name+" hello...");
}
person.work();
- использовать
functionЧтобы смоделировать конструктор параметров для достижения (сthisключевое слово определяет атрибут контекста конструкции)
function Pet(name,age,hobby){
this.name=name;//this作用域:当前对象
this.age=age;
this.hobby=hobby;
this.eat=function(){
alert("我叫"+this.name+",我喜欢"+this.hobby+",是个程序员");
}
}
var maidou =new Pet("麦兜",25,"coding");//实例化、创建对象
maidou.eat();//调用eat方法
- Использовать фабричный метод для создания (встроенный объект)
var wcDog =new Object();
wcDog.name="旺财";
wcDog.age=3;
wcDog.work=function(){
alert("我是"+wcDog.name+",汪汪汪......");
}
wcDog.work();
- Создание с прототипированием
function Dog(){
}
Dog.prototype.name="旺财";
Dog.prototype.eat=function(){
alert(this.name+"是个吃货");
}
var wangcai =new Dog();
wangcai.eat();
- Создать с помощью микса
function Car(name,price){
this.name=name;
this.price=price;
}
Car.prototype.sell=function(){
alert("我是"+this.name+",我现在卖"+this.price+"万元");
}
var camry =new Car("凯美瑞",27);
camry.sell();
34. Что делает eval?
- Его функция состоит в том, чтобы разобрать соответствующую строку на
JSкод и запустить - следует избегать
eval, небезопасно, очень требовательно к производительности (2раз, после анализа вjsоператор, выполненный один раз) - Зависит от
JSONМожет использоваться при преобразовании строк в объекты JSON.eval,var obj =eval('('+ str +')')
35. В чем разница между null и undefined?
undefinedУказывает, что это значение не существует.undefined: это необработанное значение, означающее «нет» или «отсутствующее значение», то есть здесь должно быть значение, но оно еще не определено. вернется при попытке прочитатьundefinedНапример, когда переменная объявлена, но ей не присвоено значение, она равна
undefinednullУказывает, что объект определен и значение равно null.null: это объект (пустой объект, без свойств и методов)Например, как параметр функции означает, что параметр функции не является объектом;
Проверять
null, обязательно используйте===,потому что==неразлучныйnullа такжеundefined
36. Каков ответ ["1", "2", "3"].map(parseInt)?
-
[1, NaN, NaN]потому чтоparseIntтребует два параметра(val, radix),вradixУказывает систему счисления, используемую для синтаксического анализа. -
mapпрошел дальше3индивидуальный(element, index, array),соответствующийradixОшибка синтаксического анализа.
37. Что означает "использовать строго" в коде javascript? В чем разница между его использованием?
-
use strictэтоECMAscript 5Добавлен (строгий) режим запуска, который заставляет Javascript выполняться в более строгих условиях, что делаетJSкодирует более нормализованный шаблон, устраняяJavascriptНекоторые необоснованные и неточные грамматические моменты уменьшают некоторые странности поведения
38. Понимание JSON?
JSON(JavaScript Object Notation)это облегченный формат обмена даннымиэто основано на
JavaScriptПодмножество. Формат данных прост, удобен для чтения и записи и занимает небольшую полосу пропускания.JSONПреобразование строки в объект JSON:
var obj =eval('('+ str +')');
var obj = str.parseJSON();
var obj = JSON.parse(str);
-
JSONОбъект преобразован в строку JSON:
var last=obj.toJSONString();
var last=JSON.stringify(obj);
39. Какие есть способы ленивой загрузки js?
-
deferа такжеasync, динамически созданныйDOMметод (наиболее используемый), асинхронная загрузка по запросуjs
40, синхронная и асинхронная разница?
- Синхронизация: браузер получает доступ к запросу сервера, пользователь может видеть обновление страницы, и запрос отправляется повторно.После выполнения запроса страница обновляется, появляется новый контент, пользователь видит новый контент и выполняется следующая операция.
- Асинхронный: браузер получает доступ к запросу сервера, пользователь работает нормально, а серверная часть браузера выполняет запрос. После выполнения запроса страница не обновляется, новый контент тоже появится, и пользователь увидит новый контент
41. Прогрессивное улучшение и изящная деградация
Прогрессивное улучшение: создавайте страницы для браузеров с низкими версиями, чтобы обеспечить самые основные функции, а затем улучшайте эффекты, взаимодействия и дополнительные функции для продвинутых браузеров, чтобы улучшить взаимодействие с пользователем.
Изящная деградация: создайте полную функциональность с самого начала, а затем сделайте ее совместимой со старыми браузерами.
42. отложить и асинхронно
-
deferпараллельная загрузкаjsфайл, будет следовать инструкциям на страницеscriptПоследовательное выполнение тегов -
asyncпараллельная загрузкаjsфайл, загрузка завершается и выполняется немедленно и не следует инструкциям на страницеscriptПоследовательное выполнение тегов
43. Расскажите об ограничениях строгого режима
- Переменные должны быть объявлены перед использованием
- Параметры функции не могут иметь атрибуты с одинаковыми именами, иначе будет сообщено об ошибке
- нельзя использовать
withутверждение - запретить
thisуказывает на глобальный объект
44. В чем разница между атрибутом и свойством?
-
attributeдаdomэлемент в документе какhtmlАтрибут метки; -
propertyто естьdomэлемент вjsв собственности, как объект имеет. - для
htmlДля стандартных свойств ,attributeа такжеpropertyОн синхронизирован, он будет обновляться автоматически - Но для пользовательских свойств они не синхронизированы.
45. Расскажите о своем понимании ES6
- Новая строка шаблона (для
JavaScriptПредусмотрена простая интерполяция строк) - стрелочная функция
-
for-of(Используется для перебора данных — например, значений в массиве.) -
argumentsОбъекты можно прекрасно заменить неопределенными параметрами и параметрами по умолчанию. -
ES6поставь пromiseобъектов в спецификацию, предоставляя собственныйPromiseобъект. - повысился
letа такжеconstкоманда, используемая для объявления переменных. - Добавлена область действия блока.
-
letКоманда фактически добавляет область на уровне блоков. - Также происходит введение
moduleконцепция модуля
46. Как написать класс в ECMAScript6, почему появляется что-то вроде класса?
- Этот синтаксический сахар позволяет иметь
OOPПростые люди приступают к работе быстрееjs, хотя бы официальная реализация - но знаком с
jsна людей эта штука не оказывает большого влияния;Object.creat()Получить наследство, чемclassгораздо яснее
47. Что такое объектно-ориентированное программирование и процедурное программирование, их сходства и различия, преимущества и недостатки.
- Ориентированность на процесс заключается в том, чтобы анализировать шаги, необходимые для решения проблемы, а затем использовать функции для пошаговой реализации этих шагов.При использовании вы можете вызывать их один за другим.
- Объектно-ориентированный - разложить транзакцию, составляющую проблему, на различные объекты. Цель создания объекта - не завершить шаг, а описать поведение определенной вещи на всем шаге решения проблемы.
- Object Orientation делит задачу по функциям, а не по шагам
48. Идеи объектно-ориентированного программирования
- Основная идея заключается в использовании основных концепций объектов, классов, наследования, инкапсуляции и т. д. для программирования.
- преимущество
- Простота обслуживания
- Структура, разработанная с помощью объектно-ориентированного мышления, имеет высокую читабельность.Из-за наличия наследования, даже если требования изменяются, обслуживание осуществляется только в локальных модулях, поэтому его очень удобно и недорого поддерживать.
- Легко расширить
- Возможность повторного использования и наследования разработки высока, а повторяющаяся рабочая нагрузка снижается.
- Сокращенный цикл разработки
- Простота обслуживания
49. Понимание веб-стандартов, удобство использования, доступность
- Юзабилити: насколько продукт прост в использовании, может ли пользователь выполнить задачу, насколько он эффективен и насколько хорош субъективный опыт пользователя в процессе — это качество продукта с точки зрения пользователя. Хорошее удобство использования означает высокое качество продукции и является основой конкурентоспособности предприятия.
- Доступность: удобочитаемость и понимание веб-контента для пользователей с ограниченными возможностями.
- Ремонтопригодность (Maintainability): обычно включает два уровня, один — это стоимость быстрого обнаружения и решения проблемы, когда в системе возникла проблема, а низкая стоимость означает хорошую ремонтопригодность. Во-вторых, легко ли понять код, легко ли его модифицировать и улучшить.
50. Как судить о массиве через JS?
-
instanceofметод-
instanceofОператоры — это свойства, используемые для проверки того, находится ли объект в конструкторе прототипов цепочки прототипов.
-
var arr = [];
arr instanceof Array; // true
-
constructorметод-
constructorСвойство возвращает ссылку на функцию массива, создавшую этот объект, которая является конструктором, соответствующим возвращаемому объекту.
-
var arr = [];
arr.constructor == Array; //true
- Самый простой способ
- Это написание
jQueryВ настоящее время используется
- Это написание
Object.prototype.toString.call(value) == '[object Array]'
// 利用这个方法,可以写一个返回数据类型的方法
var isType = function (obj) {
return Object.prototype.toString.call(obj).slice(8,-1);
}
-
ES5новый методisArray()
var a = new Array(123);
var b = new Date();
console.log(Array.isArray(a)); //true
console.log(Array.isArray(b)); //false
51. Расскажите о разнице между let и var?
-
letДля команды нет подъема переменной, если вletЕсли использовать раньше, это вызовет ошибку - Если блок существует
letа такжеconstкоманда, она сформирует объемлющую область - Повторяющиеся объявления не допускаются, поэтому параметры не могут быть повторно объявлены внутри функции.
52. В чем разница между map и forEach?
- Метод forEach является самым основным методом, который заключается в обходе и цикле.По умолчанию есть три параметра: элемент содержимого пройденного массива, индекс индекса массива и текущий массив пройденного массива.
- Основное использование метода map такое же, как и для forEach, но другое, он возвращает новый массив, поэтому в обратном вызове должно быть возвращаемое значение, если нет, он вернет undefined
53. Расскажите о функциональном программировании, которое вы понимаете?
- Проще говоря, «функциональное программирование» — это «парадигма программирования», то есть методология написания программ.
- Он имеет следующие свойства: замыкания и функции высшего порядка, ленивые вычисления, рекурсия, функции являются «первоклассными гражданами», используются только «выражения».
54. Расскажите о разнице между стрелочными функциями и обычными функциями?
- Объект this в теле функции — это объект, в котором он определен, а не объект, в котором он используется.
- Нельзя использовать как конструктор, то есть нельзя использовать новую команду, иначе будет выброшена ошибка
- Вы не можете использовать объект arguments, которого нет в теле функции. Если вы хотите использовать его, вы можете вместо этого использовать параметры Rest.
- Команду yield нельзя использовать, поэтому функции стрелок нельзя использовать в качестве функций генератора.
55. Говорите об указании this в функции?
Указание this не может быть определено, когда функция определена.Только когда функция выполняется, можно определить, на кого this указывает.Фактически, конечная точка this - это объект, который ее вызвал.
«Сущность языка Javascript», вероятно, выражена в четырех вызовах:
шаблон вызова метода
шаблон вызова функции
Шаблон вызова конструктора
graph LR
A-->B
- применить/вызов режима вызова
56. Как реализовано асинхронное программирование?
-
Перезвоните
- Достоинства: Простой, понятный
- Недостатки: неудобен в обслуживании, высокая связанность кода
-
Мониторинг событий (с использованием режима управления временем, в зависимости от того, происходит ли событие):
- Преимущества: простота понимания, можно связать несколько событий, для каждого события можно указать несколько функций обратного вызова.
- Недостатки: событийный, процесс недостаточно ясен
-
Публикация/подписка (шаблон Observer)
- Аналогично мониторингу событий, но вы можете использовать «центр сообщений», чтобы узнать, сколько сейчас издателей и подписчиков.
-
Объект обещания
- Преимущества: метод then можно использовать для записи цепочки, функция обратного вызова при ошибке может быть записана;
- Недостатки: относительно сложно написать и понять
-
Функция генератора
- Достоинства: обмен данными внутри и вне тела функции, механизм обработки ошибок
- Недостаток: управление процессом неудобно
-
асинхронная функция
- Преимущества: встроенный исполнитель, лучшая семантика, более широкая применимость, возврат Promise, четкая структура.
- Недостаток: механизм обработки ошибок
57. Знание нативного Javascript
- Типы данных, операции, объекты, функции, наследование, замыкания, области действия, цепочки прототипов, события,
RegExp,JSON,Ajax,DOM,BOM, утечка памяти, междоменный доступ, асинхронная загрузка, шаблонизатор, внешний интерфейсMVC, маршрутизация, модульность,Canvas,ECMAScript
58. Разница между анимацией Js и анимацией CSS и соответствующая реализация
-
CSS3Преимущества анимации- Будет немного лучше по производительности, браузер будет
CSS3Сделайте некоторые оптимизации для анимации - Код относительно прост
- Будет немного лучше по производительности, браузер будет
- недостаток
- Недостаточно гибкий в управлении анимацией
- плохая совместимость
-
JavaScriptАнимация просто компенсирует эти два недостатка, возможность управления очень сильна, ею можно управлять и преобразовывать в одном кадре, она хорошо написана и полностью совместима.IE6, и мощный. Для некоторых сложных управляемых анимаций используйтеjavascriptбудет надежнее. При реализации некоторых небольших интерактивных эффектов учитывайте большеCSSБар
59. Методы обхода массивов и объектов JS и сравнение нескольких методов
Обычно мы используем цикл для перебора массива. Но циклы — одна из причин проблем с производительностью js. Как правило, мы будем использовать следующие методы для обхода массива
for inциклforцикл-
forEach- здесь
forEachДва параметра обратного вызова:value,index -
forEachНе могу перебрать объект - IE не поддерживает этот метод;
Firefoxа такжеchromeслужба поддержки -
forEachНедоступноbreak,continueвырваться из цикла и использоватьreturnэто пропустить этот цикл
- здесь
Эти два метода должны быть очень распространены и часто использоваться. Но на практике оба метода имеют проблемы с производительностью.
В первом методе
for-inнужно проанализироватьarrayДля каждого свойства эта операция требует больших затрат производительности. используется вkeyОчень неэкономичен на известных массивах. Так что постарайтесь не использоватьfor-in, если вы не знаете, с какими свойствами иметь дело, например.JSONтакой объектВ режиме 2 длина массива проверяется при каждом выполнении цикла. Чтение свойств (длины массива) происходит медленнее, чем чтение локальных переменных, особенно когда
arrayхранятся вDOMэлементы, потому что каждое чтение будет сканировать связанные с селектором элементы на странице, скорость будет значительно снижена
60. Что такое глоток?
-
gulpЭто инструмент построения кода на основе потока в процессе разработки интерфейса и инструмент для создания проектов автоматизации; он может не только оптимизировать ресурсы веб-сайта, но и автоматизировать многие повторяющиеся задачи в процессе разработки с использованием правильных инструментов. - Основные концепции Gulp: потоки
- Поток, говоря простым языком, представляет собой абстрактный инструмент для обработки данных, основанный на объектно-ориентированном подходе. В потоке определены некоторые основные операции по обработке данных, такие как чтение данных, запись данных и т. д. Программист выполняет все операции над потоком, не заботясь о реальном потоке данных на другом конце потока.
- Gulp пытается максимально упростить задачу написания задач с помощью стратегии потока и кода вместо конфигурации.
- Особенности глотка:
- легко использовать: Благодаря стратегии кода вместо конфигурации gulp делает простые задачи простыми, а сложные задачи управляемыми.
-
Стройте быстроиспользовать
Node.jsБлагодаря возможностям потоковой передачи вы можете быстро создавать проекты и сокращать частыеIOдействовать -
легко учитьчерез наименьшее
API,владелецgulpС легкостью встраивайте управление: как ряд потоковых конвейеров
61. Расскажите о принципе двусторонней привязки данных Vue.
-
vue.jsОн использует метод захвата данных в сочетании с моделью «издатель-подписчик».Object.defineProperty()захватить каждое имуществоsetter,getter, публиковать сообщения подписчикам при изменении данных и запускать соответствующие обратные вызовы прослушивателя.
$jQuery
1. Как вы думаете, где лучше всего писать исходный код jQuery или zepto?
- Исходный код jquery инкапсулирован в самовыполняющуюся среду анонимной функции, что помогает предотвратить глобальное загрязнение переменных.Затем, передав параметр объекта окна, объект окна можно использовать как локальную переменную.Преимущество заключается в том, что при доступе к объекту окна в jquery нет необходимости возвращаться по цепочке областей видимости к области верхнего уровня, что обеспечивает более быстрый доступ к объекту окна. Точно так же передача неопределенного параметра может сократить цепочку областей видимости при поиске неопределенного значения.
(function( window, undefined ) {
//用一个函数域包起来,就是所谓的沙箱
//在这里边var定义的变量,属于这个函数域内的局部变量,避免污染全局
//把当前沙箱需要的外部变量通过函数参数引入进来
//只要保证参数对内提供的接口的一致性,你还可以随意替换传进来的这个参数
window.jQuery = window.$ = jQuery;
})( window );
- jQuery инкапсулирует некоторые свойства и методы прототипа в jquery.prototype.Чтобы сократить название, ему присвоен jquery.fn.Это очень яркий способ написания.
- Есть некоторые методы массивов или объектов, которые часто используются, и jQuery сохраняет их как локальные переменные для повышения скорости доступа.
- Сцепленные вызовы, реализованные jquery, могут сэкономить код, и все они возвращают один и тот же объект, что может повысить эффективность кода.
2. Как работает jQuery?
(function(window, undefined) {})(window);jQueryиспользоватьJSФункция области действия, которая оборачивает себя выражением немедленного вызова, решает проблему загрязнения пространства имен и переменных.window.jQuery = window.$ = jQuery;Привяжите jQuery и $ к окну в закрытии, тем самым выставив jQuery и $ как глобальные переменные
3. К какому объекту относится this, возвращаемый методом инициализации jQuery.fn? Зачем возвращать это?
- this, возвращаемый методом инициализации jQuery.fn, является объектом jQuery.
- Пользователи могут использовать jQuery() или $() для инициализации объекта jQuery, нет необходимости динамически вызывать метод инициализации.
4. В чем разница между jQuery.extend и jQuery.fn.extend?
-
$.fn.extend()а также$.extend()даjQueryДля подключаемых модулей расширения предусмотрено два метода. -
$.extend(object); // Добавляем "статический метод" (служебный метод) в jQuery
$.extend({
min: function(a, b) { return a < b ? a : b; },
max: function(a, b) { return a > b ? a : b; }
});
$.min(2,3); // 2
$.max(4,5); // 5
- $.extend([true,] targetObject, object1[ object2]);//Расширить целевой объект
var settings = {validate:false, limit:5};
var options = {validate:true, name:"bar"};
$.extend(settings, options); // 注意:不支持第一个参数传 false
// settings == {validate:true, limit:5, name:"bar"}
-
$.fn.extend(json); // Добавляем «функцию-член» (метод экземпляра) в jQuery
$.fn.extend({
alertValue: function() {
$(this).click(function(){
alert($(this).val());
});
}
});
$("#email").alertValue();
5. Каков принцип реализации копии атрибута jQuery (расширения) и как реализовать глубокую копию?
Неглубокая копия (копировать только ссылку на исходный объект)
var newObject = $.extend({}, oldObject);Глубокая копия (рекурсивное копирование объекта, на который ссылается исходное свойство объекта)
var newObject = $.extend(true, {}, oldObject);
6. Как реализована очередь jQuery? Где можно использовать очереди?
- В ядре jQuery есть набор методов управления очередью,
queue()/dequeue()/clearQueue()Он состоит из трех методов. - В основном используется в
animate(),ajax, среди прочих событий, которые должны быть выполнены в хронологическом порядке
var func1 = function(){alert('事件1');}
var func2 = function(){alert('事件2');}
var func3 = function(){alert('事件3');}
var func4 = function(){alert('事件4');}
// 入栈队列事件
$('#box').queue("queue1", func1); // push func1 to queue1
$('#box').queue("queue1", func2); // push func2 to queue1
// 替换队列事件
$('#box').queue("queue1", []); // delete queue1 with empty array
$('#box').queue("queue1", [func3, func4]); // replace queue1
// 获取队列事件(返回一个函数数组)
$('#box').queue("queue1"); // [func3(), func4()]
// 出栈队列事件并执行
$('#box').dequeue("queue1"); // return func3 and do func3
$('#box').dequeue("queue1"); // return func4 and do func4
// 清空整个队列
$('#box').clearQueue("queue1"); // delete queue1 with clearQueue
7. В чем разница между bind(), live(), delegate() и on() в jQuery?
-
bindпривязать непосредственно к целевому элементу -
liveРаспространение событий путем всплытия, по умолчаниюdocument, поддерживает динамические данные -
delegateБолее точное мелкомасштабное использование прокси-сервера событий, производительность лучше, чем в реальном времени. -
onявляется последним1.9Версия объединяет новый механизм привязки событий предыдущих трех способов.
8. Знаете ли вы пользовательские события? Что означает функция огня в jQuery и когда ее следует использовать?
- События — это режим «публикация/подписка», пользовательские события — «публикация сообщений», а мониторинг событий — «подписка».
- JS изначально поддерживает пользовательские события, примеры:
document.createEvent(type); // 创建事件
event.initEvent(eventType, canBubble, prevent); // 初始化事件
target.addEventListener('dataavailable', handler, false); // 监听事件
target.dispatchEvent(e); // 触发事件
- Функция огня в jQuery используется для вызова событий в пользовательском списке событий jQuery.
9. Каким методом jQuery объединяется с селектором Sizzle?
-
Sizzleселектор взятьRight To LeftСоответствующий шаблон , сначала поиск всех соответствующих тегов, а затем определение его родительского узла. -
jQueryпройти через$(selecter).find(selecter);а такжеSizzleкомбинация селекторов
10. Как преобразовать массив в строку JSON в jQuery, а затем преобразовать его обратно?
// 通过原生 JSON.stringify/JSON.parse 扩展 jQuery 实现
$.array2json = function(array) {
return JSON.stringify(array);
}
$.json2array = function(array) {
// $.parseJSON(array); // 3.0 开始,已过时
return JSON.parse(array);
}
// 调用
var json = $.array2json(['a', 'b', 'c']);
var array = $.json2array(json);
11. Один объект jQuery может одновременно связывать несколько событий, как это реализовано?
$("#btn").on("mouseover mouseout", func);
$("#btn").on({
mouseover: func1,
mouseout: func2,
click: func3
});
12. Метод оптимизации для jQuery?
- Кэшировать частые операции
DOMобъект - использовать как можно больше
idселектор вместоclassСелектор - всегда из
#idселектор для наследования - Максимально используйте цепные операции
- использовать делегирование времени
onпривязать событие - использовать
jQueryвнутренняя функцияdata()хранить данные - Используйте последнюю версию
jQuery
13. Анимация jQuery slideUp, когда мышь срабатывает в быстрой последовательности, анимация будет отставать и выполняться повторно, как с этим бороться?
- Событие в инициирующем элементе настроено на отложенную обработку: используйте
JSРоднойsetTimeoutметод - Заранее остановите все анимации, когда сработает событие элемента, а затем выполните соответствующее событие анимации:
$('.tab').stop().slideUp();
14. Как пользовательский интерфейс jQuery настраивает компоненты?
- Через
$.widget()Передайте имя компонента и объект-прототип для завершения $.widget("ns.widgetName", [baseWidget], widgetPrototype);
15. В чем разница между jQuery и jQuery UI и jQuery Mobile?
jQueryдаJSБиблиотека, совместимая с различными браузерами ПК, в основном используется для более удобной обработкиDOM, события, анимация,AJAXjQuery UIУстановленоjQueryНабор взаимодействий пользовательского интерфейса, эффектов, виджетов и тем в библиотеке.jQuery MobileкjQueryФреймворк для создания «мобильных веб-приложений»
16. В чем разница между jQuery и Zepto? их соответствующие сценарии использования?
-
jQueryОсновная цель состоит в том, чтобыPC, совместимый со всеми основными браузерами. На мобильных устройствах `jQuery Mobile был запущен отдельно -
Zeptoс начала位移动设备,相对更轻量级。它的API基本兼容jQuery`, но не идеален для совместимости с браузером ПК
17. Особенности объектов jQuery
- Только
JQueryобъект для использованияJQueryметод -
JQueryобъект является объектом массива
$вопросы по программированию
1, напишите функцию общего слушателя событий
// event(事件)工具集,来源:github.com/markyun
markyun.Event = {
// 视能力分别使用dom0||dom2||IE方式 来绑定事件
// 参数: 操作的元素,事件名称 ,事件处理程序
addEvent : function(element, type, handler) {
if (element.addEventListener) {
//事件类型、需要执行的函数、是否捕捉
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent('on' + type, function() {
handler.call(element);
});
} else {
element['on' + type] = handler;
}
},
// 移除事件
removeEvent : function(element, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else if (element.datachEvent) {
element.detachEvent('on' + type, handler);
} else {
element['on' + type] = null;
}
},
// 阻止事件 (主要是事件冒泡,因为IE不支持事件捕获)
stopPropagation : function(ev) {
if (ev.stopPropagation) {
ev.stopPropagation();
} else {
ev.cancelBubble = true;
}
},
// 取消事件的默认行为
preventDefault : function(event) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
},
// 获取事件目标
getTarget : function(event) {
return event.target || event.srcElement;
}
2. Как определить, является ли объект массивом
function isArray(arg) {
if (typeof arg === 'object') {
return Object.prototype.toString.call(arg) === '[object Array]';
}
return false;
}
3. Пузырьковая сортировка
- Каждый раз сравнивайте два соседних числа, если последнее меньше первого, меняйте местами
var arr = [3, 1, 4, 6, 5, 7, 2];
function bubbleSort(arr) {
for (var i = 0; i < arr.length - 1; i++) {
for(var j = 0; j < arr.length - i - 1; j++) {
if(arr[j + 1] < arr[j]) {
var temp;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
console.log(bubbleSort(arr));
4. Быстрая сортировка
- Методом дихотомии вынуть среднее число, каждый раз сравнивать массив со средним числом, ставить меньшее слева, а большее справа
var arr = [3, 1, 4, 6, 5, 7, 2];
function quickSort(arr) {
if(arr.length == 0) {
return []; // 返回空数组
}
var cIndex = Math.floor(arr.length / 2);
var c = arr.splice(cIndex, 1);
var l = [];
var r = [];
for (var i = 0; i < arr.length; i++) {
if(arr[i] < c) {
l.push(arr[i]);
} else {
r.push(arr[i]);
}
}
return quickSort(l).concat(c, quickSort(r));
}
console.log(quickSort(arr));
5. Напишите метод для определения длины строки в байтах.
- Допущение: английский символ занимает один байт, а китайский — два байта.
function GetBytes(str){
var len = str.length;
var bytes = len;
for(var i=0; i<len; i++){
if (str.charCodeAt(i) > 255) bytes++;
}
return bytes;
}
alert(GetBytes("你好,as"));
6. Использование привязки, и как реализовать функцию привязки и моменты, на которые следует обратить внимание
-
bindроль иcallа такжеapplyто же самое, разницаcallа такжеapplyзаключается в немедленном вызове функции, в то время какbindОн возвращается в функцию, а затем выполняется при ее вызове.
ПростойbindФункция реализована следующим образом
Function.prototype.bind = function(ctx) {
var fn = this;
return function() {
fn.apply(ctx, arguments);
};
};
$другое
1. Расскажите о своем понимании рефакторинга
Рефакторинг веб-сайта: упростите структуру и улучшите читаемость без изменения внешнего поведения, сохраняя при этом согласованное поведение на интерфейсе веб-сайта. То есть оптимизировать веб-сайт без изменения пользовательского интерфейса и поддерживать согласованный пользовательский интерфейс при расширении.
-
Для традиционных веб-сайтов рефакторинг обычно заключается в следующем:
лист(
table) макет изменен наDIV+CSSСделать внешний интерфейс веб-сайта совместимым с современными браузерами (для несовместимых
CSS, как и для IE6)Оптимизирован для мобильных платформ
Таргетинг на
SEOоптимизировать
2. Какой интерфейсный код хорош
- Высокая степень повторного использования и низкая связанность, поэтому файл небольшой, его легко поддерживать и легко расширять.
3. Как вы понимаете должность front-end инженера? Как будет выглядеть его будущее?
-
Front-end — это программист, который ближе всего к пользователю, ближе, чем back-end, база данных, менеджер по продукту, эксплуатация и безопасность.
- Реализовать интерфейсное взаимодействие
- Улучшить пользовательский опыт
- С Node.js внешний интерфейс может реализовать некоторые вещи на стороне сервера.
Фронтенд — это тот программист, который находится ближе всего к пользователю, его способность — сделать так, чтобы продукт развивался с 90 баллов до 100 баллов или даже лучше.
с членами команды,
UIДизайн, общение с продакт-менеджерами;Хорошо сделанная структура страницы, рефакторинг страницы и пользовательский опыт;
4. В чем, по вашему мнению, отражается ценность предварительного проектирования?
Предоставление технической поддержки для упрощения использования пользователями (интерактивная часть)
Обеспечивает поддержку совместимости с несколькими браузерами.
Обеспечить поддержку улучшения скорости просмотра пользователей (производительность браузера)
Обеспечьте поддержку кросс-платформенных или других приложений, основанных на webkit или других механизмах рендеринга.
Обеспечить поддержку отображения данных (интерфейс данных)
5. Как вы обычно управляете своим проектом?
Ранняя команда должна определить глобальный стиль (
globe.css), режим кодирования (utf-8) Ждать;Привычки письма должны быть последовательными (например, основаны на унаследованном типе написания, написали один стиль линии);
Писатель стиля аннотации, каждый модуль размечается по времени (маркировка места вызова ключевого стиля);
Страницы аннотируются (например, начало и конец модуля страницы);
CSSа такжеHTMLПодпапки хранятся параллельно, и имена должны быть унифицированы (например,style.css);JSХранить в подпапках, названных в честь этогоJSПреобладает английский перевод функции.Изображение интегрировано
images.png png8Использование файлов формата — попробуйте интегрировать их вместе для дальнейшего управления