Ecmascript Oder ?

Total Page:16

File Type:pdf, Size:1020Kb

Ecmascript Oder ? ECMAScript oder ? - das ist hier die Frage - Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de Version: 1.1 [email protected] Ihr Sprecher Thorsten Maier Trainer, Berater, Entwickler Schwerpunkte Architektur Prozesse @ThorstenMaier Qualitätssicherung © Orientation in Objects GmbH ECMAScript vs. TypeScript 2 JavaScript hat(te) einen schlechten Ruf © Orientation in Objects GmbH ECMAScript vs. TypeScript 3 “The specification is of “JavaScript has more in extremely poor quality.” common with functional languages like Lisp or Scheme than with C or Java” The World's Most Misunderstood Programming Language Douglas Crockford “Most of the people writing in 2001 JavaScript are not programmers.” “Nearly all of the books about “JavaScript has its share JavaScript are quite awful.” of design errors.” © Orientation in Objects GmbH ECMAScript vs. TypeScript 4 Alles besser mit ECMAScript? Ein wenig Historie © Orientation in Objects GmbH ECMAScript vs. TypeScript 5 Juni 1997 ES 1.0 Dez. 2009 Juni 2015 ES 5 ES 2015 JavaScript JScript ActionScript 1999 ES 4 Yahoo, Google, … JS wird professionell 1995 März 1996 Brendan Eich Netscape 2.0 / JS 1.0 Mocha / LiveScript IE 3.0 / JScript 10 Tage © Orientation in Objects GmbH ECMAScript vs. TypeScript 6 ES 5 ES 2015 2009 2015 JavaScript wird professionell © Orientation in Objects GmbH ECMAScript vs. TypeScript 7 for (var i = 0; i < 5; i++) { for (var i = 0; i < 5; i++) { var text = "Hello " + i; let text = "Hello " + i; } } console.log(text); console.log(text); Block-Scoped Variablen © Orientation in Objects GmbH ECMAScript vs. TypeScript 8 var Company = (function () { function Company(name) { class Company { this.name = name; constructor(name) { } this.name = name; Company.prototype.getName = function () { } return this.name; getName() { }; return this.name; return Company; } }()); } Klassen © Orientation in Objects GmbH ECMAScript vs. TypeScript 9 class Car { drive() { console.log("Car is driving."); } } - class Cabrio extends Car { openTop() { console.log("Top is open."); } } Vererbung © Orientation in Objects GmbH ECMAScript vs. TypeScript 10 var Person = (function () { function Person() { class Person { } sayYourSpecies() { Person.sayYourSpecies = function () { static console.log("Ich bin ein Mensch"); console.log("Ich bin ein Mensch"); }; } return Person; } }()); Person.sayYourSpecies(); Person.sayYourSpecies(); Statische Elemente © Orientation in Objects GmbH ECMAScript vs. TypeScript 11 constants.js export const HELLO_WORLD = "Hello World"; - index.js import { HELLO_WORLD } from ‘./constants.js' Module © Orientation in Objects GmbH ECMAScript vs. TypeScript 12 var add = function (a, b) { return a + b; var add = (a, b) => a + b; }; Arrow Functions © Orientation in Objects GmbH ECMAScript vs. TypeScript 13 var name = "Thorsten"; let name = "Thorsten"; var t = "Hallo " + name + "!"; let t = `Hallo ${name}!`; Template Strings © Orientation in Objects GmbH ECMAScript vs. TypeScript 14 ES 2015 - Browser Support © Orientation in Objects GmbH ECMAScript vs. TypeScript 15 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; class Foo { }; }(); bar(x) { function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } return `foo bar ${x}`; } } var Foo = function () { function Foo() { _classCallCheck(this, Foo); } } const foo = new Foo(); _createClass(Foo, [{ key: "bar", console.log(foo.bar("baz")); value: function bar(x) { return "foo bar " + x; } }]); return Foo; ES 2015 }(); var foo = new Foo(); console.log(foo.bar("baz")); ES 5 © Orientation in Objects GmbH ECMAScript vs. TypeScript 16 Hört sich doch alles nicht schlecht an. Warum jetzt noch ? © Orientation in Objects GmbH ECMAScript vs. TypeScript 17 (TypeScript, Flow, …) Module (Babel, …) Type Plain scripts systems Compilers Systems © Orientation in Objects GmbH ECMAScript vs. TypeScript 18 © Orientation in Objects GmbH ECMAScript vs. TypeScript 19 ECMAScript that scales © Orientation in Objects GmbH ECMAScript vs. TypeScript 20 Statisch typisiertes Superset von ECMAScript Kompiliert zu ECMAScript © Orientation in Objects GmbH ECMAScript vs. TypeScript 21 2.5 ES 2015 ES 2016 ES 2017 ES 5 Block-Scope Collections ** Operator await/async 2.0 Funktionale Module Arrow Array.prototype.includes Shared memory Statisches Typsystem Programmierung Klassen functions atomics Properties Generatoren … … Promises © Orientation in Objects GmbH ECMAScript vs. TypeScript 22 Open Source © Orientation in Objects GmbH ECMAScript vs. TypeScript 23 Gute Tool-Unterstützung Features from future today © Orientation in Objects GmbH ECMAScript vs. TypeScript 24 CODE COMPLETION ECMAScript © Orientation in Objects GmbH ECMAScript vs. TypeScript 25 CODE COMPLETION TypeScript © Orientation in Objects GmbH ECMAScript vs. TypeScript 26 CODE SMARTER © Orientation in Objects GmbH ECMAScript vs. TypeScript 27 CODE SMARTER lib.es6.d.ts JS Dev Kopfwissen?! © Orientation in Objects GmbH ECMAScript vs. TypeScript 28 CODE SMARTER Finde den Fehler © Orientation in Objects GmbH ECMAScript vs. TypeScript 29 CODE SMARTER © Orientation in Objects GmbH ECMAScript vs. TypeScript 30 CODE CONFIDENTLY © Orientation in Objects GmbH ECMAScript vs. TypeScript 31 CODE BETTER (TODAY) class Person { var Person = /** @class */ (function () { name: string; function Person(name) { this.name = name; constructor(name: string) { } this.name = name; Person.prototype.sayHello = function () { } console.log("Hello my name is " + this.name + "!"); sayHello() { }; console.log(`Hello my name is return Person; ${this.name}!`); }()); } } app.ts app.js (ECMAScript 5) © Orientation in Objects GmbH ECMAScript vs. TypeScript 32 CODE BETTER (TODAY) function sortPersonByName(a: Person[]) function sortPersonByName(a) { { var result = a.slice(0); var result = a.slice(0); result.sort(function (x, y) { result.sort((x, y) => return x.name.localeCompare(y.name); x.name.localeCompare(y.name)); }); return result; return result; } } app.ts app.js (ECMAScript 5) © Orientation in Objects GmbH ECMAScript vs. TypeScript 33 CODE BETTER (TODAY) var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { async function fetchJson(url) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); try { }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; let request = await fetch(url); return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); let text = await request.text(); while (_) try { if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [0, t.value]; switch (op[0]) { return JSON.parse(text); case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; } catch (e) { default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } console.log(`ERROR: ${e.stack}`); if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } }; function fetchJson(url) { return __awaiter(this, void 0, void 0, function () { var request, text, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 3, , 4]); fetchJson( return [4 /*yield*/, fetch(url)]; case 1: request = _a.sent(); return [4 /*yield*/, request.text()]; 'http://example.com/some_file.json') case 2: text = _a.sent(); return [2 /*return*/, JSON.parse(text)]; case 3: .then(obj => console.log(obj)); error_1 = _a.sent(); console.log("ERROR: " + error_1.stack); return [3 /*break*/, 4]; case 4: return [2 /*return*/]; } }); }); app.ts } fetchJson('http://example.com/some_file.json') .then(function (obj) { return console.log(obj); }); ECMAScript 5 © Orientation in Objects GmbH ECMAScript vs. TypeScript 34 CODE BIGGER <3
Recommended publications
  • Marcelo Camargo (Haskell Camargo) – Résumé Projects
    Marcelo Camargo (Haskell Camargo) – Résumé https://github.com/haskellcamargo [email protected] http://coderbits.com/haskellcamargo Based in Joinville / SC – Brazil Knowledge • Programming languages domain: ◦ Ada, AdvPL, BASIC, C, C++, C#, Clipper, Clojure, CoffeeScript, Common LISP, Elixir, Erlang, F#, FORTRAN, Go, Harbour, Haskell, Haxe, Hy, Java, JavaScript, Ink, LiveScript, Lua, MATLAB, Nimrod, OCaml, Pascal, PHP, PogoScript, Processing, PureScript, Python, Ruby, Rust, Self, Shell, Swift, TypeScript, VisualBasic [.NET], Whip, ZPL. • Markup, style and serialization languages: ◦ Markdown, reStructuredText, [X] HTML, XML, CSS, LESS, SASS, Stylus, Yaml, JSON, DSON. • Database management systems: ◦ Oracle, MySQL, SQL Server, IBM DB2, PostgreSQL. • Development for operating systems: ◦ Unix based, Windows (CE mobile included), Android, Firefox OS. • Parsers and compilers: ◦ Macros: ▪ Sweet.js, preprocessor directives. ◦ Parser and scanner generators: ▪ ANTLR, PEG.js, Jison, Flex, re2c, Lime. • Languages: ◦ Portuguese (native) ◦ English (native) ◦ Spanish (fluent) ◦ French (fluent) ◦ Turkish (intermediate) ◦ Chinese (mandarin) (intermediate) ◦ Esperanto (intermediate) Projects • Prelude AdvPL – a library that implements functional programming in AdvPL and extends its syntax to a more expressive one; it's a port of Haskell's Prelude; • Frida – a LISP dialect that runs on top of Node.js; • PHPP – A complete PHP preprocessor with a grammar able to identify and replace tokens and extend/modify the language syntax, meant to be implemented
    [Show full text]
  • Javascript Tomasz Pawlak, Phd Marcin Szubert, Phd Institute of Computing Science, Poznan University of Technology Presentation Outline
    INTERNET SYSTEMS JAVASCRIPT TOMASZ PAWLAK, PHD MARCIN SZUBERT, PHD INSTITUTE OF COMPUTING SCIENCE, POZNAN UNIVERSITY OF TECHNOLOGY PRESENTATION OUTLINE • What is JavaScript? • Historical Perspective • Basic JavaScript • JavaScript: The Good Parts • JavaScript: The Bad Parts • Languages that compile to JavaScript • ECMAScript 6 MODERN WEB APPLICATION DATABASE SERVER HTML defines structure and content, CSS sets the formatting and appearance, JavaScript adds interactivity to a webpage and allows to create rich web applications. WHY JAVASCRIPT? • JavaScript is the language of the web browser — it is the most widely deployed programming language in history • At the same time, it is one of the most despised and misunderstood programming languages in the world • The amazing thing about JavaScript is that it is possible to get work done with it without knowing much about the language, or even knowing much about programming. It is a language with enormous expressive power. It is even better when you know what you’re doing — JAVASCRIPT: THE GOOD PARTS , DOUGLAS CROCKFORD WHY JAVASCRIPT? • Q: If you had to start over, what are the technologies, languages, paradigms and platforms I need to be up- to-date and mastering in my new world of 2014? • A: Learn one language you can build large systems with AND also learn JavaScript. • JavaScript is the language of the web. The web will persist and the web will win. That's why I suggest you learn JavaScript — S C O T T HANSELMAN , 2 0 1 4 WHAT IS JAVASCRIPT? • JavaScript is a cross-platform, object-oriented, functional, lightweight, small scripting language. • JavaScript contains a standard library of built-in objects, such as Array and Math, and a core set of language elements such as operators, control structures, and statements.
    [Show full text]
  • A Javascript Mode for Yi
    Abstract Yi is a text editor written in the lazy functional programming language Haskell, which makes it possible to define precise editing modes using an abstract syntax tree provided online using the lazy and incremental parser library in Yi. We have developed a JavaScript mode for this editor using this parser library to accurately point out possible errors in the source code. The mode accurately highlights syntactical errors as the user types and pro- vides a verifier to check the semantics of the source code. It supports most of the syntax from JavaScript 1.8 and can readily be extended with more functionality. The mode can also be used as a starting point for future developers of C-like modes for Yi. Writing a responsive parser for Yi proved non-trivial, because of the trade-off between parser performance and accuracy. This report describes how to write a mode for Yi and the different problems encountered during the working process of the JavaScript mode. It also describes in what ways the problems were solved. Sammanfattning Yi är en textredigerare skriven i det lata funktionella programspråket Haskell, som gör det möjligt att definiera noggranna redigeringslägen med hjälp av ett abstrakt syntaxträd som tillhandahålls av det lata och inkre- mentella parsningsbiblioteket i Yi. Vi har utvecklat ett JavaScript-läge till denna redigerare med hjälp av detta parsningsbibliotek för att exakt utpeka möjliga fel i källkoden. Läget markerar syntaktiska fel medan användaren skriver och tillhandahåller en verifierare för att kontrollera semantiken i källkoden. Det stödjer större delen av syntaxen i JavaScript 1.8 och kan enkelt utökas med mer funk- tionalitet.
    [Show full text]
  • Declare Named Function Coffeescript
    Declare Named Function Coffeescript Dannie remains feudalistic after Waring pikes unendurably or understudied any issue. Mickie waters outrageously. Hansel ratchet her saffrons banteringly, drivable and grouchier. This nintendo switch from running code must carefully update clause runs to adjust a named function with leading number of place You down need the add furniture to execute coffee script code in an HTML file In other cases I've seen people scour the attributes of typecoffeescript and typecoffee so they might offer for you fill well. CoffeeScript and Named Functions Software Engineering. Thanks for contributing an hook to socket Overflow! It was expected. Tech Book time Off CoffeeScript Vs Simplifying Lucid Mesh. Function var age myName name names say i len myName. CoffeeScript Interview Questions for beginners and professionals with decent list at top frequently. In its own derivatives of array which others have to motivate us with other languages they different from christian faith: was so why i actually declare named function coffeescript, rather than enforcing classical object. Therefore, where site navigate the funeral was announced for the procedure time. Do exploration spacecraft enter your function invocation can even though, coffeescript file is named functions like java developers have you want a string, dynamic import prelude. This regard where coffeescript can be a fee problem. You declare variables declared in other objects from the bottom, things for declaration location data type errors is where it stopped requiring by opening a lesson here! Already there an account? Behind them in function declaration, or named shorthand method needs to declare it actually quite surprising.
    [Show full text]
  • Jquery Cloudflare Your Company Via Grunt-Contrib-Uglify Used to Build That Jquery
    JavaScript & Security get married Yan Zhu NCC Group SF Open Forum 9/17/15 F YEAH RUSTIC PENNSYLVANIA WEDDING THEME!! About me: ● Security Engineer at Yahoo! by day ● EFF Technology Fellow (Let’s Encrypt, HTTPS Everywhere) ● That’s a real photo of me -> Our story 09.??.1995 08.19.15 JavaScript released! Started investigating JS optimizer security as a side project. ??.??.1991 01.05.11 08.23.15 I was born! Wrote my first line of Got bored and mostly JavaScript. stopped working on this project. This talk is about JavaScript. (sorry not sorry) JAVASCRIPT What runs JS? ● Browsers ● Servers (node/io.js) ● Soon: everything Inspiration GET YOUR COPY TODAY PoC||GTFO 0x08 https://www.alchemistowl.org/pocorgtfo/ “No amount of source-level verification or scrutiny will protect you from using untrusted code. In demonstrating the possibility of this kind of attack, I picked on the C compiler. I could have picked on any program-handling program such as an assembler, a loader, or even hardware microcode. As the level of program gets lower, these bugs will be harder and harder to detect.” Ken Thompson, Reflections on Trusting Trust (1984) seen in the wild! JS isn’t “compiled,” but ... ● Transpilers to JS exist for every major language ● JS sugar (CoffeeScript, Coco, LiveScript, Sibilant) ● Optimizers (Closure, Uglify) ● Static typing (Closure, Flow, TypeScript, asm.js) ● Language extensions (React’s JSX) ● ES6 -> ES5 converter (Babel) more at https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that- compile-to-js Let’s get hackin’ Step 1: Pick a JS library Who uses UglifyJS2? INSERT OVERCROPPED LOGO gruntjs jquery cloudflare your company via grunt-contrib-uglify used to build that jquery.
    [Show full text]
  • Kaang: a Restful API Generator for the Modern Web
    Kaang: A RESTful API Generator for the Modern Web Ricardo Queirós CRACS & INESC-Porto LA & DI/ESMAD/P.PORTO, Porto, Portugal [email protected] https://orcid.org/0000-0002-1985-6285 Abstract Technology is constantly evolving, as a result, users have become more demanding and the ap- plications more complex. In the realm of Web development, JavaScript is growing in a surprising way, already leaving the boundaries of the browser, mainly due to the advent of Node.js. In fact, JavaScript is constantly being reinvented and, from the ES2015 version, began to include the OO concepts typically found in other programming languages. With Web access being mostly made by mobile devices, developers face now performance challenges and need to perform a plethora of tasks that weren’t necessary a decade ago, such as managing dependencies, bundling files, minifying code, optimizing images and others. Many of these tasks can be achieved by using the right tools for the job. However, developers not only have to know those tools, but they also must know how to access and operate them. This process can be tedious, confusing, time-consuming and error-prone. In this paper, we present Kaang, an automatic generator of RESTFul Web applications. The ultimate goal of Kaang is to minimize the impact of creating a RESTFul service by automating all its workflow (e.g., files structuring, boilerplate code generation, dependencies management, and task building). This kind of generators will benefit two types of users: will help novice developers to decrease their learning curve while facing the new frameworks and libraries commonly found in the modern Web and speed up the work of expert developers avoiding all the repetitive and bureaucratic work.
    [Show full text]
  • JAVASCRIPT TRANSPILERI Završni Rad
    SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA Preddiplomski studij JAVASCRIPT TRANSPILERI Završni rad Zvonimir Grubišić Osijek, 2017 Obrazac Z1P - Obrazac za ocjenu završnog rada na preddiplomskom sveučilišnom studiju Osijek, 23.09.2018. Odboru za završne i diplomske ispite Prijedlog ocjene završnog rada Ime i prezime studenta: Zvonimir Grubišić Studij, smjer: Preddiplomski sveučilišni studij Računarstvo Mat. br. studenta, godina upisa: R3637, 29.09.2017. OIB studenta: 50946540896 Mentor: Izv. prof. dr. sc. Irena Galić Sumentor: Hrvoje Leventić Sumentor iz tvrtke: Naslov završnog rada: Javascript transpileri Znanstvena grana rada: Programsko inženjerstvo (zn. polje računarstvo) Predložena ocjena završnog rada: Izvrstan (5) Primjena znanja stečenih na fakultetu: 3 bod/boda Kratko obrazloženje ocjene prema Postignuti rezultati u odnosu na složenost zadatka: 3 bod/boda Kriterijima za ocjenjivanje završnih i Jasnoća pismenog izražavanja: 3 bod/boda diplomskih radova: Razina samostalnosti: 3 razina Datum prijedloga ocjene mentora: 23.09.2018. Datum potvrde ocjene Odbora: 26.09.2018. Potpis: Potpis mentora za predaju konačne verzije rada u Studentsku službu pri završetku studija: Datum: IZJAVA O ORIGINALNOSTI RADA Osijek, 01.10.2018. Ime i prezime studenta: Zvonimir Grubišić Studij: Preddiplomski sveučilišni studij Računarstvo Mat. br. studenta, godina upisa: R3637, 29.09.2017. Ephorus podudaranje [%]: 1% Ovom izjavom izjavljujem da je rad pod nazivom: Javascript transpileri izrađen pod vodstvom mentora Izv. prof. dr. sc. Irena Galić i sumentora Hrvoje Leventić moj vlastiti rad i prema mom najboljem znanju ne sadrži prethodno objavljene ili neobjavljene pisane materijale drugih osoba, osim onih koji su izričito priznati navođenjem literature i drugih izvora informacija. Izjavljujem da je intelektualni sadržaj navedenog rada proizvod mog vlastitog rada, osim u onom dijelu za koji mi je bila potrebna pomoć mentora, sumentora i drugih osoba, a što je izričito navedeno u radu.
    [Show full text]
  • Javascript Overview
    JJAAVVAASSCCRRIIPPTT -- OOVVEERRVVIIEEWW http://www.tutorialspoint.com/javascript/javascript_overview.htm Copyright © tutorialspoint.com What is JavaScript ? Javascript is a dynamic computer programming language. It is lightweight and most commonly used as a part of web pages, whose implementations allow client-side script to interact with the user and make dynamic pages. It is an interpreted programming language with object-oriented capabilities. JavaScript was first known as LiveScript, but Netscape changed its name to JavaScript, possibly because of the excitement being generated by Java. JavaScript made its first appearance in Netscape 2.0 in 1995 with the name LiveScript. The general-purpose core of the language has been embedded in Netscape, Internet Explorer, and other web browsers. The ECMA-262 Specification defined a standard version of the core JavaScript language. JavaScript is a lightweight, interpreted programming language. Designed for creating network-centric applications. Complementary to and integrated with Java. Complementary to and integrated with HTML. Open and cross-platform Client-side JavaScript Client-side JavaScript is the most common form of the language. The script should be included in or referenced by an HTML document for the code to be interpreted by the browser. It means that a web page need not be a static HTML, but can include programs that interact with the user, control the browser, and dynamically create HTML content. The JavaScript client-side mechanism provides many advantages over traditional CGI server-side scripts. For example, you might use JavaScript to check if the user has entered a valid e-mail address in a form field. The JavaScript code is executed when the user submits the form, and only if all the entries are valid, they would be submitted to the Web Server.
    [Show full text]
  • Javascript Specialist Academic Student Guide Web Development Series ECL02-CEJSRF-PR-1109 • Version 1.01 • Rd092811
    JavaScript Specialist Academic Student Guide Web Development Series ECL02-CEJSRF-PR-1109 • version 1.01 • rd092811 EVALUATION COPY EVALUATION COPY JavaScript Specialist Academic Student Guide EVALUATION COPY President/Chief Certification Architect James Stanger, Ph.D. Vice President, Operations Todd Hopkins Senior Content Developer Kenneth A. Kozakis Managing Editor Susan M. Lane Editor Sarah Skodak Project Manager/Publisher Tina Strong Customer Service Certification Partners, LLC 1230 W. Washington St., Ste. 111 Tempe, AZ 85281 (602) 275-7700 Copyright © 2011, All rights reserved. EVALUATION COPY JavaScript Specialist Developers Brian Danks, Elliot Cherner, Ashley Craft and Susan M. Lane Contributors Lisa Pease Editor Susan M. Lane Project Manager/Publisher Tina Strong Trademarks Certification Partners is a trademark of Certification Partners, LLC. All product names and services identified throughout this book are trademarks or registered trademarks of their respective companies. They are used throughout this book in editorial fashion only. No such use, or the use of any trade name, is intended to convey endorsement or other affiliation with the book. Copyrights of any screen captures in this book are the property of the software's manufacturer. Disclaimer Certification Partners, LLC, makes a genuine attempt to ensure the accuracy and quality of the content described herein; however, Certification Partners makes no warranty, express or implied, with respect to the quality, reliability, accuracy, or freedom from error of this document or the products it describes. Certification Partners makes no representation or warranty with respect to the contents hereof and specifically disclaims any implied warranties of fitness for any particular purpose. Certification Partners disclaims all liability for any direct, indirect, incidental or consequential, special or exemplary damages resulting from the use of the information in this document or from the use of any products described in this document.
    [Show full text]
  • N2O Most Powerful Erlang Web Framework @5HT How Do I Shot Web? Micro REST
    N2O Most Powerful Erlang Web Framework @5HT How do I shot Web? Micro REST Python Flask Ruby Sinatra PHP Silex Scala Scalatra Concurrency in Mind Ruby Celluloid PHP React PHP phpDaemon Java+Scala Play SPA Angular Meteor Ember Chaplin Brunch D3 Knockout React Backbone jQuery Functional DSL Scala Lift Erlang Nitrogen Haskell BlazeHtml OCaml Ocsigen F# WebSharper Clojure Laser Enlive Compojure Ring Hiccup ClojureScript Om http-kit aleph noir JVM Elixir Weber def action(_, conn) do {:render, [project: "simpleTodo"], []} end def add([body: body], _conn) do {:json, [response: "ok"], [{"Content-Type", "application/json"}]} end def wrong(_, _) do {:redirect, "/"} end Erlang ChicagoBoss DTL Engine Database Connectivity PubSub Ruby on Rails like Nitrogen N2O ~2000 LOC One Process per Connection Binary Page Construction Zero Bridge GProc Pub/Sub WebSockets, KVS DB Tuned Layers static and dynamic Routing Path cleaned Query Parser Session Cookies stored in ETS cached DTL Templates optimized Nitrogen DSL rendering HTML Elements binaries JavaScript Actions deferred Layers Performance components TCP conn (K) PHP5 FCGI Simple Script <?php ?> 5 Nitrogen No session, No DSL, DTL 1 N2O Sessions, DSL, DTL 7 N2O Sessions, no DSL, DTL 10 N2O No Sessions, no DSL, DTL 13 On same machine raw webserver performance measured with wrk: NGINX -- 60K Cowboy -- 30K Measuring Tools requests pages/sec latency (ms) wrk 15K 13628.86 18.88 ab 10K 5464.63 190 httperf 10K 3623.50 200 siege 1K 884.51 430 On same machine raw webserver performance measured with wrk: NGINX -- 60K Cowboy -- 30K Decreasing Latency From 2x to ∞ Deliver HTML ASAP Deferred JavaScript delivery after WebSocket connection established <script> TransitionProcess = '<0.7780.5>' </script> socket.send(["N2O",TransitionProcess]).
    [Show full text]
  • {Download PDF} If Hemingway Wrote Javascript
    IF HEMINGWAY WROTE JAVASCRIPT PDF, EPUB, EBOOK Angus Croll | 192 pages | 21 Jan 2015 | No Starch Press,US | 9781593275853 | English | Daly City, California, United States If Hemingway Wrote JavaScript PDF Book While we might be able to write about cooking in English, we would be lacking in the vocabulary and paradigms present in French that are essential to cooking. Netscape 4 came with its own document. Yet Adobe has already released Premiere Express for online video editing and is putting the finishing touches on Photoshop Express for Web-based photo editing. They develop new software programs and write languages that computers can follow. Even though web pages from different domains can be displayed at the same time, either in separate browser windows or in separate frames within the same browser window, the JavaScript running on a web page belonging to one domain cannot access any information about a web page from a different domain. Initially, Netscape 2 was the only browser to support a scripting language and that language was originally called LiveScript. Currying is not implicit in JavaScript. Sure, in many ways it's technically possible to accomplish given that JavaScript is a powerful technology with the capability to manipulate images, carry out animation timing, etc. If you err on the side of viewing JavaScript as an "enhancement technology," you're unlikely to go wrong. JavaScript cannot close a window if it didn't open it. This is sounding more like the Web we know and love, a web of pages. We should have a diversity of programming languages.
    [Show full text]
  • How It Feels to Learn Javascript in 2016
    Jose Aguinaga Follow Web Engineer. Previously @numbrs, @plaidhq, currently @getflynt. Javascript, #people, startups, finte… Oct 3, 2016 · 12 min read How it feels to learn JavaScript in 2016 No JavaScript frameworks were created during the writing of this article. The following is inspired by the article “It’s the future” from Circle CI. You can read the original here. This piece is just an opinion, and like any JavaScript framework, it shouldn’t be taken too seriously. Hey, I got this new web project, but to be honest I haven’t coded much web in a few years and I’ve heard the landscape changed a bit. You are the most up-to date web dev around here right? -The actual term is Front End engineer, but yeah, I’m the right guy. I do web in 2016. Visualisations, music players, flying drones that play football, you name it. I just came back from JsConf and ReactConf, so I know the latest technologies to create web apps. Cool. I need to create a page that displays the latest activity from the users, so I just need to get the data from the REST endpoint and display it in some sort of filterable table, and update it if anything changes in the server. I was thinking maybe using jQuery to fetch and display the data? -Oh my god no, no one uses jQuery anymore. You should try learning React, it’s 2016. Oh, OK. What’s React? -It’s a super cool library made by some guys at Facebook, it really brings control and performance to your application, by allowing you to handle any view changes very easily.
    [Show full text]