Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program...

29

Transcript of Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program...

Page 1: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.
Page 2: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

2-720

JavaScript frameworks in your apps and sites from WinJS and beyond

JavaScript frameworks in your apps and sites from WinJS and beyond

Page 3: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

2-720

JavaScript frameworks in your apps and sites from WinJS and beyond

JavaScript frameworks in your apps and sites from WinJS and beyond

Chris Anderson (@codemonkeychris)Distinguished Engineer

Kevin Hill (@KevinJHill)Senior Program Manager Lead

Page 4: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

Journey of frameworks

Web apps@ Microsoft

Responsive app

CharMap

KnockoutJS app

+ Favorites

AngularJS app+ Ratings

ReactJSSearch

BootstrapWindows

themes for Websites

Page 5: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

WebApps @ Microsoft

Page 6: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

WebApps @ Microsoft

ActiveX1996

ActiveX JS HTAs1997

Universal APIs + JS

2012

Hosted WebApps2015

IE 9 + Chakra2011

IE 82009

IE 72006

Office Web Apps2010

1995 2016

Page 7: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

Framework search interest over time

2004

2004

2004

2005

2005

2005

2006

2006

2006

2007

2007

2007

2008

2008

2008

2009

2009

2009

2010

2010

2010

2011

2011

2011

2012

2012

2012

2013

2013

2014

2014

2014

2015

0

10

20

30

40

50

60

70

80

90

100

MooToolsscript.aculo.usAngularJSReactJSKnockout JS

script.aculo.us released

MooTools released

AngularJS released

ReactJS releasedKnockout JS

released

Page 8: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

20042004200520052006200620072007200820082009200920102010201120122012201320132014201420150

10

20

30

40

50

60

70

80

90

100

MooToolsscript.aculo.usAngularJSjQueryKnockout JS

Framework search interest over time

jQuery released

Page 10: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

EdgeHTML.dll Chakra

Hosted contentAlways up-to-date

Packaged contentOffline first

Page 11: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

Developers want…

… their existing code to just run… more frameworks to just work

Page 12: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

• We focused too much on “The Windows Way”

• Focus on interop to support HTML markup and JS frameworks/libs

• Our security model for web apps did not play well with existing code

• We did not play well with the web development workflow

Adapting to what we’ve learned

We’ve learned our Windows 8 investments just scratch the surface

Page 13: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

• Huge interop investments• New rendering engine• Updated JavaScript engine• Evergreen• Embracing the standards

“The web just works”

Web developers want to have the latest and greatest features

Page 14: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

WinJS features

Page 15: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

WinJS features

Page 16: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

Responsive appCharMap

https://github.com/InternetExplorer/CharMap/

Page 17: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

CharMap App

interface Block {    chars : Char[];    start : number;    end : number;    name : string;}interface Char {    name : string;    code : number;    favorite : boolean;    rating : number;}

Page 18: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

HTML5 controls in actionWinJS

https://github.com/winjs/winjs

Page 19: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

HTML5 controls in actionKnockoutJS

https://github.com/winjs/knockout-winjs

Page 20: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

JSvar viewModel = { listViewArray: ko.observableArray(), favorites: ko.observableArray()};

ko.applyBindings(viewModel);

HTML<div id="content" class="content" data-bind="winListView: { itemTemplate: 'listViewItemTemplate', itemDataSource: listViewArray, layout: {type: WinJS.UI.GridLayout} }"></div>

KnockoutJS code

Page 21: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

HTML5 controls in actionAngularJS

https://github.com/winjs/angular-winjs

Page 22: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

JSangular.module('sample', ['winjs']).controller("sampleController", function ($scope) { $scope.rating = 1; $scope.maxRating = 5;});HTML<div ng-app="sample" ng-controller="sampleController"> <win-rating max-rating="maxRating" user-rating="rating"></win-rating> <div> <h2>Rating: {{rating}}</h2> <input type="range" min="1" max="{{maxRating}}" ng-model="rating" /> </div> ...</div>https://github.com/winjs/angular-winjs/

AngularJS code

Page 23: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

HTML5 controls in actionReact

https://github.com/winjs/react-winjs

Page 24: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

JSvar blocks = onlyItemsWithMatches. map(function (item) { return <ReactWinJS.Hub.Section key={item.block.name} header={item.block.name} isHeaderStatic={true}> <div className="hubSectionLetterContainer">{ matchChars(item.chars, that.state.searchString).

map(function (c) {return <div className="item">

...</div>;

}) }</div></ReactWinJS.Hub.Section>;});

HTML<body id="root"> <div id="app"></div> <script src="reactApp.js"></script></body>

ReactJS

Page 25: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

Bootstrap theme for websites

https://github.com/winjs/bootstrap-winjs

Page 26: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

Cordova cross-platform apps

Page 27: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

Continued investment in JS frameworks at Microsoft• HTML Controls work with web frameworks• Microsoft Edge web engine powers the platform• We are always listening and learning

Wrap-up

Page 28: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

• (2-665) Hosted Web Apps and Web Platform Innovations

• (3-756) Getting Great Performance Out of Cordova Apps

• (2-706) Getting Started with Cross-Platform Mobile Development with Apache Cordova

• (2-656) "Project Spartan": Introducing the New Browser and Web App Platform for Windows 10

Related Sessions

Page 29: Chris Anderson (@codemonkeychris) Distinguished Engineer Kevin Hill (@KevinJHill) Senior Program Manager Lead.

© 2015 Microsoft Corporation. All rights reserved.