- •1.Архитектура Клиент-Сервер. Взаимодействие клиента и сервера в сети интернет. Основные понятия языков разметки: sgml, html, xhtml, dhtml, xml.
- •2.Програмное обеспечение клиента и сервера. Взаимодействие веб-клиента и серверного программного обеспечения. Протоколы обмена данными.
- •5. Язык js. Его возможности и ограничения. Лексемы. Идентификаторы. Ключевые слова и зарезервированные слова. Типы данных. Произведение типов. Константы. Переменные.
- •6. Локальные и глобальные переменные. Массивы. Обработка элементов массива и способы вывода результата. Организация ассоциативных массивов в js.
- •7. Массив как объект. Встроенные методы для работы с массивами. Добавление и удаление элементов массива.
- •8. Каскадные таблицы стилей css: основные понятия и определения. Селекторы, свойства, аргументы. Селекторы тэгов. Классы стилей. Способы подключения таблицы стилей. Возможности css3.
- •9. Интерактивное управление динамическим состоянием объектов. Псевдоклассы и псевдоэлементы.
- •10. Условные операторы if, if…else. Оператор switch. Способы обработки исключительных ситуаций. Оператор instanceof в js.
- •11. Операторы цикла for, for..In, while, do..While, break, continue.
- •12. Понятие функций в js. Создание функций. Использование параметров. Передача объекта по ссылке в функциях.
- •13. Встроенные функции в объекты js (window, document, array и др.). Встроенные функции для взаимодействия с пользователем в js.
- •14. Рекурсивные функции и анонимные функции в js. Функции как объекты. Их назначение и примеры использования. Функции обработанного вызова (callback). Их назначение и параметры использования.
- •15. Объекты js. Понятие объекта. Виды объектов. Создание пользовательских объектов js, и работа с ним.
- •1. Создание прямого экземпляра объекта
- •2. Создание конструктора объекта
- •16. Наследование в js на основе концепций прототипноориентированного языка. Свойство prototype. Добавление свойств и методов к конструкторам объектов.
- •17. Создание и наследование классов в js на основе стандартов Ecma 6.
- •18. Свойства объектов, методы, события. Добавление, удаление, доступ к свойствам. Создание конструкторов и их роль для новых свойств объектов.
- •19. Встроенные методы для работы со строковыми объектами. Работа с регулярными выр-ми. Возможности обработки строковых данных в js.
- •20. Браузеры и их функциональные возможности. Особенности реализации web-приложений в разных браузерах. Иерархия объектов браузера.
- •21. Понятие и структура bom. Объекты верхнего уровня.
- •22. Работа с окнами. Объект Window. Свойства окна. Создание, открытие и закрытие окон. Основные методы и свойства окон.
- •23. Понятие иерархической модели dom. Варианты поиска элементов.
- •24. Определение событий формы. Создание элементов формы. Методы для работы с формами.
- •25. Использование набора многократно используемых объектов и функций библиотек js (jQuery, Prototype, Mootools, Dojo) при разработке веб-приложений.
- •26. Работа с событиями экрана, клавиатуры, мыши в js. Добавление метода в html dom addEventListener().
- •27. Хранение данных на стороне клиента. Виды хранения. Преимущества и недостатки сохранения данных на стороне клиента.
- •Cookie - это специальные файлы, создаваемые веб - сервером и хранящиеся на компьютере клиента. Данные передаются серверу и обратно. Плюс – простота.
- •Технология Web Storage
- •28. Особенности использования Cookie в js. Сохранение и уничтожение данных с помощью Cookie.
- •29. Использование html5 Application Cache для хранения данных на стороне клиента. Возможности и ограничения html5 Application Cache.
- •30. Использование html5 Web Storage для сохранения данных на клиентской стороне. Локальное и сессионное хранилище, их создание, использование и особенности.
- •31. Технология Ajax для передачи данных в фоновом режиме. Объект xmlHttpRequest. Обработка ответов от сервера.
- •32. Особенности хранения данных с помощью WebSql. Метод executeSql(). Организация табличного хранения данных. Внесение и удаление данных из таблиц.
- •34. Особенности применения паттернов проектирования (mvc,mvvm,mvp) в js.
- •35.Использование паттерна mvp на основе библиотек Backbone и AngularJs.
- •37. Технология динамического обращения к серверу без перегрузки всей страницы. Передача данных на страницу данных в формате html, .Txt, xml и json.
- •38. Особенности функционального программирования в js. Метод bind(), немедленно вызываемые функции, самоопределяющиеся функции.
- •39. Функции замыкания и обратного вызова (callback) в js. Роль функций обратного вызова в организации асинхронного обмена данными (на примере Node.Js).
- •40. Управление зависимостями: принципы модульного программирования в js. Концепции amd.
- •41. Использование модульного подхода к программированию в js на примере работы с библиотекой Require.Js.
- •42. Менеджер задач (на примере Grunt). Варианты заданий.
- •43. Назначение и функции пакетных менеджеров Bower и npm.
- •44. Платформа Node.Js и ее возможности. Программирование на стороне сервера.
- •45. Использование документно-ориентированных баз данных в js. Организация хранения данных на примере MongoDb.
- •46. Ключевые моменты оценки качества веб-проектов. Практические методы client-side оптимизации.
- •1.Архитектура Клиент-Сервер. Взаимодействие клиента и сервера в сети интернет. Основные понятия языков разметки: sgml, html, xhtml, dhtml, xml.
41. Использование модульного подхода к программированию в js на примере работы с библиотекой Require.Js.
RequireJS – один из самых популярных файловых/модульных загрузчиков. При создании крупных компонентных проектов без него не обойтись, т.к. он решает основные проблемы таких приложений:
– зависимости между модулями
– засорение глобальной области
RequireJS использует AMD концепцию. Создан для использования в браузере.
По сути работа с RequireJS заключается в использовании 2х методов define и require:
- Метод define служит для описания модулей
define( [moduleName,] dependencies, callback) где moduleName - имя модуля
dependencies - массив зависимостей (callback - тело модуля, в которое передаются dependencies
Для нашего случая будет выглядеть так
define( "unit",
['jQuery'],
function( jQuery ){
return { foo : "bar" };
}
);
Настроить опции RequireJS можно через метод require.config(), например:
require.config({
baseUrl: "/another/path",
paths: { "some": "some/v1.0" },
waitSeconds: 15 });)
Параметр shim позволяет добавить сторонние модули (без метода define) к общей схеме.
requirejs.config({
paths:{
'jquery': https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery'
},
shim: {
'jquery': {
exports: 'jQuery', } }});
require(["util", "jquery"], function(util, $) {
console.log($(document));})
С помощью параметра map мы можем сделать более гибкими связи между модулями, например, новый модуль зависит от более новой версии библиотеки, а старый модуль, но который все равно нужно поддерживать, – использует древнюю версию. Так вот для обоих модулей мы можем прописать одну зависимость на библиотеку, а через map реализовать версионность:
requirejs.config({
map: {
'some/newmodule': { 'foo': 'foo1.2' },
'some/oldmodule': { 'foo': 'foo1.0' }
}
});
42. Менеджер задач (на примере Grunt). Варианты заданий.
Grunt - это планировщик задач. Стоит лишь установить его, и операции будут происходить автоматически, так, что вам про них даже не придётся вспоминать.
В корне док-ма создаем package.json:
{
"name": "example-project",
"version": "0.1.0",
"devDependencies": {
"grunt": "~0.4.1" }}
Представим, что в нашем проекте есть 3 файла JS:
- jquery.js -библиотека, которую мы используем.
- carousel.js- плагин для jQuery, который мы используем.
- global.js - написанный нами файл, где мы настраиваем и вызываем наш плагин.
concat: {
dist: {
src: [
'js/libs/*.js', // Все JS в папке libs
'js/global.js' // Конкретный файл
],
dest: 'js/build/production.js', }}
Файлы объеденены!
43. Назначение и функции пакетных менеджеров Bower и npm.
Проекты часто обрастают сторонними библиотеками, которые нужно выкачивать, распаковывать, подключать в шаблонах и поддерживать их все в актуальном состоянии. Для упрощения этой работы можно использовать Bower. Bower - менеджер assets пакетов, поможет освободить чуточку вашего времени, автоматизируя вышеописанные процедуры
Написан на JS под платформу NodeJS. Что умеет Bower:
-Загрузка пакетов из основного репозитория, GIT репозитория, по ссылке на JS файл;
-Умеет распаковывать архивы;
-Контролирует и исключает повторную загрузку зависимых пакетов;
Почему не npm спросите вы, главным отличием npm от bower - подход к установке зависимостей пакетов. npm устанавливает зависимости для каждого пакета отдельно, в итоге имеем большое дерево пакетов (node_modules/gulp/node_modules/gulp/node_modules/…), где может быть несколько версий одного и того же пакета. В клиентском javascript это недопустимо: нельзя подключить на страницу к примеру, две версии jQuery или любой другой библиотеки. В bover каждый пакет устанавливается один раз (jQuery всегда будет в папке bower_components/jquery, сколько бы пакетов от него не зависело) и в случае конфликта зависимостей, bоver просто не станет устанавливать пакет, не совместимый с уже установленными.
Для работы с Бовером потребуются Node.js и Git.
$ npm install -g bower
Работа с пакетами
Попробуем что-нибудь установить, jQuery:
$ bower install --save jquery # Или bower i -S jquery
Для удаления пакетов используется команда bower uninstall:
$ bower uninstall --save jquery-icheck # Или bower un -S jquery-icheck
Вы можете спокойно удалять папку bower_components или добавить её в ваш.gitignore. Команда bower install (без дополнительных параметров) вернёт всё как было:
$ bower install
Пакетный менеджер npm
npm - это пакетный менеджер node.js. С его помощью можно управлять модулями и зависимостями.
Установка npm
curl https://npmjs.org/install.sh | sh
Обновление npm
npm install npm -g
Прoсмотр И о пакете
npm view hook.io
