96
Survive JavaScript Strategies and Tricks Juho Vepsäläinen AgileJkl 2013

Survive JavaScript - Strategies and Tricks

Embed Size (px)

DESCRIPTION

Getting started with JavaScript can be somewhat challenging. Especially given how fast the scenery changes. In this presentation I provide a general view of the state of the art. Besides this I go through various JavaScript related tricks that I've found useful in practice. survivejs.com is a companion site of the presentation and goes on further detail in various topics. The original presentation was given at AgileJkl, a local agile conference held in Central Finland.

Citation preview

Page 1: Survive JavaScript - Strategies and Tricks

Survive JavaScriptStrategies and Tricks

Juho Vepsäläinen

AgileJkl 2013

Page 2: Survive JavaScript - Strategies and Tricks

What's in Store?

Web Development Strategies

JavaScript Tricks

Conclusion

·

How Did We Get Here

Where Are We Now

Where Are We Headed

-

-

-

·

Node.js

Development Tools

Structuring Code

Finding Libraries

Testing

-

-

-

-

-

·

Page 3: Survive JavaScript - Strategies and Tricks

Web Development Strategies

Page 4: Survive JavaScript - Strategies and Tricks

Strategy for Goldfishes

Source: HikingArtist.com (CC BY-NC-ND)

Page 5: Survive JavaScript - Strategies and Tricks

Strategy for the Rest of Us

Page 6: Survive JavaScript - Strategies and Tricks

How Did We Get Here

Page 7: Survive JavaScript - Strategies and Tricks

Ten Days to JavaScript

1995 - Brendan Eich's ten days → Mocha

Known as LiveScript till the marketing folks changed thename

Even though has Java in name, completely different

Influence of Java 1.0 visible mainly in Math and Timemodules

Prototypal inheritance a lá Self

Dynamic, flexible, lambdas

Scheme in disguise - See The Little JavaScripter byCrockford

·

·

·

·

·

·

·

Page 8: Survive JavaScript - Strategies and Tricks

A Bit of JavaScript

var helloAgileJkl = hello.bind(undefined, 'AgileJkl!');

helloAgileJkl();

function hello(target) { console.log('Hello ' + target);}

// or could justconsole.log('Hello AgileJkl!');// to avoid over-engineering!

JAVASCRIPT

Page 9: Survive JavaScript - Strategies and Tricks

Web - From Documents to Applications

Web as a Document Platform

Improved Interactivity

Web as an Application Platform

·

1995 - Brendan Eich's ten days

1999 - ES3 (modern baseline), Mozilla established

-

-

·

2005 - AJAX, dynamic loading (search for instance)

2008 - RIP ES4, parts of HTML5 emerge, Chrome (V8)

2009 - ES5, Chrome OS, Node.js

-

-

-

·

2012 - HTML5 well supported (interesting JS APIs)-

Source: Brendan Eich at Strange Loop '12

Page 10: Survive JavaScript - Strategies and Tricks

JavaScript Has Traction

Source: Redmonk

Page 11: Survive JavaScript - Strategies and Tricks

Crockford

Source: superfluity (CC BY-NC-SA)

Page 12: Survive JavaScript - Strategies and Tricks

The Good Parts vs. The Rest

Source: Oльга + Haфaн (CC BY)

Page 13: Survive JavaScript - Strategies and Tricks

Recap

JavaScript, an unlikely winner

Language of the web

More powerful than it seems

Web isn't just about documents, now applications too

·

·

·

·

Page 14: Survive JavaScript - Strategies and Tricks

Where Are We Now

Page 15: Survive JavaScript - Strategies and Tricks

Elements of Web Applications

Page 16: Survive JavaScript - Strategies and Tricks

Logic

Page 17: Survive JavaScript - Strategies and Tricks

JavaScript

Page 18: Survive JavaScript - Strategies and Tricks

CoffeeScript

CoffeeScript is a little language that compiles into JavaScript. Underneath that awkwardJava-esque patina, JavaScript has always had a gorgeous heart. CoffeeScript is an attempt toexpose the good parts of JavaScript in a simple way.

The golden rule of CoffeeScript is: "It's just JavaScript". The code compiles one-to-one into theequivalent JS, and there is no interpretation at runtime. You can use any existing JavaScript libraryseamlessly from CoffeeScript (and vice-versa). The compiled output is readable and pretty-printed,passes through JavaScript Lint without warnings, will work in every JavaScript runtime, and tendsto run as fast or faster than the equivalent handwritten JavaScript.

Latest Version: 1.6.2

sudo npm install -g coffee-script

Overview

CoffeeScript on the left, compiled JavaScript output on the right.

# Assignment:number = 42opposite = true

var cubes, list, math, num, number, opposite, race, square, __slice = [].slice;

TABLE OF CONTENTS TRY COFFEESCRIPT ANNOTATED SOURCE

Page 19: Survive JavaScript - Strategies and Tricks

Dart

(/)

Dart brings structure to web app

engineering with a new language,

libraries, and tools. Read about our

new M4 release!

(http://news.dartlang.org/2013/04/core-

libraries-stabilize-with-darts-

new.html)

News (http://news.dartlang.org/) TweetTweetSearch Docs Tools Resources Development

Page 20: Survive JavaScript - Strategies and Tricks

TypeScript

Get TypeScript Now

TypeScript is a language for application-scale JavaScript development.TypeScript is a typed superset of JavaScript that compiles to plainJavaScript.Any browser. Any host. Any OS. Open Source.

Starts from JavaScript, Ends withJavaScriptTypeScript starts from the syntax and semantics that millions of JavaScript developers knowtoday.

learn play get it run it join in

Page 21: Survive JavaScript - Strategies and Tricks

And many others

altJS

Page 22: Survive JavaScript - Strategies and Tricks

Markup

Page 23: Survive JavaScript - Strategies and Tricks

HTML

Page 24: Survive JavaScript - Strategies and Tricks

Jade

doctype 5html(lang="en") head title= pageTitle script(type='text/javascript') if (foo) { bar() } body h1 Jade - node template engine #container if youAreUsingJade

<!DOCTYPE html><html lang="en"> <head> <title>Jade</title> <script type="text/javascript"> if (foo) { bar() } </script> </head> <body> <h1>Jade - node template engine</h1>

View Documentation

Node Template Engine

Page 26: Survive JavaScript - Strategies and Tricks

Handlebars

Handlebars provides the power necessary to let you build semantic templateseffectively with no frustration.

Mustache templates are compatible with Handlebars, so you can take a Mustachetemplate, import it into Handlebars, and start taking advantage of the extra Handlebarsfeatures.

Download: 1.0.0-rc.3Download: 1.0.0-rc.3Download: runtime-1.0.0-rc.3

Getting Started

Page 27: Survive JavaScript - Strategies and Tricks

Transparency

Examples

Assigning valuesAssigning values

Iterating over a listIterating over a list

Nested listsNested lists

Nested objectsNested objects

Transparency is a minimal template engine for jQuery. It maps JSONTransparency is a minimal template engine for jQuery. It maps JSONobjects to DOM elements with zero configuration. objects to DOM elements with zero configuration. Just call .render()Just call .render()

CoffeeScript JavaScript

hello = hello: "Hello!" hi: "<i>Hi there!</i>" span: "Goodbye!"

$('.container').render hello

Jade HTML

.container #hello .hi span

Page 28: Survive JavaScript - Strategies and Tricks

Styling

Page 29: Survive JavaScript - Strategies and Tricks

CSS

Page 30: Survive JavaScript - Strategies and Tricks

LESS

Write some LESS:

@base: #f938ab;

.box-shadow(@style, @c) when (iscolor(@c)) { box-shadow: @style @c; -webkit-box-shadow: @style @c; -moz-box-shadow: @style @c;}.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) { .box-shadow(@style, rgba(0, 0, 0, @alpha));}.box { color: saturate(@base, 5%); border-color: lighten(@base, 30%); div { .box-shadow(0 0 5px, 30%) }}

Compile to CSS:

npm install -g lesslessc styles.less styles.css

version 1.3.3changelog

The dynamic stylesheet language.

LESS extends CSS with dynamic behavior such asvariables, mixins, operations and functions.

LESS runs on both the server-side (with Node.jsand Rhino) or client-side (modern browsers only).

overview   usage   language   function reference   source   about   try it now! FollowFollow

Page 31: Survive JavaScript - Strategies and Tricks

SASS

$ gem install sass $ mv style.css style.scss $ sass --watch style.scss:style.css

About Tutorial Documentation Blog Try Online

Latest Release: Media Mark (3.2.7)What's New?

Download

Editor Support

Development

Sass makes CSS fun again. Sass is an extension of CSS3, adding nested rules, variables, mixins,selector inheritance, and more. It’s translated to well-formatted, standard CSS using the commandline tool or a web-framework plugin.

Sass has two syntaxes. The most commonly used syntax is known as “SCSS” (for “Sassy CSS”), and isa superset of CSS3’s syntax. This means that every valid CSS3 stylesheet is valid SCSS as well. SCSSfiles use the extension .scss.

The second, older syntax is known as the indented syntax (or just “.sass”). Inspired by Haml’sterseness, it’s intended for people who prefer conciseness over similarity to CSS. Instead of brackets

Page 32: Survive JavaScript - Strategies and Tricks

Twitter Bootstrap

Bootstrap (./index.html)

BootstrapSleek, intuitive, and powerful front-endframework for faster and easier web

development.

Download Bootstrap (assets/bootstrap.zip)

Page 33: Survive JavaScript - Strategies and Tricks

Zurb Foundation

Features (grid.php) Add-ons (templates.php) Case Studies (case-jacquelinewest.php) Docs (docs) Training (training.php)

Foundation (http://foundation.zurb.com)

FoundationThe most advanced responsivefront-end framework in the world.

Download Foundation 4 (download.php)

10.9k stargazers(http://github.com/zurb/foundation)

@foundationzurb(http://twitter.com/foundationzurb)

Page 34: Survive JavaScript - Strategies and Tricks

Data

Page 35: Survive JavaScript - Strategies and Tricks

Data

Usually handled with a backend or external services(Disqus for comments for example)

RESTful interfaces (client-side MVC)

Local caching (localStorage ie.)

Offline usage (replication, PouchDB)

·

·

·

·

Page 36: Survive JavaScript - Strategies and Tricks

Big Data

Source: infocux Technologies (CC BY-NC)

Page 37: Survive JavaScript - Strategies and Tricks

Recap

Logics are violet

Markups are blue

Styling is sweet

And so is data

Page 38: Survive JavaScript - Strategies and Tricks

Where Are We Headed

Page 39: Survive JavaScript - Strategies and Tricks

Enlightenment

Source: michael.heiss (CC BY-NC-SA)

Page 40: Survive JavaScript - Strategies and Tricks

Source: Augie Schwer (CC BY-SA)

Page 41: Survive JavaScript - Strategies and Tricks

Source: letmehearyousaydeskomdeskom (CC BY-SA)

Page 42: Survive JavaScript - Strategies and Tricks

Shim

a thin often tapered piece of material (as wood, metal, orstone) used to fill in space between things (as for support,leveling, or adjustment of fit)

Source: Merriam-Webster, esagor (CC BY-NC)

Page 43: Survive JavaScript - Strategies and Tricks

caniuse.com

Index Tables

Can I use...Compatibility tables for support of HTML5, CSS3, SVG and more in desktop and mobile browsers.

Latest update: Three new features added: Shadow DOM, WebP images & Intrinsic width & height (April 3, 2013)

Search:border‑radius, WebGL, woff, etc

CSS@font­face Web fontscalc() as CSS unit value2.1 selectorsCountersFeature QueriesFilter EffectsGenerated contentGradientsGrid LayoutHyphenationinline­blockMasksmin/max­width/heightoutlineposition:fixedRegions

HTML5Audio elementCanvas (basic support)Color input typecontenteditable attribute (basic support)Datalist elementdataset & data­* attributesDate/time input typesDetails & Summary elementsDownload attributeDrag and DropForm validationHTML5 form featuresinput placeholder attributeNew semantic elementsNumber input typeOffline web applications

SVGInline SVG in HTML5SVG (basic support)SVG effects for HTMLSVG filtersSVG fontsSVG fragment identifiersSVG in CSS backgroundsSVG in HTML img elementSVG SMIL animationAll SVG features

Otherasync attribute for external scripts

TOPSuggestions  Feed  Twitter

I mpo rt s tats FA Q Reso u rces Embed

564

Page 44: Survive JavaScript - Strategies and Tricks

Source: T.R.G. (CC BY-NC-SA)

Page 45: Survive JavaScript - Strategies and Tricks

Rise of the Mobile

Page 46: Survive JavaScript - Strategies and Tricks

Android

Source: San Diego Shooter (CC BY-NC-ND)

Page 47: Survive JavaScript - Strategies and Tricks

Firefox OS, Jolla etc.

Page 48: Survive JavaScript - Strategies and Tricks

Source: Brian LeRoux (CC BY-NC-SA)

Page 49: Survive JavaScript - Strategies and Tricks

Native vs. HTML5

Native apps still have their advantages

JS is a good alternative for prototyping

Available technology keeps maturing

And we'll likely see better platform support

·

·

·

·

Page 50: Survive JavaScript - Strategies and Tricks

Web Architectures

Page 51: Survive JavaScript - Strategies and Tricks

Blog (Static Site)

Page 52: Survive JavaScript - Strategies and Tricks

JSter (Portal)

Page 53: Survive JavaScript - Strategies and Tricks

Future JSter?

Page 54: Survive JavaScript - Strategies and Tricks

Other Considerations

What belongs to server, what to client and why (businessgoals)

Client-side MVC is not a silver bullet

Basecamp's experiences (hint: pushState, aggressivecaching)

Synchronization, offline usage, skills, time, budget...

Fashion. Techs come and go

Up and coming? Mixed approaches. Examples: Meteor,Derby, mojito, rendr

·

·

·

·

·

·

Page 55: Survive JavaScript - Strategies and Tricks

Recap

Web dev is as hard as you make it

Especially on the bleeding edge

Fortunately a bit of tape fixes anything

Mobile on the rise, native HTML5 apps not mainstream yet

Web architectures - from monoliths to distributed

·

·

·

·

·

Page 56: Survive JavaScript - Strategies and Tricks

JavaScript Tricks

Page 57: Survive JavaScript - Strategies and Tricks

Node.js

Page 58: Survive JavaScript - Strategies and Tricks

Trends

Source: Google Trends

Page 59: Survive JavaScript - Strategies and Tricks

Packages per Year

Python: 29,720 packages / 22 years = 1351 packages / year

Ruby: 54,385 packages / 18 years = 3022 packages / year

Node.js: 26,966 packages / 4 years = 6742 packages / year

·

·

·

Source: Gregg Gaines

Page 60: Survive JavaScript - Strategies and Tricks

Server Using Callbacks

var http = require('http');

http.createServer( function(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello AgileJkl!\n'); }).listen(8000);

JAVASCRIPT

Short and sweet

Express is very popular for more complex cases

·

·

Page 61: Survive JavaScript - Strategies and Tricks

Server Using EventStreams

var http = require('http');

var s = new http.Server();

s.on('request', function(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello AgileJkl!\n');});

s.listen(8000);

JAVASCRIPT

Viable alternative to callbacks at times

More info at Node.js: Patterns and Opinions by @izs (theNode guy)

·

·

Page 62: Survive JavaScript - Strategies and Tricks

Recap

Excellent for prototyping

Strong ecosystem thanks to NPM

Develops at a blistering pace

·

·

·

Page 63: Survive JavaScript - Strategies and Tricks

Development Tools

Page 64: Survive JavaScript - Strategies and Tricks

Vim, Emacs, Sublime Text, WebStorm...

Page 65: Survive JavaScript - Strategies and Tricks

Chrome Inspector

See also Firebug·

Source: Chrome DevTools

Page 66: Survive JavaScript - Strategies and Tricks

LiveReload

LiveReload 2 proudly presents…

The Web Developer Wonderland(a happy land where browsers don't need a Refresh button)

CSS edits and image changes apply live.

CoffeeScript, SASS, LESS and others just work.

Citizenship is granted through the Mac App Store.Windows permanent residency issues are being worked out,temporary stay already allowed.

Page 67: Survive JavaScript - Strategies and Tricks

JSLint

clear

Read the instructions.Set the options.Enjoy The Good Parts.Donate.

The JavaScript Code Quality Tool

Edition 2013-04-09

Source

// Paste quality code here

See also JSHint·

Page 68: Survive JavaScript - Strategies and Tricks

jsFiddle

Run Save TidyUp JSHint Login/Sign up

No‑Library (pure JS)

onLoad

Tip JSFiddle

Frameworks & Extensions

Fiddle Options

External Resources

Languages

Ajax Requests

Examples

Legal, Credits and Links

Gittip

Keyboard shortcuts?

1

1

1HTML

JavaScript

CSS

Result

Others: jsbin, jsdo.it, ...·

Page 69: Survive JavaScript - Strategies and Tricks

Cloud9 IDE

Cloud9 IDE - Online IDEGive us a shout out: Share on twitter Share on Google Share on facebook Share on emailSign up

Sign outUsername or e‑mail Password Sign In

Keep me signed inForgot password? Resend activation email

Or sign in instantly with:

NEWS: The Changelog of March: Stability, Performance, Features

Hey there! Over the past month we have worked very hard on improving the stability and performance of our service. In addition, we also worked onsome interface changes ...read the full article | see all articles

PricingFeaturesBlogCompany

Company•Board Members•Jobs•Press•Contact

Node.jsNode.js•Nodebits.com•NodeManual.org

SupportSupport•Status•Documentation

Your code anywhere, anytime...

Page 70: Survive JavaScript - Strategies and Tricks

Recap

Traditional editors and IDEs are fine

Additional tooling available, use it

Future in the web?

·

·

·

Page 71: Survive JavaScript - Strategies and Tricks

Structuring Code

Page 72: Survive JavaScript - Strategies and Tricks

The Anti-Pattern

<script src='jquery-current.js' type='text/javascript'></script><script src='sorttable.js' type='text/javascript'></script><script src='scripts.js' type='text/javascript'></script><script src='miniCalendar.js' type='text/javascript'></script>

HTML

Each include has to be defined by hand

Brittle and prone to error, especially with large codebases

Does not encourage to modularity

Hard to reuse

·

·

·

·

Page 73: Survive JavaScript - Strategies and Tricks

Concatenate Scripts

<script src='application.js' type='text/javascript'></script> HTML

Old skool but works

Less overhead at HTML

Still, running into dependency order problem atconcatenation

Possible to complement by loading scripts (ie. jQuery)from a CDN

Nevertheless a step forward

·

·

·

·

·

Page 74: Survive JavaScript - Strategies and Tricks

RequireJS and AMD + Bower

<script data-main="scripts/main" src="scripts/require.js"></script> HTML

define(['jquery', './math'], function($, math) { return { // exports vector: function() {...} };});

JAVASCRIPT

Modular, asynchronous approach

Includes define overhead (possible to mimic Node.jsconvention, though)

Optimizer resolves dependencies and creates build(loadable with Almond)

Configuration complex at times

·

·

·

·

Page 75: Survive JavaScript - Strategies and Tricks

Browserify + NPM

<script src='application.js' type='text/javascript'></script> HTML

var $ = require('jquery');var math = require('./math');

exports.vector = function() {...};

JAVASCRIPT

Allows to use Node.js module convention (CJS)

Better yet allows to hook into NPM ecosystem!

Still fairly bleeding edge

·

·

·

Page 76: Survive JavaScript - Strategies and Tricks

Recap

No official module system yet (ES6?)

Many alternatives (AMD, CJS etc.)

browserify looks promising (NPM!)

·

·

·

Page 77: Survive JavaScript - Strategies and Tricks

Finding Libraries

Page 78: Survive JavaScript - Strategies and Tricks

NPM

Search PackagesNODE.JS HOME

DOWNLOAD

ABOUT

NPM REGISTRY

DOCS

BLOG

COMMUNITY

LOGOS

JOBS

Node Packaged ModulesTotal Packages: 28 067

907 584 downloads in the last day9 157 954 downloads in the last week

33 188 669 downloads in the last month

Patches welcome!

Any package can be installed by using npm install.

Add your programs to this index by using npm publish.

Recently Updated0m jspm

Most Depended Upon2740 underscore

Create Account | Login

Page 79: Survive JavaScript - Strategies and Tricks

Bower

Bower componentsDiscover Bower (http://bower.io)components

Check out some of my other

projects

Focus

(https://github.com/sindresorhus/focus),

JsRun

(https://github.com/sindresorhus/sublime-

jsrun), sublime-

editorconfig

(https://github.com/sindresorhus/editorconfig-

sublime), GitHub-Notifier

(https://github.com/sindresorhus/GitHub-

Notifier), Pure

(https://github.com/sindresorhus/pure),

quora-unblocker

(https://github.com/sindresorhus/quora-

unblocker)

screenfull.js (https://git…

stringify-object (https:/…

Featured components

Fullsc…

API

wrap…String…

an

flight-storage (https://gi…

spice.css (https://github…

Latest components

Store…

JSON

dataBasic…

dry css

min.js (https://github.co…

angularjs-ordinal-filter …

Hot components

Super…

mini…

select…Angul…

Ordinal

(https://github.com/sindresorhus/bower-components)

Page 80: Survive JavaScript - Strategies and Tricks

JSwiki

JSwiki 2 TweetTweet 59 EditEdit

Hi there! Welcome to jswiki.

This wiki indexes libraries and resources available for JavaScript. In addition it provides some starting pointsfor newbies in form of Beginner's Resources. In case you want to contribute, do take a look at Meta first forsome extra pointers. Happy hacking!

IMPORTANT! jster.net is a spiritual successor of jswiki. There is more content but thesite is less of a wiki. jswiki will remain here as more of a communal alternative. Inaddition you might want to check out the following:

JSwikiEssentials

Multimedia

Graphics

Data

UI

Utilities

Development

Applications

jsgamewiki Microjs

EveryJS JSDB

JSPkg

Page 82: Survive JavaScript - Strategies and Tricks

Recap

No need to just Google it

Package managers (esp. NPM) make your life easier

Avoid NIH and use existing solutions

·

·

·

Page 83: Survive JavaScript - Strategies and Tricks

Testing

Page 84: Survive JavaScript - Strategies and Tricks

Unit Testing

assert(title('HELLO WORLD!') === 'Hello World!');assert(title('Hello world!') === 'Hello World!');assert(title('hi') === 'Hi');assert(title() === undefined);

function title(s) { return s && s.split(' ').map(capitalize).join(' ');}

function assert(s) { if(!s) throw new Error('Assertion failed!');}

JAVASCRIPT

Popular alternatives: Jasmine (BDD), Mocha, QUnit·

Page 85: Survive JavaScript - Strategies and Tricks

Fuzz Testing

// function to test, note annotationvar title = annotate('title', 'Returns given string in a title format.') .on(is.string, function(s) { return s && s.split(' ').map(capitalize).join(' '); }).satisfies(is.string);

// testing an invariantfuzz(title, function(op, str) { var parts = op(str).split(' ');

return parts.map(fst).map(isUpper).filter(id).length == parts.length;});

JAVASCRIPT

Up and coming (hopefully)·

Source: bebraw/annofuzz

Page 86: Survive JavaScript - Strategies and Tricks

Testling

testling-cirun your browser tests on every push

write some tests

Use the test runner you like best!

The only thing your test runner needs to do is to produce TAP outputon console.log or process.stdout. Here's an example project usingmocha.

You can also use tape to output TAP output in browsers and in node.Here is what a simple tape test looks like:

var test = require('tape');var myCode = require('../my_code.js');

test('make sure my code works', function (t) { t.plan(2); t.equal(myCode.beep(5), 555);

Page 88: Survive JavaScript - Strategies and Tricks

Browserling

interactive cross-browser testing

http://

3.0 3.5 3.6 4.0 5.0 6.07.0 8.0 9.0 10.0 11.0 12.013.0 14.0 15.0 16.0 17.0 18.0

19.0 nightly

create account sign in

Page 89: Survive JavaScript - Strategies and Tricks

Browserstack

Live, Web-Based Browser TestingInstant access to all desktop and mobile browsers.

Say goodbye to your setup of virtual machines and devices.

Free Trial

Sign up for free

Full Name

Email

Password

No credit cardNo credit cardrequired. We promise.required. We promise.

Support Pricing Free TrialResources Sign inL i v e

Page 90: Survive JavaScript - Strategies and Tricks

Chaos Monkey

Source: Jeff Atwood - Working with the Chaos Monkey

Page 91: Survive JavaScript - Strategies and Tricks

AB Testing

Source: TheBusyBrain (CC BY)

Page 92: Survive JavaScript - Strategies and Tricks

Recap

Test your JS

Browser differences bring their own challenge

Future in continuous integration (Travis and co.)

Fail constantly to avoid failure

·

·

·

·

Page 93: Survive JavaScript - Strategies and Tricks

Conclusion

Page 94: Survive JavaScript - Strategies and Tricks

Conclusion

JS - the most valuable language you don't know yet

A target for tool and language development

Not without its quirks but still manageable

The most important language of this decade?

·

·

·

·

Page 95: Survive JavaScript - Strategies and Tricks

Survive JS - The Guide

Survive JSHave you ever felt lost in the JavaScript jungle? If so, you are in the right place. The purpose of this guideis to provide you with sharp implements that help you survive and perhaps thrive even. Even seasonedJavaScript explorers might find a trick or two to apply in practice.

As it is very possible I have not reached omnipotence yet, I encourage you to submit issues. This way wecan make the guide to serve you better.

I am well aware there are other excellent resources out there. Of these I would like to mention EloquentJavaScript and JavaScript Garden in particular. I have listed various beginner's resources over at JSwiki,the predecessor of JSter.

Table of ContentsA Misunderstood Language? - What is the essence of JavaScript? Why is it relevant?

Current State - What is the current state of JavaScript and the ecosystem?

Language Features - What the language looks like? How to use it effectively?

EditEdit

TweetTweet 0

0

Table of Contents

Survive JS

Page 96: Survive JavaScript - Strategies and Tricks

Thank You!

twitter @bebrawwww www.nixtu.infogithub github.com/bebraw