Top Banner
1 Javascript in big project, Evgeny Gusev, 03.02.16 slid e Wrike What`s wrong with Javascript Evgeny Gusev Date (03/02/2016)
19

Javascript in big project

Jan 20, 2017

Download

Engineering

Evgeny Gusev
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Javascript in big project

1Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

What`s wrong with JavascriptEvgeny GusevDate (03/02/2016)

Page 2: Javascript in big project

2Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

JavaScript problems

// data.jsfunction getData(){ var dataFromServer = getServerData(); // some logging return dataFromServer;}

// some other filevar data = getData();if (data.userIsAdmin) { // make some stuff}

Page 3: Javascript in big project

3Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

JavaScript problems

// data.jsfunction getData(){ var dataFromServer = getServerData(); // some logging return dataFromServer;}

// some other filevar data = getData();if (?????) { // make some stuff}

Page 4: Javascript in big project

4Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

JsDoc = решение?

/*** @typedef Data* @type Object* @property {userIsAdmin} user has admin rights*/

/*** Used to collect data from different sources** @public* @returns {Data} Function returns Data object*/function getData()

Page 5: Javascript in big project

5Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

JavaScript problems

➔ Знания размазаны по коду или сосредоточены в голове

Page 6: Javascript in big project

6Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

JavaScript problems

function getData() { var dataFromServer = getServerData(); if (dataFromServer.sessionExpired) { dataFromServer.status = 'expired'; } return dataFromServer;}

Page 7: Javascript in big project

7Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

JavaScript problems

➔ Знания размазаны по коду или сосредоточены в голове

➔ Большое желание (и возможность) написать

костыль

Page 8: Javascript in big project

8Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

JavaScript problemsfunction PersonInterface(proto,fnName){ setTimeout(function(){ if(typeof proto.getSurName !== 'function'){ throw new Error(fnName + ' has to implement getSurName'); } },100);}

function implements(fn, implements,fnName){ implements(fn.prototype,fnName);}

function Employer(){};implements(Employer, PersonInterface,'Employer');Employer.prototype.getSurName=function(){};

Page 9: Javascript in big project

9Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

JavaScript problems

➔ Знания размазаны по коду или сосредоточены в голове

➔ Большое желание (и возможность) написать костыль

➔ Слабая поддержка ООП

Page 10: Javascript in big project

10Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

JavaScript problems

➔ Знания размазаны по коду или сосредоточены в голове

➔ Большое желание (и возможность) написать костыль

➔ Слабая поддержка ООП

➔ Проблема с изоляцией и модульностью

Page 11: Javascript in big project

11Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

Summary: JS is too weak

Page 12: Javascript in big project

12Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

Solution: Dart

Page 13: Javascript in big project

13Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

Dart benefits: typing. Self-documented

class Data{ bool userIsAdmin; // some other fields}

Data getData(){ //...}

Page 14: Javascript in big project

14Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

Dart benefits: typing. Good analysis

Page 15: Javascript in big project

15Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

Dart benefits: isolates

library 'myAwesomeLibrary'

import 'package:logging/logging.dart' show Logger, Level, LogRecord;import "package:test/test.dart" as test;

export "package:utils/utils.dart";

class MyClass{ MyClass(){ test.Runner.begin(); }}

Page 16: Javascript in big project

16Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

Dart benefits: OOPabstract class Person { final _name; Person(this._name); String greet(who);}

class Human { int getAge () => 14;}

abstract class FruitLover { String getWhatILike () => 'Banana!';}

class Developer extends Human with FruitLover implements Person { final _name; Developer(this._name); @override int getAge () => 23; String greet(who) => 'Hi $who. I am $_name, ${getAge()} years old, i like ${getWhatILike()}';}

Page 17: Javascript in big project

17Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

Dart benefits

➔ Богатая стандартная библиотека (пакетный менеджер, сборщик etc.)

➔ Скорость работы

➔ Не только JS разработчики могут писать код

➔ Выкидывает лишний код, а значит быстрее грузится

Page 18: Javascript in big project

18Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

Dart vs TypeScript

Page 19: Javascript in big project

19Javascript in big project, Evgeny Gusev, 03.02.16 slide Wrike

Q&A