SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Svet JavaScriptu




   Ladislav Gažo

  gazo@seges.sk
  @ladislavGazo
JavaScript.... whaaat?




2 | Internal use only
3 | Internal use only
JavaScript

      • JavaScript (JS) is an open            • JavaScript is:
               source client-side scripting      – Prototype-based
               language commonly
                                                 – Dynamic
               implemented as part of a
                                                 – Weakly-typed
               web browser in order to
                                                 – Has First-class functions
               create enhanced user
                                                 – Influenced by C &
               interfaces and dynamic
               websites.                             Java,...



4 | Internal use only
Basics

      • <script> tag
      • var a = 7;
      • if, then, else
      • for, while
      • namespaces
      • functions
      • web server – Apache, nginx



5 | Internal use only
JavaScript world

      • BackboneJS      • jQuery
      • underscore      • YUI
      • EmberJS         • node.js
      • CanJS           • TypeScript
      • MeteorJS        • Closure
      • EsteJS




6 | Internal use only
Tools

      • Chrome Developer Tools
      • Firebugs
      • IE Developer Toolbar
      • Opera
      • Editor: vim, webstorm,
                sublime text, notepad,...




7 | Internal use only
A co to ten angulár umí?

      • Data binding
      • Controller
      • Plain JavaScript
      • Validation
      • Server communication
      • Directives
      • Injection
      • Testing

8 | Internal use only
<h2>BizMon</h2>
                        <div id="bizmonApp" ng-controller="BizmonCtrl">
                            <div class="navbar navbar-fixed-top">
                                <div class="navbar-inner">
                                    <div class="container">
                                        <a class="brand" href="#">Bizmon</a>
                                        <ul class="nav">
                                            <li ng-repeat="project in projects">
                                                <a ng-href="#/projects/
                        {{project.id}}">{{project.name}}</a>
                                            </li>
                                        </ul>
                                    </div>
                                </div>
                            </div>
                            <div class="container-fluid">
                                <div class="row-fluid" ng-view></div>

                                <footer>
                                    <p>&copy; Seges 2012</p>
                                </footer>
                            </div>
                        </div>




9 | Internal use only
Curly brackets?




                           In HTML?


10 | Internal use only
function BizmonCtrl($scope, projectService) {
              $scope.projects = projectService.query();
           }
           BizmonCtrl.$inject = ["$scope", "projectService"];




11 | Internal use only
angular.module('bizmonApp.services', [ 'ngResource' ]).factory(
           'projectService', function($resource) {
           var service = $resource('rest/projects/:projectId', {}, {});
           return service;
       });




            mvn -o archetype:generate -DarchetypeGroupId=sk.seges.acris.archetype -DarchetypeArtifactId=acris-archetype-rest-server

             ( AcrIS - http://acris.googlecode.com )



12 | Internal use only
ng-click wohohooo




13 | Internal use only
<tr ng-repeat="issueState in prjScope.issueStates">
           <td ng-class="'operation-' + issueState.operation">
               <a ng-click="editIssue(issueState)">{{issueState.uuid}}</a>
           </td>
           <td>{{issueState.reason}}</td>
           <td>
               <span class="btn-group" ng-show="projectScopeViews[prjScope.id].edit">
                   <a class="btn btn-primary" ng-click="toggleOperation(issueState)">
                       <span ng-bind="issueState.operation"></span>
                   </a>
                   <a class="btn btn-danger" ng-click="deleteIssue(prjScope,
       issueState)">Delete</a>
               </span>
           </td>
       </tr>




14 | Internal use only
<input type="textarea" ng-model="activeIssueState.reason"
                        placeholder="optional reason why you are creating the issue"
                size="4"/>




15 | Internal use only
Neatness


16 | Internal use only
var inputNameDirective =         ['$interpolate',
                                             function($interpolate) {
                  return {
                      restrict: 'A',
                      scope: {
                          inputName: 'attribute',
                          ngModel: 'accessor'
                      },
                      require: ['ngModel','^?form'],
                      link: function (scope, element, attrs, ctrl) {
                          var ex = $interpolate(scope.inputName);
                          scope.nameTransformed = ex(scope.$parent);

                             var modelCtrl = ctrl[0];
                             modelCtrl.$name = scope.nameTransformed;

                             var formCtrl = ctrl[1] || nullFormCtrl;
                             formCtrl.$addControl(modelCtrl);
                         }
                 };
                }];


          angular.module('bizmonApp.directives',[]).directive('inputName',
          inputNameDirective);



17 | Internal use only
18 | Internal use only
WORK with US

                                          WebElement
    Java Group                            Rubyslava

                         Thank you for your patience

                              gazo@seges.sk
                              @ladislavGazo
19 | Internal use only
Links

          BizMon project - https://github.com/lgazo/bizmon
      • AcrIS – http://acris.googlecode.com
      • AngularJS – http://angularjs.org
      • GDG
             – http://www.meetup.com/GTUG-Slovakia/
             – https://www.facebook.com/groups/149659868513109/
             – https://plus.google.com/115200570829527654069
      • Java Group -
               https://www.facebook.com/groups/359487710807375/
20 | Internal use only

Más contenido relacionado

La actualidad más candente

PHP MVC Tutorial
PHP MVC TutorialPHP MVC Tutorial
PHP MVC Tutorial
Yang Bruce
 
Netvibes UWA workshop at ParisWeb 2007
Netvibes UWA workshop at ParisWeb 2007Netvibes UWA workshop at ParisWeb 2007
Netvibes UWA workshop at ParisWeb 2007
Netvibes
 
建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版
Joseph Chiang
 
Learning django step 1
Learning django step 1Learning django step 1
Learning django step 1
永昇 陳
 

La actualidad más candente (20)

PHP MVC Tutorial
PHP MVC TutorialPHP MVC Tutorial
PHP MVC Tutorial
 
Workshop 12: AngularJS Parte I
Workshop 12: AngularJS Parte IWorkshop 12: AngularJS Parte I
Workshop 12: AngularJS Parte I
 
The Dojo Build System
The Dojo Build SystemThe Dojo Build System
The Dojo Build System
 
JavaScript Libraries (@Media)
JavaScript Libraries (@Media)JavaScript Libraries (@Media)
JavaScript Libraries (@Media)
 
SproutCore and the Future of Web Apps
SproutCore and the Future of Web AppsSproutCore and the Future of Web Apps
SproutCore and the Future of Web Apps
 
jQuery (MeshU)
jQuery (MeshU)jQuery (MeshU)
jQuery (MeshU)
 
JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)
 
Netvibes UWA workshop at ParisWeb 2007
Netvibes UWA workshop at ParisWeb 2007Netvibes UWA workshop at ParisWeb 2007
Netvibes UWA workshop at ParisWeb 2007
 
The MEAN stack
The MEAN stack The MEAN stack
The MEAN stack
 
建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版建立前端開發團隊 - 2011 中華電信訓練所版
建立前端開發團隊 - 2011 中華電信訓練所版
 
JavaScript the Smart Way - Getting Started with jQuery
JavaScript the Smart Way - Getting Started with jQueryJavaScript the Smart Way - Getting Started with jQuery
JavaScript the Smart Way - Getting Started with jQuery
 
Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014
 
Vue business first
Vue business firstVue business first
Vue business first
 
Web2.0 with jQuery in English
Web2.0 with jQuery in EnglishWeb2.0 with jQuery in English
Web2.0 with jQuery in English
 
Learning django step 1
Learning django step 1Learning django step 1
Learning django step 1
 
Checkout Customizations in Magento 2 - MageTitansMCR 2017
Checkout Customizations in Magento 2 - MageTitansMCR 2017Checkout Customizations in Magento 2 - MageTitansMCR 2017
Checkout Customizations in Magento 2 - MageTitansMCR 2017
 
Polymer / WebComponents
Polymer / WebComponentsPolymer / WebComponents
Polymer / WebComponents
 
阅读类 Web 应用前端技术探索
阅读类 Web 应用前端技术探索阅读类 Web 应用前端技术探索
阅读类 Web 应用前端技术探索
 
AngularJS for Java Developers
AngularJS for Java DevelopersAngularJS for Java Developers
AngularJS for Java Developers
 
Knockout.js
Knockout.jsKnockout.js
Knockout.js
 

Similar a ITexperience - AngularJS

Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS
偉格 高
 
gDayX 2013 - Advanced AngularJS - Nicolas Embleton
gDayX 2013 - Advanced AngularJS - Nicolas EmbletongDayX 2013 - Advanced AngularJS - Nicolas Embleton
gDayX 2013 - Advanced AngularJS - Nicolas Embleton
George Nguyen
 
Building Grails Plugins - Tips And Tricks
Building Grails Plugins - Tips And TricksBuilding Grails Plugins - Tips And Tricks
Building Grails Plugins - Tips And Tricks
Mike Hugo
 

Similar a ITexperience - AngularJS (20)

Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS
 
gDayX 2013 - Advanced AngularJS - Nicolas Embleton
gDayX 2013 - Advanced AngularJS - Nicolas EmbletongDayX 2013 - Advanced AngularJS - Nicolas Embleton
gDayX 2013 - Advanced AngularJS - Nicolas Embleton
 
Comprehensive Browser Automation Solution using Groovy, WebDriver & Obect Model
Comprehensive Browser Automation Solution using Groovy, WebDriver & Obect ModelComprehensive Browser Automation Solution using Groovy, WebDriver & Obect Model
Comprehensive Browser Automation Solution using Groovy, WebDriver & Obect Model
 
React django
React djangoReact django
React django
 
Javascript ui for rest services
Javascript ui for rest servicesJavascript ui for rest services
Javascript ui for rest services
 
Basics of AngularJS
Basics of AngularJSBasics of AngularJS
Basics of AngularJS
 
Nicolas Embleton, Advanced Angular JS
Nicolas Embleton, Advanced Angular JSNicolas Embleton, Advanced Angular JS
Nicolas Embleton, Advanced Angular JS
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
 
Opencast Admin UI - Introduction to developing using AngularJS
Opencast Admin UI - Introduction to developing using AngularJSOpencast Admin UI - Introduction to developing using AngularJS
Opencast Admin UI - Introduction to developing using AngularJS
 
Angular Performance: Then, Now and the Future. Todd Motto
Angular Performance: Then, Now and the Future. Todd MottoAngular Performance: Then, Now and the Future. Todd Motto
Angular Performance: Then, Now and the Future. Todd Motto
 
End-to-end testing with geb
End-to-end testing with gebEnd-to-end testing with geb
End-to-end testing with geb
 
GDayX - Advanced Angular.JS
GDayX - Advanced Angular.JSGDayX - Advanced Angular.JS
GDayX - Advanced Angular.JS
 
Introduction of angular js
Introduction of angular jsIntroduction of angular js
Introduction of angular js
 
Creating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSCreating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJS
 
Dive into AngularJS and directives
Dive into AngularJS and directivesDive into AngularJS and directives
Dive into AngularJS and directives
 
AngularJS: an introduction
AngularJS: an introductionAngularJS: an introduction
AngularJS: an introduction
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
Mini-Training: AngularJS
Mini-Training: AngularJSMini-Training: AngularJS
Mini-Training: AngularJS
 
Building Grails Plugins - Tips And Tricks
Building Grails Plugins - Tips And TricksBuilding Grails Plugins - Tips And Tricks
Building Grails Plugins - Tips And Tricks
 

Más de Michal Maxian

I texperience preview_phase1
I texperience preview_phase1I texperience preview_phase1
I texperience preview_phase1
Michal Maxian
 
Startup weekend@slovakia
Startup weekend@slovakiaStartup weekend@slovakia
Startup weekend@slovakia
Michal Maxian
 
StartupWeekend Zilina #1 - Friday
StartupWeekend Zilina #1 - FridayStartupWeekend Zilina #1 - Friday
StartupWeekend Zilina #1 - Friday
Michal Maxian
 
StartupWeekend Bratislava invitation 2012
StartupWeekend Bratislava invitation 2012StartupWeekend Bratislava invitation 2012
StartupWeekend Bratislava invitation 2012
Michal Maxian
 

Más de Michal Maxian (16)

Brainstorming @ Impact hub
Brainstorming @ Impact hubBrainstorming @ Impact hub
Brainstorming @ Impact hub
 
StartupWeekend Brno #1 Friday Deck
StartupWeekend Brno #1 Friday DeckStartupWeekend Brno #1 Friday Deck
StartupWeekend Brno #1 Friday Deck
 
Ansible @ WebElement 2015
Ansible @ WebElement 2015Ansible @ WebElement 2015
Ansible @ WebElement 2015
 
#SWmixer vol.1 summary
#SWmixer vol.1 summary#SWmixer vol.1 summary
#SWmixer vol.1 summary
 
StartupWeekend Tuzla Friday start
StartupWeekend Tuzla Friday startStartupWeekend Tuzla Friday start
StartupWeekend Tuzla Friday start
 
StartupWeekend Tuzla pitching like a boss
StartupWeekend Tuzla pitching like a bossStartupWeekend Tuzla pitching like a boss
StartupWeekend Tuzla pitching like a boss
 
ITexperience 2013
ITexperience 2013ITexperience 2013
ITexperience 2013
 
I texperience preview_phase1
I texperience preview_phase1I texperience preview_phase1
I texperience preview_phase1
 
Startup weekend@slovakia
Startup weekend@slovakiaStartup weekend@slovakia
Startup weekend@slovakia
 
StartupWeekend Zilina #1 - Friday
StartupWeekend Zilina #1 - FridayStartupWeekend Zilina #1 - Friday
StartupWeekend Zilina #1 - Friday
 
Ako prezentovat aj pred investorom
Ako prezentovat aj pred investoromAko prezentovat aj pred investorom
Ako prezentovat aj pred investorom
 
StartupWeekend Kosice 2012 Final pitches
StartupWeekend Kosice 2012 Final pitchesStartupWeekend Kosice 2012 Final pitches
StartupWeekend Kosice 2012 Final pitches
 
StartupWeekend Kosice - saturday
StartupWeekend Kosice - saturdayStartupWeekend Kosice - saturday
StartupWeekend Kosice - saturday
 
StartupWeekend Kosice opening
StartupWeekend Kosice openingStartupWeekend Kosice opening
StartupWeekend Kosice opening
 
StartupWeekend Bratislava invitation 2012
StartupWeekend Bratislava invitation 2012StartupWeekend Bratislava invitation 2012
StartupWeekend Bratislava invitation 2012
 
StartupWeekend Bratislava
StartupWeekend BratislavaStartupWeekend Bratislava
StartupWeekend Bratislava
 

ITexperience - AngularJS

  • 1. Svet JavaScriptu Ladislav Gažo gazo@seges.sk @ladislavGazo
  • 2. JavaScript.... whaaat? 2 | Internal use only
  • 3. 3 | Internal use only
  • 4. JavaScript • JavaScript (JS) is an open • JavaScript is: source client-side scripting – Prototype-based language commonly – Dynamic implemented as part of a – Weakly-typed web browser in order to – Has First-class functions create enhanced user – Influenced by C & interfaces and dynamic websites. Java,... 4 | Internal use only
  • 5. Basics • <script> tag • var a = 7; • if, then, else • for, while • namespaces • functions • web server – Apache, nginx 5 | Internal use only
  • 6. JavaScript world • BackboneJS • jQuery • underscore • YUI • EmberJS • node.js • CanJS • TypeScript • MeteorJS • Closure • EsteJS 6 | Internal use only
  • 7. Tools • Chrome Developer Tools • Firebugs • IE Developer Toolbar • Opera • Editor: vim, webstorm, sublime text, notepad,... 7 | Internal use only
  • 8. A co to ten angulár umí? • Data binding • Controller • Plain JavaScript • Validation • Server communication • Directives • Injection • Testing 8 | Internal use only
  • 9. <h2>BizMon</h2> <div id="bizmonApp" ng-controller="BizmonCtrl"> <div class="navbar navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <a class="brand" href="#">Bizmon</a> <ul class="nav"> <li ng-repeat="project in projects"> <a ng-href="#/projects/ {{project.id}}">{{project.name}}</a> </li> </ul> </div> </div> </div> <div class="container-fluid"> <div class="row-fluid" ng-view></div> <footer> <p>&copy; Seges 2012</p> </footer> </div> </div> 9 | Internal use only
  • 10. Curly brackets? In HTML? 10 | Internal use only
  • 11. function BizmonCtrl($scope, projectService) { $scope.projects = projectService.query(); } BizmonCtrl.$inject = ["$scope", "projectService"]; 11 | Internal use only
  • 12. angular.module('bizmonApp.services', [ 'ngResource' ]).factory( 'projectService', function($resource) { var service = $resource('rest/projects/:projectId', {}, {}); return service; }); mvn -o archetype:generate -DarchetypeGroupId=sk.seges.acris.archetype -DarchetypeArtifactId=acris-archetype-rest-server ( AcrIS - http://acris.googlecode.com ) 12 | Internal use only
  • 13. ng-click wohohooo 13 | Internal use only
  • 14. <tr ng-repeat="issueState in prjScope.issueStates"> <td ng-class="'operation-' + issueState.operation"> <a ng-click="editIssue(issueState)">{{issueState.uuid}}</a> </td> <td>{{issueState.reason}}</td> <td> <span class="btn-group" ng-show="projectScopeViews[prjScope.id].edit"> <a class="btn btn-primary" ng-click="toggleOperation(issueState)"> <span ng-bind="issueState.operation"></span> </a> <a class="btn btn-danger" ng-click="deleteIssue(prjScope, issueState)">Delete</a> </span> </td> </tr> 14 | Internal use only
  • 15. <input type="textarea" ng-model="activeIssueState.reason" placeholder="optional reason why you are creating the issue" size="4"/> 15 | Internal use only
  • 17. var inputNameDirective = ['$interpolate', function($interpolate) { return { restrict: 'A', scope: { inputName: 'attribute', ngModel: 'accessor' }, require: ['ngModel','^?form'], link: function (scope, element, attrs, ctrl) { var ex = $interpolate(scope.inputName); scope.nameTransformed = ex(scope.$parent); var modelCtrl = ctrl[0]; modelCtrl.$name = scope.nameTransformed; var formCtrl = ctrl[1] || nullFormCtrl; formCtrl.$addControl(modelCtrl); } }; }]; angular.module('bizmonApp.directives',[]).directive('inputName', inputNameDirective); 17 | Internal use only
  • 18. 18 | Internal use only
  • 19. WORK with US WebElement Java Group Rubyslava Thank you for your patience gazo@seges.sk @ladislavGazo 19 | Internal use only
  • 20. Links BizMon project - https://github.com/lgazo/bizmon • AcrIS – http://acris.googlecode.com • AngularJS – http://angularjs.org • GDG – http://www.meetup.com/GTUG-Slovakia/ – https://www.facebook.com/groups/149659868513109/ – https://plus.google.com/115200570829527654069 • Java Group - https://www.facebook.com/groups/359487710807375/ 20 | Internal use only