TallyJS - Meetup #1 - AngularJS

19
March 6, 2014 Andrew Hart TallyJS Introduction to frameworks and best practices. Examples with angularJS.

description

First presentation of the TallyJS user group.

Transcript of TallyJS - Meetup #1 - AngularJS

Page 1: TallyJS - Meetup #1 - AngularJS

March 6, 2014Andrew Hart

TallyJSIntroduction to frameworks and best practices. Examples with angularJS.

Page 2: TallyJS - Meetup #1 - AngularJS

OVERVIEW• Brief history of JavaScript

• Best Practices

• Module Design Pattern

• AngularJS

Page 3: TallyJS - Meetup #1 - AngularJS

POP QUIZ

Which company is credited with inventing JavaScript

• Google

• Amazon

• Netscape

• Mozilla

• Microsoft

Page 4: TallyJS - Meetup #1 - AngularJS

POP QUIZ

Which company is credited with inventing JavaScript

• Google

• Amazon

• Netscape – in 1995

• Mozilla

• Microsoft

JavaScript was built by Brenden Eich in 10 days.

Page 5: TallyJS - Meetup #1 - AngularJS

EARLY JAVASCRIPT

• Used to manipulate visual elements – EVENT DRIVEN DESIGN

Page 6: TallyJS - Meetup #1 - AngularJS

IN 2008, GOOGLE SAID: ‘LET THERE BE V8’

Thanks, Denmark

Before V8: JavaScript was either interpretedor executed as bytecode

With V8: JavaScript is compiled and executed as machine code

Page 7: TallyJS - Meetup #1 - AngularJS

MODERN DAY JS ENVIRONMENTS

• Browsers

• Servers• Node.js

• Databases• MongoDB

• Drones

• Complex 3D Games• Oculus Rift

• Musical Instruments

• Operating Systems• Chromium OS

Page 8: TallyJS - Meetup #1 - AngularJS

BEST PRACTICES

• Whatever you think is a best practice – AUTOMATE IT - GruntJS

1. JSHint, JSLint

2. Modularize

3. Keep DOM access to a minimum

4. Don’t yield to the browser

5. Testing – Unit Test & e2e

Page 9: TallyJS - Meetup #1 - AngularJS

• They’re DRY

• Makes your code easier to maintain, easier to change and easier to read

Why Modules?

• Transcends frameworks and libraries• It is a way to structure your js code

• Create an anonymous function and execute it immediately• All of the code that runs inside that function lives in a closure

• Provides: Privacy and State

What is a Module?

Andrew Hart
Page 10: TallyJS - Meetup #1 - AngularJS

MODULE

PLUNKER EXAMPLE

Page 11: TallyJS - Meetup #1 - AngularJS

WHY USE A JS FRAMEWORK?

• In designing JavaScript applications, there are many architectural and design challenges that arise. To name a few: • How to update the DOM• Communicating with a server (AJAX)• Testing• Organization of the JavaScript code

• JS frameworks tackle these challenges for you.

Page 12: TallyJS - Meetup #1 - AngularJS

ANGULARJS

• Open Source JavaScript framework developed and maintained by Google

• Initial release was in 2009

• Turns HTML in a declarative programming language ready to serve up dynamic content through two-way data binding

Page 13: TallyJS - Meetup #1 - AngularJS
Page 14: TallyJS - Meetup #1 - AngularJS

DESIGN GOALS

• Decouple DOM manipulation from application logic. This improves the testability of the code.

• Regard application testing as equal in importance to application writing. Testing difficulty is dramatically affected by the way the code is structured.

• Decouple the client side of an application from the server side. This allows development work to progress in parallel, and allows for reuse of both sides.

• Guide developers through the entire journey of building an application: from designing the UI, through writing the business logic, to testing.

Page 15: TallyJS - Meetup #1 - AngularJS

FOUR KEY INGREDIENTS

Page 16: TallyJS - Meetup #1 - AngularJS

CONTROLLER

• Sets up a new $scope • An object that represents the application model• Arranged hierarchically• Plunker Example

var myApp = angular.module('myApp',[]); myApp.controller('GreetingCtrl', ['$scope',function($scope) {

$scope.greeting = 'Hola!';}]);

Script.js DOM

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

controller="GreetingCtrl"> {{ greeting }}

</div></div>

Page 17: TallyJS - Meetup #1 - AngularJS

DIRECTIVE

• DOM things

• There are some powerful directives provided for you

• You can also write your own custom directives – VERY POWERFUL• Custom elements, class and attributes• Focus on Domain Logic in the html

• Directives can also have their own scope – Plunker Example

• This is where the event listeners are declared

Page 18: TallyJS - Meetup #1 - AngularJS

SERVICE

• Data things

• Factory Functions – Services are singletons

• Inject Services into Controllers, Directives and even other Services

var myModule = angular.module('myModule', []);

myModule.factory('serviceId', function() {

var shinyNewServiceInstance;

return shinyNewServiceInstance;});

Page 19: TallyJS - Meetup #1 - AngularJS

PUTTING IT ALL TOGETHER

Plunker Example