spca2014 hillier 3rd party_javascript_libraries

42

Upload: nccomms

Post on 02-Jul-2015

220 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Spca2014 hillier 3rd party_javascript_libraries
Page 2: Spca2014 hillier 3rd party_javascript_libraries

3rd Party JavaScript LibrariesYou Need to Know

Scot Hillier

MVP

Scot Hillier Technical Solutions, LLC

Page 3: Spca2014 hillier 3rd party_javascript_libraries

[email protected]

@ScotHillier

Page 4: Spca2014 hillier 3rd party_javascript_libraries
Page 5: Spca2014 hillier 3rd party_javascript_libraries
Page 6: Spca2014 hillier 3rd party_javascript_libraries
Page 7: Spca2014 hillier 3rd party_javascript_libraries

http://datajs.codeplex.com

Page 8: Spca2014 hillier 3rd party_javascript_libraries

"../_api/web/lists/getByTitle('Contacts')/itemCount"

"GET"

"accept" "application/json;odata=verbose"

function

Page 9: Spca2014 hillier 3rd party_javascript_libraries

var

"contacts"

"../_api/web/lists/getByTitle('Contacts')/items"

"?$select=Id,FullName,FirstName,Title,WorkPhone,Email"

"&$orderby=Title,FirstName"

Page 10: Spca2014 hillier 3rd party_javascript_libraries
Page 11: Spca2014 hillier 3rd party_javascript_libraries

http://breezejs.com/

Page 12: Spca2014 hillier 3rd party_javascript_libraries

//initialize adapter

"OData"

("/odata/"

//create query

"Contacts"

"LastName" "startsWith" "C"

//execute query

//success

//error

Page 13: Spca2014 hillier 3rd party_javascript_libraries
Page 14: Spca2014 hillier 3rd party_javascript_libraries

//create metadata store

var new

//Define entities

'Customer'

'Customers'

false

Page 15: Spca2014 hillier 3rd party_javascript_libraries
Page 16: Spca2014 hillier 3rd party_javascript_libraries
Page 17: Spca2014 hillier 3rd party_javascript_libraries
Page 18: Spca2014 hillier 3rd party_javascript_libraries

http://knockoutjs.com/

Page 19: Spca2014 hillier 3rd party_javascript_libraries
Page 20: Spca2014 hillier 3rd party_javascript_libraries

"resultsTable" data-bind "foreach: get_contacts()"

data-bind "text: get_lname()"

data-bind "text: get_fname()"

data-bind "text: get_phone()"

Page 21: Spca2014 hillier 3rd party_javascript_libraries

function

var ko.observableArray()

function

function

function

//update observable array

function

Page 22: Spca2014 hillier 3rd party_javascript_libraries
Page 23: Spca2014 hillier 3rd party_javascript_libraries

http://angularjs.org/

https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js

Page 24: Spca2014 hillier 3rd party_javascript_libraries

Module

Routes

View Controller

Directives Factory

$scope

Page 25: Spca2014 hillier 3rd party_javascript_libraries
Page 26: Spca2014 hillier 3rd party_javascript_libraries

data-ng-app

data-ng-controller

data-ng-click

Page 27: Spca2014 hillier 3rd party_javascript_libraries

<!DOCTYPE html> <html data-ng-app><head></head><body>

<input type="text" data-ng-model="displayName"/><div data-ng-click="update" ng-controller="myCtrl"></div>

</body></html>

Initializes the app. Can be

anonymous or named.

Creates a property on the

ViewModel

References a controller

named “myCtrl”, which

creates a new ViewModel.

References a

controller method to

call on a click event

Page 28: Spca2014 hillier 3rd party_javascript_libraries

<div ng-app="App"><div>

<input type="text" data-ng-model="firstName"/><div>{{firstName}}</div>

</div></div>

• Binds ViewModels to HTML elements• Uses {{…}} syntax

• References a property of a ViewModel

• Supports two-way binding

This example will display

whatever the user types

Page 29: Spca2014 hillier 3rd party_javascript_libraries

//modulevar myapp = angular.module("MyApp", []);

<!-- html --><div data-ng-app = "MyApp">

Reference dependent modules

Page 30: Spca2014 hillier 3rd party_javascript_libraries

//controllermyapp.controller("welcomeCtrl", ["$scope",

function welcomeCtrl($scope) {

//model$scope.welcomeMessage = "Hi";

});

<!-- html --><div data-ng-controller="welcomeCtrl">

• Build up the $scope (a.k.a, View Model)

Page 31: Spca2014 hillier 3rd party_javascript_libraries

<div ng-app="App"><div ng-controller="welcomeCtrl">

<h3>{{welcomeMessage}}</h3></div>

</div>

• Bind the $scope to the HTML elements

Page 32: Spca2014 hillier 3rd party_javascript_libraries
Page 33: Spca2014 hillier 3rd party_javascript_libraries
Page 34: Spca2014 hillier 3rd party_javascript_libraries

http://www.lesscss.org/

Page 35: Spca2014 hillier 3rd party_javascript_libraries
Page 36: Spca2014 hillier 3rd party_javascript_libraries

http://getbootstrap.com/

Page 37: Spca2014 hillier 3rd party_javascript_libraries
Page 38: Spca2014 hillier 3rd party_javascript_libraries

<!-- CSS media query on a link element --><link rel="stylesheet" media="(max-width: 800px)" href="example.css" />

<!-- CSS media query within a style sheet --><style>@media (max-width: 600px) {.facet_sidebar {

display: none;}

}</style>

//media query with JavaScriptvar mq = window.matchMedia("(max-width:600px)");mq.addListener(function () {

//do something;});

Page 39: Spca2014 hillier 3rd party_javascript_libraries

<!-- Stack the columns on mobile by making one full-width and the other half-width --><div class="row"><div class="col-xs-12 col-md-8">.col-xs-12 .col-md-8</div><div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>

</div>

<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop --><div class="row"><div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div><div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div><div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>

</div>

<!-- Columns are always 50% wide, on mobile and desktop --><div class="row"><div class="col-xs-6">.col-xs-6</div><div class="col-xs-6">.col-xs-6</div>

</div>

Page 40: Spca2014 hillier 3rd party_javascript_libraries
Page 41: Spca2014 hillier 3rd party_javascript_libraries
Page 42: Spca2014 hillier 3rd party_javascript_libraries