NEW STUFF IN WEB DEVELOPMENT
at DriveTime!
Jenkins, Jasmine, Karma, AMD, RequireJS,
Typescript, Web Components, Node & Gulp
Created by Allen Rice with help from
Ryan Blatz, Chaz Guerrero and Eric Blatz
Client side applications are getting serious, our tooling needs to be up to par (Builds, Package Managers, Languages, Features)
Jenkins is a real CI platform where real,
in depth automation can thrive
in depth automation can thrive
Automation needs to be easy,
so your CI platform better be easy to use!
so your CI platform better be easy to use!
Client side builds

Calls

Runs on

Downloads libraries
from
from


Compiles

Code Organization: AMD
AMD, or Asynchronous Module Definitions, is a
very widely adopted technique to define modules of JavaScript
very widely adopted technique to define modules of JavaScript
AMD is built into TypeScript, and is
very easy to use
:
import ns = require("ns");
ns.CompiledMethodCall(true);
We need a way to consume AMD
CV.Search.viewModel.filterBoxes.financing.CreditBucketModel
becomes
financing.CreditBucketModel
Unit testing with Karma and Jasmine
Runner:

Framework:

Demo
Web Components!
AKA Knockout 3.2
An entirely new way to build components
Loading and scoping is done for you
There is a standard life cycle to follow and hook into
Provides a very clean way to re-use components!
Syntax
<dealership-selector params="data: someData">
</dealership-selector>
or
<!-- ko component: { name: "dealership-selector", data: someData } -->
<!-- /ko -->
ko.components.register("dealership-selector", {
template: ..., // Element name, or source URL, or a function
// that asynchronously returns a node array,
viewModel: ... // Object, or AMD module name, or a function that
// asynchronously returns an object
});
examples
Entire pages as components
<ko-component name="{{ route().page }}" route="{{ route }}">
</ko-component>
Date pickers
<date-picker params="value: someObservable" />
Something in between
<override-field params="type: apr" />
What was all this again?
Introduction of a real CI platform
Improved build process
Improvements in client development
Recap:
Introduction of a real CI platform
Jenkins will be our build server, working along side TFS
Less down time due to build issues
Vast capabilities with minimal work
RECAP:
INTRODUCTION OF A new Build process
Gulp will run build processes for our client side related code
Gives us a solid platform for putting build related work
Works out of the box already
RECAP:
Improvements in client development
AMD modules
-
Change the way we write and share client side code
-
Fix maintenance nightmares
KO 3.2 components
- Change the way we write components
RequireJS optimization
-
Fix bundling and minfication nightmares
- Allow us to extremely tweak our UX
Resources (1/3)
- Jenkins - CI Platform
- Karma - Test Runner
- Jasmine - Test Framework
-
TypeScript - Scripting Language
Resources (2/3)
- npm - package manager
- Bower - package manager
- RequireJS - module loader and optimizer
- gulp - Build System
Resources (3/3)
-
Node - JavaScript platform
- Knockout 3.2 components
- AMD
-
https://github.com/amdjs/amdjs-api/wiki/AMD
-
http://addyosmani.com/writing-modular-js
-
http://requirejs.org/docs/whyamd.html
- TypeLite
New Web Dev Stack
By Allen Rice
New Web Dev Stack
A brief overview of the new technology that is going into the buy from public project and web development in general at DriveTime
- 927