Алгоритмизация и программирование. Введение в JavaScript

Содержание

Слайд 2

Содержание PAGE 2 Введение в JavaScript Как появился JavaScript. Особенности исполнения

Содержание

PAGE

2

Введение в JavaScript

Как появился JavaScript.
Особенности исполнения кода JavaScript.
Возможности и ограничения языка.
Развитие

языка. Стандарты.
Языки поверх JavaScript.
Экосистема JavaScript.
Литература
Слайд 3

Как появился JavaScript ? PAGE 3 Введение в JavaScript В 90-е

Как появился JavaScript ?

PAGE

3

Введение в JavaScript

В 90-е годы Веб нуждался в

лёгком скриптовом языке (или языке сценариев — прим.ред.), способном работать с DOM, который в те дни не был стандартизирован.

JAVA – для инженеров

JAVA – для дизайнеров

Брендан Айк

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

typeof "hello world"
"string"
typeof new String('hello world')
"object"

Слайд 4

ОСОБЕННОСТИ ИСПОЛНЕНИЯ КОДА JAVASCRIPT PAGE 4 Особенности исполнения кода JavaScript Введение в JavaScript

ОСОБЕННОСТИ ИСПОЛНЕНИЯ КОДА JAVASCRIPT

PAGE

4

Особенности исполнения кода JavaScript

Введение в JavaScript

Слайд 5

Особенности исполнения кода JavaScript PAGE 5 Введение в JavaScript https://es6console.com/

Особенности исполнения кода JavaScript

PAGE

5

Введение в JavaScript

https://es6console.com/

Слайд 6

Особенности исполнения кода PAGE 6 Введение в JavaScript

Особенности исполнения кода

PAGE

6

Введение в JavaScript

Слайд 7

ВОЗМОЖНОСТИ И ОГРАНИЧЕНИЯ ЯЗЫКА PAGE 7 Возможности и ограничения языка Введение в JavaScript

ВОЗМОЖНОСТИ И ОГРАНИЧЕНИЯ ЯЗЫКА

PAGE

7

Возможности и ограничения языка

Введение в JavaScript

Слайд 8

Возможности JavaScript PAGE 8 Введение в JavaScript Добавлять различные эффекты анимации.

Возможности JavaScript

PAGE

8

Введение в JavaScript

Добавлять различные эффекты анимации.
Реагировать на события - обрабатывать

перемещения указателя мыши, нажатие клавиш с клавиатуры.
Осуществлять проверку ввода данных в поля формы до отправки на сервер, что в свою очередь снимает дополнительную нагрузку с сервера.
Создавать и считывать cookie, извлекать данные о компьютере посетителя.
Определять браузер.
Изменять содержимое HTML-элементов, добавлять новые теги, изменять стили.
Слайд 9

Ограничения JavaScript PAGE 9 Введение в JavaScript JavaScript не может закрывать

Ограничения JavaScript

PAGE

9

Введение в JavaScript

JavaScript не может закрывать окна и вкладки, которые

не были открыты с его помощью.
Не может защитить исходный код страницы и запретить копирование текста или изображений со страницы.
Не может осуществлять кроссдоменные запросы, получать доступ к веб-страницам, расположенным на другом домене. Даже когда страницы из разных доменов отображаются в одно и тоже время в разных вкладках браузера, то код JavaScript принадлежащий одному домену не будет иметь доступа к информации о веб-странице из другого домена. Это гарантирует безопасность частной информации, которая может быть известна владельцу домена, страница которого открыта в соседней вкладке.
Не имеет доступа к файлам, расположенным на компьютере пользователя, и доступа за пределы самой веб-страницы, единственным исключением являются файлы cookie, это небольшие текстовые файлы, которые JavaScript может записывать и считывать.
Слайд 10

РАЗВИТИЕ ЯЗЫКА. СТАНДАРТЫ PAGE 10 Развитие языка. Стандарты Введение в JavaScript

РАЗВИТИЕ ЯЗЫКА. СТАНДАРТЫ

PAGE

10

Развитие языка. Стандарты

Введение в JavaScript

Слайд 11

Стандарты языка JavaScript PAGE 11 Введение в JavaScript ECMAScript - это

Стандарты языка JavaScript

PAGE

11

Введение в JavaScript

ECMAScript - это объектно-ориентированный язык программирования с

прототипной организацией, имеющий концепцию объекта в качестве базовой абстракции.

«ES» – это сокращение от «ECMAScript». Изначально номера версий стандарта обозначались цифрами, прибавляемыми к «ES».
Первые три релиза выходили ежегодно (1997-99гг.), это ES1, ES2 и ES3. Четвертый выпуск не состоялся «в связи с политическими расхождениями, касающимися запутанности языка». Следующая версия, ES5, увидела свет почти десять лет спустя, в декабре 2009 года.
Начиная с шестой версии было решено возобновить ежегодный выпуск релизов, а вместо порядкового номера добавлять год издания. Таким образом, в 2015 году вышла не ES6, а ES2015. В течение последующих двух лет вышли ES2016 и ES2017.

Слайд 12

Новое в ES2017 PAGE 12 Введение в JavaScript //Exponentiation operator 2

Новое в ES2017

PAGE

12

Введение в JavaScript

//Exponentiation operator
2 ** 3; //8

//Object property and

...
let o1 = { a: 1, b: 2 }, o2 = { c: 3 };
let o3 = { ... o1, ... o2, d: 4 };
console.log(o3.a, o3.b, o3.c, o3.d);
// 1 2 3 4

//destructured properties
let o1 = { b: 2, c: 3, d: 4 };
let { b, ... o2 } = o1;
console.log(b, o2.c, o2.d); // 2 3 4

//Array#includes(..)
let vals = [ "foo" , "bar" , 42, "baz" ];
if (vals.includes( 42 )) {
// found it!
}

//Async function
async function main() {
let ret = await step1();
ret = await step2( ret );
ret = await Promise.all([
step3a( ret ),
step3b( ret ),
step3c( ret )]);
await step4( ret );
}

//SIMD (Single Instruction Multiple Data)
var a = SIMD.Float32x4(1, 2, 3, 4);
var b = SIMD.Float32x4(5, 6, 7, 8);
var c = SIMD.Float32x4.add(a,b); // Float32x4[6,8,10,12]

//object.observe(..)
let obj = { a: 1, b: 2 };
Object.observe(obj, function(changes){
for (var change of changes) {
console.log( change );
}
},
[ "add" , "update" , "delete"]
);
obj.c = 3;
// { name: "c", object: obj, type: "add" }

Слайд 13

ЯЗЫКИ ПОВЕРХ JAVASCRIPT PAGE 13 Языки поверх JavaScript Введение в JavaScript

ЯЗЫКИ ПОВЕРХ JAVASCRIPT

PAGE

13

Языки поверх JavaScript

Введение в JavaScript

Слайд 14

CoffeeScript PAGE 14 Введение в JavaScript CoffeeScript это небольшой язык, который

CoffeeScript

PAGE

14

Введение в JavaScript

CoffeeScript это небольшой язык, который транслируется в Javascript. Рубистам

он кажется похожим на руби, питонистам он похож на питон, и конечно же, он похож на яваскрипт. CoffeeScript старается упростить использование яваскрипта, сохранив все его сильные стороны.

# Assignment:
number = 42
opposite = true
# Conditions:
number = -42 if opposite
# Functions:
square = (x) -> x * x
# Arrays:
list = [1, 2, 3, 4, 5]
# Objects:
math =
root: Math.sqrt
square: square
cube: (x) -> x * square x

http://coffeescript.org/

Слайд 15

TypeScript PAGE 15 Введение в JavaScript TypeScript отличается от JavaScript возможностью

TypeScript

PAGE

15

Введение в JavaScript

TypeScript отличается от JavaScript возможностью явного определения типов (статическая

типизация), поддержкой использования полноценных классов (как в традиционных объектно-ориентированных языках), а также поддержкой подключения модулей.

http://www.typescriptlang.org/

interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let user = { firstName: "Jane", lastName: "User" };
document.body.innerHTML = greeter(user);

Слайд 16

Dart PAGE 16 Введение в JavaScript Dart это объектно-ориентированый язык с

Dart

PAGE

16

Введение в JavaScript

Dart это объектно-ориентированый язык с полноценной системой классов, лексическими

скоупами, замыканиями, и опционально — статической типизацией. Dart помогает создавать структурированные веб приложения и легок в изучении для широкого круга разработчиков.

http://www.dartlang.org/

class Point {
final double x, y;
const Point(this.x, this.y);
bool get isInsideUnitCircle => x * x + y * y <= 1;
}

Слайд 17

ЭКОСИСТЕМА JAVASCRIPT PAGE 17 … Введение в JavaScript

ЭКОСИСТЕМА JAVASCRIPT

PAGE

17


Введение в JavaScript

Слайд 18

Экосистема JavaScript PAGE 18 Введение в JavaScript Среда JavaScript стала просто

Экосистема JavaScript

PAGE

18

Введение в JavaScript

Среда JavaScript стала просто огромной. Она имеет собственную

экосистему библиотек, фреймворков, инструментов, менеджеров пакетов и новых языков, которые компилируются до JavaScript.

Библиотека — это готовый к использованию набор кода, который бежит в контексте приложения, и точно так же выполняет свою работу. То есть библиотека становится при подключении частью приложения.

Фреймворк — его функции, в отличии от библиотеки, не вызываются вами, а наоборот, ваш код вызывается из него. Фреймворк можно представить себе в виде полуфабриката приложения, к которому вы дописываете нужную функциональность сами.

API - это интерфейс взаимодействия с программой извне.

API это паттерн.

Библиотеки и фреймворки предоставляют API.

API может создаваться на базе фреймворка.

Фреймворк состоит из библиотек или являет собой паттерн их соединения.

Библиотека может собираться фреймворком платформы.

Слайд 19

Библиотека React PAGE 19 Введение в JavaScript React — это библиотека

Библиотека React

PAGE

19

Введение в JavaScript

React — это библиотека JavaScript, созданная разработчиками Facebook

и Instagram. React была признана самой любимой технологией среди разработчиков, согласно опросу Stack Overflow Survey 2017.
React является самым популярным проектом JavaScript, основываясь на подсчете звезд GitHub.

https://reactjs.org/

Можно создать интерактивный интерфейс с использованием декларативного подхода.
Использование компонентной модели и виртуального DOM.

Слайд 20

Библиотека jQuery PAGE 20 Введение в JavaScript jQuery — это библиотека,

Библиотека jQuery

PAGE

20

Введение в JavaScript

jQuery — это библиотека, которая рассчитана на манипулирование

DOM на основе селекторов CSS, обработку событий и создание вызовов AJAX.

https://jquery.com/

Слайд 21

Библиотека D3: Data-Driven Documents PAGE 21 Введение в JavaScript D3 (или

Библиотека D3: Data-Driven Documents

PAGE

21

Введение в JavaScript

D3 (или D3.js) - мощная

библиотека JavaScript для создания интерактивных визуализаций с использованием веб-стандартов, таких как SVG, HTML и CSS. В отличие от других библиотек визуализации, D3 предлагает лучший контроль над окончательным визуальным результатом.

D3 работает, связывая данные с DOM и затем преобразуя их в документ.

https://d3js.org/

Слайд 22

Фреймворк Angular PAGE 22 Введение в JavaScript Angular – фреймворк для

Фреймворк Angular

PAGE

22

Введение в JavaScript

Angular – фреймворк для разработки мобильных и Desktop-интерфейсов

на JavaScript.

https://angular.io/

Некоторые из функций Angular 2 включают:
TypeScript поверх JavaScript как язык по умолчанию
компонентная архитектура
улучшенная производительность как на мобильных, так и на веб-платформах
лучшие инструменты и варианты скаффолдинга

Слайд 23

Фреймворк Vue.js PAGE 23 Введение в JavaScript Vue.js – фреймворк предлагает

Фреймворк Vue.js

PAGE

23

Введение в JavaScript

Vue.js – фреймворк предлагает опыт, похожий на React,

с его виртуальными DOM и компонентами многократного использования, которые можно использовать для создания как виджетов, так и целых веб-приложений.

https://vuejs.org/

Vue.js использует систему реактивности, чтобы определить, что изменилось и перераспределяет минимальное количество компонентов.

Слайд 24

Экосистема JavaScript PAGE 24 Введение в JavaScript Ember.js является интерфейсом на

Экосистема JavaScript

PAGE

24

Введение в JavaScript

Ember.js является интерфейсом на основе шаблона Model-View-ViewModel (MVVM).

Он следует за стандартным подходом к настройке, который популярен среди сторонних фреймворков, таких как Ruby on Rails и Laravel.

https://www.emberjs.com/

Стек Ember обычно включает:
Ember CLI: предоставляет основные варианты скаффолдинга и поддерживает сотни надстроек.
Ember Data: библиотека сохранения данных, которая может быть настроена для работы с любым сервером.
Ember Inspector: расширение доступно для Chrome и Firefox.
Liquid Fire: дополнение для переходов и анимации.

Слайд 25

Инструмент автоматизации Gulp PAGE 25 Введение в JavaScript Gulp - это

Инструмент автоматизации Gulp

PAGE

25

Введение в JavaScript

Gulp - это инструментарий JavaScript, который используется

как исполнитель задач и как система сборки в веб-разработке. Компиляция, минимизация кода, оптимизация изображения, модульное тестирование, листинг и т.д. - это повторяющиеся задачи, которые должны быть автоматизированы.

https://gulpjs.com/

Gulp использует конвейеры для потоковой передачи данных из одного плагина в другой, и конечный результат выводится в папку назначения.

Слайд 26

Инструмент автоматизации Gulp PAGE 26 Введение в JavaScript Babel.JS – это

Инструмент автоматизации Gulp

PAGE

26

Введение в JavaScript

Babel.JS – это транспайлер, переписывающий код на

ES-2015 (и выше) в код на предыдущем стандарте ES5.
Он состоит из двух частей:
Собственно транспайлер, который переписывает код.
Полифилл, который добавляет методы Array.from, String.prototype.repeat и другие.

https://babeljs.io/

Транспайлер (Transpiler) - это тот же транслятор с той лишь разницей, что у результата примерно тот же уровень абстракции, что и у исходного текста.

«Полифилл» (англ. polyfill) – это библиотека, которая добавляет в старые браузеры поддержку возможностей, которые в современных браузерах являются встроенными.

Слайд 27

Пакетный менеджер NPM PAGE 27 Введение в JavaScript NPM. Gulp требует,

Пакетный менеджер NPM

PAGE

27

Введение в JavaScript

NPM. Gulp требует, чтобы вы потратили время

на изучение и освоение нового инструмента, что займет у вас так же время. Ввода дополнительных зависимостей в ваш проект можно избежать, выбирая альтернативу, которая уже связана с Node.js. Хотя npm больше известен как менеджер пакетов, сценарии npm можно использовать для выполнения основной части вышеупомянутых задач.

https://www.npmjs.com/

Слайд 28

Инструмент тестирования Jest PAGE 28 Введение в JavaScript Jest - это

Инструмент тестирования Jest

PAGE

28

Введение в JavaScript

Jest - это относительно новая платформа тестирования,

созданная Facebook и хорошо принятая сообществом React. Самое большое преимущество использования Jest перед другими наборами тестов заключается в том, что вам требуется нулевая или минимальная конфигурация для начала написания тестов. Фреймворк имеет встроенную библиотеку утверждений и поддерживает использование макетных функций или шпионов.

Jest имеет функцию под названием «snapshot testing», которая позволяет гарантировать, что пользовательский интерфейс приложения не изменится неожиданно.

https://facebook.github.io/jest/

Слайд 29

Экосистема JavaScript PAGE 29 Введение в JavaScript Mocha - это платформа

Экосистема JavaScript

PAGE

29

Введение в JavaScript

Mocha - это платформа тестирования JavaScript, которая имеет

поддержку браузера, поддержку асинхронного обслуживания, включая перспективы, отчеты об охвате тестирования и JavaScript API для запуска тестов. Mocha часто соединяется с библиотекой утверждений, такой как Chai, should.js, expect.js, потому что у нее нет собственной библиотеки утверждений.

https://mochajs.org/

Слайд 30

Экосистема JavaScript PAGE 30 Введение в JavaScript Jasmine - это ориентированный

Экосистема JavaScript

PAGE

30

Введение в JavaScript

Jasmine - это ориентированный на поведение фреймворк JavaScript.

Жасмин стремится стать браузером, платформой и независимым от фреймворка набором тестов. У Jasmine есть своя собственная библиотека утверждений, называемая matchers, которая дает инструменту чистый и легко читаемый синтаксис. Jasmine не имеет встроенного тестового исполнителя, и вам, возможно, придется использовать общий тестовый исполнитель, например, Karma.

https://jasmine.github.io/

Слайд 31

PAGE 31 Литература Введение в JavaScript Интернет-ресурсы: Современный учебник по Java

PAGE

31

Литература

Введение в JavaScript

Интернет-ресурсы:
Современный учебник по Java Script - https://learn.javascript.ru/books
Выразительный JavaScript -

https://www.gitbook.com/book/karmazzin/eloquentjavascript_ru/details
Ресурс с кратким изложением основ - http://bonsaiden.github.io/JavaScript-Garden/ru/
Печатные издания:
Kyle Simpson, You Don’t Know JS: ES6 and Beyond, O’Reilly, 2015
http://es6-features.org/
Марк Бейтс. CofeeScript. Второе дыхание JavaScript: пер. с англ. А.Кисилев. – М.: ДМК Пресс, 2012. – 312 с
Слайд 32