SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
Full-stack
JavaScript
Development
alati za pomoć u razvoju JavaScript
aplikacija

                Krešimir Antolić (@kantolic)
         Tomislav Capan (@tomislavcapan)
JavaScript
Server Side

● JavaScript - jezik

● node.js - platforma

● express - web framework
Templating Engines
● Mustache
  ○ minimal; passive view

● Handlebars
  ○ minimal on steroids: mustache + helpers

● Jade
  ○ HAML-like; (pre)bogat

● Underscore
  ○ minimalan, dolazi uz underscore toolkit
Server Side - zaključak
● Rezultat
  ○ server-side website / webapp
  ○ isto kao i PHP/Ruby/Python/ASP.Net itd.


● Node.js
  ○ not a silver bullet
Client Side

● server zadužen samo za manipulaciju
  podataka

● preglednik zadužen za prikaz podataka i
  korisničkih akcija
Client Side
● 1. generacija: libraryji
● 2. generacija: MV* frameworci
   ○ trenutno u fokusu

● 3 generacija
   ○ trenutno još fuzzy budućnost
   ○ cilj: integracija
Client Side - MV*
● KnockoutJs
● BackboneJs
   ○ +MarionetteJS
● AngularJs
● EmberJs
● CanJS
● ...
Client Side - UX
● Bootstrap
● Kendo UI
● jQueryUI
● YUI
● ExtJs
● Dojo
Modularizacija
AMD - Asynchronous Module Definition

● RequireJs
● almond
● Curl
● StealJS
Debugging
● Browser tools
  ○ Firefox FireBug
  ○ Chrome Dev Tools
  ○ Opera DragonFly


● Mobile
  ○ Chrome (4+, adb)
  ○ iOS 6 - Safari dev tools
  ○ external (weinre, jsconsole)..
Testing
● Testing
  ○ Jasmine, Mocha, Chai,
    SinonJs
  ○ CasperJs + PhantomJs
  ○ TestSwarm

● CI
  ○ self-hosted: TeamCity, Jenkins
  ○ SaaS: Travis CI, CircleCI
Dev tooling
● Build
  ○ Maven?
  ○ Ručno pisane skripte?
  ○ GruntJs
GruntJs - JS alati
● Kvaliteta JS koda
  ○ JSLint / JSHint


● Optimizacija JS koda
  ○ concatenatori
  ○ minifieri
  ○ uglifieri
  ○ client-side template builderi
GruntJs - CSS alati

● CSS preprocessori
  ○ Less
  ○ Sass


● CSS minifier
GruntJs - Testing alati
● Test runneri
  ○ Mocha - server-side
  ○ Mocha - client-side
  ○ Jasmine
  ○ CasperJs / PhantomJs
GruntJs - Deployment alati
● Build process
  ○ clean deployment target
  ○ build - concat, lint, minify, uglify...
  ○ copy assets to target
  ○ run tests
  ○ exec shell scripts
  ○ watchers
GruntJS rulez!
● uglavnom sve dostupno kao GruntJs plugin
  ○ ...ili će uskoro biti...
Uspjeh Batman!
Links
Server Side
 ●    node.js -http://nodejs.org/
 ●    express http://expressjs.com/


Templating
 ●    Mustache - http://mustache.github.com/
 ●    Handlebars - http://handlebarsjs.com/
 ●    Jade - http://jade-lang.com/
 ●    Underscore - http://underscorejs.org/#template


Client-side libs
 ●    KnockoutJs - http://knockoutjs.com/
 ●    BackboneJs - http://backbonejs.org/
       ○    +MarionetteJS - http://www.marionettejs.com/
 ●    AngularJs - http://angularjs.org/
 ●    EmberJs - http://emberjs.com/
 ●    CanJS - http://canjs.us/
Links
UX
 ●   Bootstrap - http://twitter.github.com/bootstrap/
 ●   Kendo UI - http://www.kendoui.com/
 ●   jQueryUI - http://jqueryui.com/
 ●   YUI - http://yuilibrary.com/
 ●   ExtJs - http://www.sencha.com/products/extjs/
 ●   Dojo - http://dojotoolkit.org/


Modularizacija:
 ●   RequireJs - http://requirejs.org/
 ●   almond - https://github.com/jrburke/almond
 ●   Curl - https://github.com/cujojs/curl
 ●   StealJS - http://javascriptmvc.com/docs.html#!stealjs
Links
Testing
 ●      Mocha - http://visionmedia.github.com/mocha/
 ●      Chai - http://chaijs.com/
 ●      Jasmine - http://pivotal.github.com/jasmine/
 ●      SinonJs - http://sinonjs.org/
 ●      PhantomJs - http://phantomjs.org/
 ●      CasperJs - http://casperjs.org/


CI
 ●      CircleCI - https://circleci.com/
 ●      TeamCity - http://www.jetbrains.com/teamcity/
 ●      Travis CI - http://about.travis-ci.org/
 ●      Jenkins - http://jenkins-ci.org/


Build
 ●      GruntJs - http://gruntjs.com/
 ●      Brunch - http://brunch.io/

Weitere ähnliche Inhalte

Was ist angesagt?

JSCS - How to Style your JavaScript Code
JSCS - How to Style your JavaScript CodeJSCS - How to Style your JavaScript Code
JSCS - How to Style your JavaScript Code
Arvind Bhardwaj
 
About order form improvements
About order form improvementsAbout order form improvements
About order form improvements
Gengo
 

Was ist angesagt? (20)

2019.06.01 Konva.js 와 함께하는 canvas 2D 그래픽. 유튜브 썸네일 (미리보기 이미지) 제작툴 만들기
2019.06.01 Konva.js 와 함께하는 canvas 2D 그래픽. 유튜브 썸네일 (미리보기 이미지) 제작툴 만들기2019.06.01 Konva.js 와 함께하는 canvas 2D 그래픽. 유튜브 썸네일 (미리보기 이미지) 제작툴 만들기
2019.06.01 Konva.js 와 함께하는 canvas 2D 그래픽. 유튜브 썸네일 (미리보기 이미지) 제작툴 만들기
 
JSCS - How to Style your JavaScript Code
JSCS - How to Style your JavaScript CodeJSCS - How to Style your JavaScript Code
JSCS - How to Style your JavaScript Code
 
Node.js
Node.jsNode.js
Node.js
 
Grunt understanding
Grunt understandingGrunt understanding
Grunt understanding
 
AngularJs Crash Course
AngularJs Crash CourseAngularJs Crash Course
AngularJs Crash Course
 
GTUG JS will save us all
GTUG JS will save us allGTUG JS will save us all
GTUG JS will save us all
 
Introjscb112817
Introjscb112817Introjscb112817
Introjscb112817
 
Front-end tools in java webapps
Front-end tools in java webappsFront-end tools in java webapps
Front-end tools in java webapps
 
Drupal Day 2011 - Features: una vita felice
Drupal Day 2011 - Features: una vita feliceDrupal Day 2011 - Features: una vita felice
Drupal Day 2011 - Features: una vita felice
 
"How to use TypeORM and stay alive", Andrii Andriiko
"How to use TypeORM and stay alive", Andrii Andriiko"How to use TypeORM and stay alive", Andrii Andriiko
"How to use TypeORM and stay alive", Andrii Andriiko
 
PHP and node.js Together
PHP and node.js TogetherPHP and node.js Together
PHP and node.js Together
 
Intro js-la-jan-4
Intro js-la-jan-4Intro js-la-jan-4
Intro js-la-jan-4
 
Nginx, PHP and Node.js
Nginx, PHP and Node.jsNginx, PHP and Node.js
Nginx, PHP and Node.js
 
About order form improvements
About order form improvementsAbout order form improvements
About order form improvements
 
Puphpet
PuphpetPuphpet
Puphpet
 
Debugger
DebuggerDebugger
Debugger
 
MTDDC Meetup HOKKAIDO 2018
MTDDC Meetup HOKKAIDO 2018MTDDC Meetup HOKKAIDO 2018
MTDDC Meetup HOKKAIDO 2018
 
Last Month in PHP - May 2016
Last Month in PHP - May 2016Last Month in PHP - May 2016
Last Month in PHP - May 2016
 
Making CLIs with Node.js
Making CLIs with Node.jsMaking CLIs with Node.js
Making CLIs with Node.js
 
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
 

Ähnlich wie Full stack java script development

Introduction to Gengo's New Order Form tech
Introduction to Gengo's New Order Form techIntroduction to Gengo's New Order Form tech
Introduction to Gengo's New Order Form tech
Gengo
 
Drupal Camp Kiev 2012 - High Performance Drupal Web Sites
Drupal Camp Kiev 2012 - High Performance Drupal Web SitesDrupal Camp Kiev 2012 - High Performance Drupal Web Sites
Drupal Camp Kiev 2012 - High Performance Drupal Web Sites
Skilld
 

Ähnlich wie Full stack java script development (20)

JavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web frameworkJavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web framework
 
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausHTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
 
Architektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan KrausArchitektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan Kraus
 
9 Useful Things that Every Web Developer Needs to Know
9 Useful Things that Every Web Developer Needs to Know9 Useful Things that Every Web Developer Needs to Know
9 Useful Things that Every Web Developer Needs to Know
 
New paradigms
New paradigmsNew paradigms
New paradigms
 
Once upon a time, there were css, js and server-side rendering
Once upon a time, there were css, js and server-side renderingOnce upon a time, there were css, js and server-side rendering
Once upon a time, there were css, js and server-side rendering
 
Making sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developersMaking sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developers
 
2016-01-16 03 Денис Нелюбин. How to test a million
2016-01-16 03 Денис Нелюбин. How to test a million2016-01-16 03 Денис Нелюбин. How to test a million
2016-01-16 03 Денис Нелюбин. How to test a million
 
Twitter Bootstrap for web UI development
Twitter Bootstrap for web UI development Twitter Bootstrap for web UI development
Twitter Bootstrap for web UI development
 
Client vs Server Templating: Speed up initial load for SPA with Angular as an...
Client vs Server Templating: Speed up initial load for SPA with Angular as an...Client vs Server Templating: Speed up initial load for SPA with Angular as an...
Client vs Server Templating: Speed up initial load for SPA with Angular as an...
 
Front-End Developer's Career Roadmap
Front-End Developer's Career RoadmapFront-End Developer's Career Roadmap
Front-End Developer's Career Roadmap
 
Using JavaScript to write Native Mobile Applications
Using JavaScript to write Native Mobile ApplicationsUsing JavaScript to write Native Mobile Applications
Using JavaScript to write Native Mobile Applications
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Tools
 
You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)
 
Demystifying JavaScript & SEO
Demystifying JavaScript & SEODemystifying JavaScript & SEO
Demystifying JavaScript & SEO
 
L’importance du crawl du JavaScript : pourquoi, comment et pour quels bénéfic...
L’importance du crawl du JavaScript : pourquoi, comment et pour quels bénéfic...L’importance du crawl du JavaScript : pourquoi, comment et pour quels bénéfic...
L’importance du crawl du JavaScript : pourquoi, comment et pour quels bénéfic...
 
Javascript Update May 2013
Javascript Update May 2013Javascript Update May 2013
Javascript Update May 2013
 
Grunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous IntegrationGrunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous Integration
 
Introduction to Gengo's New Order Form tech
Introduction to Gengo's New Order Form techIntroduction to Gengo's New Order Form tech
Introduction to Gengo's New Order Form tech
 
Drupal Camp Kiev 2012 - High Performance Drupal Web Sites
Drupal Camp Kiev 2012 - High Performance Drupal Web SitesDrupal Camp Kiev 2012 - High Performance Drupal Web Sites
Drupal Camp Kiev 2012 - High Performance Drupal Web Sites
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Kürzlich hochgeladen (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

Full stack java script development

  • 1. Full-stack JavaScript Development alati za pomoć u razvoju JavaScript aplikacija Krešimir Antolić (@kantolic) Tomislav Capan (@tomislavcapan)
  • 3. Server Side ● JavaScript - jezik ● node.js - platforma ● express - web framework
  • 4. Templating Engines ● Mustache ○ minimal; passive view ● Handlebars ○ minimal on steroids: mustache + helpers ● Jade ○ HAML-like; (pre)bogat ● Underscore ○ minimalan, dolazi uz underscore toolkit
  • 5. Server Side - zaključak ● Rezultat ○ server-side website / webapp ○ isto kao i PHP/Ruby/Python/ASP.Net itd. ● Node.js ○ not a silver bullet
  • 6. Client Side ● server zadužen samo za manipulaciju podataka ● preglednik zadužen za prikaz podataka i korisničkih akcija
  • 7. Client Side ● 1. generacija: libraryji ● 2. generacija: MV* frameworci ○ trenutno u fokusu ● 3 generacija ○ trenutno još fuzzy budućnost ○ cilj: integracija
  • 8. Client Side - MV* ● KnockoutJs ● BackboneJs ○ +MarionetteJS ● AngularJs ● EmberJs ● CanJS ● ...
  • 9. Client Side - UX ● Bootstrap ● Kendo UI ● jQueryUI ● YUI ● ExtJs ● Dojo
  • 10. Modularizacija AMD - Asynchronous Module Definition ● RequireJs ● almond ● Curl ● StealJS
  • 11. Debugging ● Browser tools ○ Firefox FireBug ○ Chrome Dev Tools ○ Opera DragonFly ● Mobile ○ Chrome (4+, adb) ○ iOS 6 - Safari dev tools ○ external (weinre, jsconsole)..
  • 12. Testing ● Testing ○ Jasmine, Mocha, Chai, SinonJs ○ CasperJs + PhantomJs ○ TestSwarm ● CI ○ self-hosted: TeamCity, Jenkins ○ SaaS: Travis CI, CircleCI
  • 13. Dev tooling ● Build ○ Maven? ○ Ručno pisane skripte? ○ GruntJs
  • 14. GruntJs - JS alati ● Kvaliteta JS koda ○ JSLint / JSHint ● Optimizacija JS koda ○ concatenatori ○ minifieri ○ uglifieri ○ client-side template builderi
  • 15. GruntJs - CSS alati ● CSS preprocessori ○ Less ○ Sass ● CSS minifier
  • 16. GruntJs - Testing alati ● Test runneri ○ Mocha - server-side ○ Mocha - client-side ○ Jasmine ○ CasperJs / PhantomJs
  • 17. GruntJs - Deployment alati ● Build process ○ clean deployment target ○ build - concat, lint, minify, uglify... ○ copy assets to target ○ run tests ○ exec shell scripts ○ watchers
  • 18. GruntJS rulez! ● uglavnom sve dostupno kao GruntJs plugin ○ ...ili će uskoro biti...
  • 20. Links Server Side ● node.js -http://nodejs.org/ ● express http://expressjs.com/ Templating ● Mustache - http://mustache.github.com/ ● Handlebars - http://handlebarsjs.com/ ● Jade - http://jade-lang.com/ ● Underscore - http://underscorejs.org/#template Client-side libs ● KnockoutJs - http://knockoutjs.com/ ● BackboneJs - http://backbonejs.org/ ○ +MarionetteJS - http://www.marionettejs.com/ ● AngularJs - http://angularjs.org/ ● EmberJs - http://emberjs.com/ ● CanJS - http://canjs.us/
  • 21. Links UX ● Bootstrap - http://twitter.github.com/bootstrap/ ● Kendo UI - http://www.kendoui.com/ ● jQueryUI - http://jqueryui.com/ ● YUI - http://yuilibrary.com/ ● ExtJs - http://www.sencha.com/products/extjs/ ● Dojo - http://dojotoolkit.org/ Modularizacija: ● RequireJs - http://requirejs.org/ ● almond - https://github.com/jrburke/almond ● Curl - https://github.com/cujojs/curl ● StealJS - http://javascriptmvc.com/docs.html#!stealjs
  • 22. Links Testing ● Mocha - http://visionmedia.github.com/mocha/ ● Chai - http://chaijs.com/ ● Jasmine - http://pivotal.github.com/jasmine/ ● SinonJs - http://sinonjs.org/ ● PhantomJs - http://phantomjs.org/ ● CasperJs - http://casperjs.org/ CI ● CircleCI - https://circleci.com/ ● TeamCity - http://www.jetbrains.com/teamcity/ ● Travis CI - http://about.travis-ci.org/ ● Jenkins - http://jenkins-ci.org/ Build ● GruntJs - http://gruntjs.com/ ● Brunch - http://brunch.io/