JS developer
Cutting edge
Toolset
- often used as dev environment,
- based on V8 - google chrome JS engine,
- add APIs that are locked in browser - IO/tty/...
- event based, non blocking,
- single loop, async processing
- deals with module loading,
- versions,
- dependencies,
- updates
Grunt
- plugin rich,
- simple config,
- currently problems with maintainers,
Gulp
- stream based,
- code over configuration,
- simple API
Task runner
Tests
- frameworks
- BDD/TDD
- Jasmine, Mocha, Chai, ...
- BDD/TDD
- runners
- karma
- e2e
- protractor, nightwatchjs
Scaffolding
- yeomain,
- slush
Stack
Servers
- express - fast, simple,
- hapi - HA, middleware,
- koa - alternative
Storage
- MongoDB,
- CouchDB,
- PouchDB,
- Redis
Frameworks
It seems to be ...
version 1.x
- easy to begin,
- a lot of online resources,
- based on complex concept,
- has performance limitations,
version 2.x
- bad press,
- large scope of changes,
- high performance gain,
- a lot of new features
- Google support,
- commonly recognized,
- small and simple
- focus on Model
- plain JavaScript
- good in conventions over configuration,
- well documented,
- early adopter,
- great for Rails, Diango devs
- focuses on View rendering,
- declarative templates - JSX,
- not MV* based
- not a framework - it's just lib,
- often used as a part of solution
- cutting egde,
- does not have Angular program limitations,
- not known commonly,
- recently in beta
ES 2015
Declarations
- block scope - let,
- real constants support - const
Functions
- default values,
- named and rest parameters,
- arrow function
Objects and Classes
- inheritance and syntax sugar,
- Object.assign
Data structs
- Array,
- Map,
- Set
Others
- modules,
- spread,
- tail-call optimizations,
- iterators,
- promises,
- generators.
Modularization
Immediately-invoked function expression(IIFE)
- simple solution,
- does not depend on external loader,
- but not real module system
CommonJS
- compact syntax,
- sync loading - not suitable for webapp,
- used in node.js loader
Asynchronous Module Definition (AMD)
- different syntax,
- based on function wrapping,
- better suited to the dynamic webapps
ES 2015 modules
- more compact than CommonJS,
- static checks on structure,
- cycle dependencies support,
- declarative syntax,
- API for loader
FIN
Q&A
js-cutting-edge
By Rafał Warzycha
js-cutting-edge
- 583