Ingineria Dezvoltării Aplicaţiilor Javascript
Total Page:16
File Type:pdf, Size:1020Kb
inginerie inginerie în contextulsoftware Dr. Sabin Dr. Full - Stack Corneliu Buraga Buraga Web – profs.info.uaic.ro/~ Development JavaScript pics.me.me/story-of-every-project-after-3-months-initial-work-plan-57930917.png busaco / Dr. Sabin Buragaprofs.info.uaic.ro/~busaco busaco ~ “There are two ways to write error-free programs; / only the third one works.” profs.info.uaic.ro Alan J. Perlis Dr. Sabin Sabin Buraga Dr. busaco ~ / Ce instrumente software și biblioteci JS pot fi folosite în contextul programării Web? profs.info.uaic.ro Dr. Sabin Sabin Buraga Dr. instrumente busaco ~ / Editare de cod și dezvoltare de aplicații Web Depanare profs.info.uaic.ro Testare Documentare a codului Compresie Optimizare Sabin Buraga Dr. instrumente: editare busaco ~ / Editoare + medii integrate (IDE): Ace (Ajax.org Cloud9 Editor), Atom Editor, Brackets, CodeLite, Komodo, JS Development Tools (Eclipse), profs.info.uaic.ro Sublime Text, Visual Studio (Code), WebStorm etc. Dr. Sabin Sabin Buraga Dr. a se considera și github.com/sorrycc/awesome-javascript#editors instrumente: editare busaco ~ / Disponibile pe Web – în cloud: Cloud9 IDE, Codepen, JS Bin, JS Fiddle, Plunker, REPL.it,… profs.info.uaic.ro Dr. Sabin Sabin Buraga Dr. unele oferă și partajarea codului-sursă cu alți dezvoltatori instrumente: depanare busaco ~ / Utilizarea consolei JS obiectul console oferit de mediul de execuție profs.info.uaic.ro console.spec.whatwg.org (Living Standard, august 2019) metode utile: log (), error (), warn (), info (), assert (), time (), timeEnd (), trace (), group (), groupEnd (), table (), dir (), dirxml () Sabin Buraga Dr. instrumente: depanare busaco ~ / Utilizarea consolei JS obiectul console oferit de mediul de execuție profs.info.uaic.ro la nivel de browser Web developer.mozilla.org/Web/API/Console în contextul Node.js: modulul preinstalat console Sabin Buraga Dr. nodejs.org/api/console.html instrumente: depanare busaco ~ / profs.info.uaic.ro de studiat și M. Burgess, Beyond console.log(), 2018 medium.com/@mattburgess/beyond-console-log-2400fdf4a9d8 Dr. Sabin Sabin Buraga Dr. instrumente: depanare busaco ~ / Instrumentele de depanare profs.info.uaic.ro incluse în navigatoarele Web moderne: developers.google.com/web/tools/chrome-devtools/ developer.mozilla.org/docs/Tools docs.microsoft.com/en-us/microsoft-edge/devtools-guide docs.microsoft.com/en-us/microsoft-edge/devtools-guide-chromium developer.apple.com/safari/tools/ Sabin Buraga Dr. inspecție de variabile instrumente(watch) : depanarestiva apelurilor domeniu de (call stack) busaco vizibilitate ~ / (scope) puncte de profs.info.uaic.ro oprire (breakpoints) puncte de oprire vizând transferuri asincrone, DOM, Dr. Sabin Sabin Buraga Dr. evenimente,… medium.com/datadriveninvestor/stopping-using-console-log-and-start-using-your-browsers-debugger-62bc893d93ff instrumente: depanare busaco ~ / Instrumentele de depanare profs.info.uaic.ro disponibile ca proxy exemple: HTTP Toolkit – github.com/httptoolkit mitmproxy – mitmproxy.org Sabin Buraga Dr. Telerik Fiddler – www.telerik.com/fiddler instrumente: testare busaco ~ / Verificarea corectitudinii codului JavaScript profs.info.uaic.ro construcția "use strict"; indică interpretorului că se va utiliza varianta strictă a limbajului disponibilă începând cu ECMAScript versiunea 5 Dr. Sabin Sabin Buraga Dr. developer.mozilla.org/Web/JavaScript/Reference/Strict_mode instrumente: testare busaco ~ / Verificarea corectitudinii codului JavaScript profs.info.uaic.ro erorile de programare (e.g., crearea accidentală a variabilelor globale, nume identice de proprietăți etc.) vor conduce la emiterea de excepții Dr. Sabin Sabin Buraga Dr. instrumente: testare busaco ~ / Verificarea corectitudinii codului JavaScript profs.info.uaic.ro sunt interzise diverse facilități: numere exprimate în baza 8, folosirea construcțiilor with, arguments.callee etc. Dr. Sabin Sabin Buraga Dr. instrumente: testare busaco ~ / Modul de procesare strict: profs.info.uaic.ro modifică semantica programelor este implicit folosit pentru modulele de cod ES6 module code is always strict mode code Dr. Sabin Sabin Buraga Dr. nu este impus de mediul de execuție instrumente: testare busaco ~ / Verificare statică a codului profs.info.uaic.ro JSHint – www.jshint.com ESLint – eslint.org JS Inspect (detects copy-pasted & structurally similar code) github.com/danielstjules/jsinspect Dr. Sabin Sabin Buraga Dr. "use strict"; varAiurea = "Ah!"; const C =instrumente 33; : testare let obiect = {prop: ++C, prop: true}; // eroare de sintaxă console.error (`{obiect}`); busaco ~ / profs.info.uaic.ro Dr. Sabin Sabin Buraga Dr. instrumente : testare reguli reguli ESHint Dr. Sabin Buragaprofs.info.uaic.ro/~busaco instrumente: testare busaco ~ / Suport pentru testare, inclusiv unit testing profs.info.uaic.ro exemplificări: AVA, Cypress, dom-testing-library, Flow, Jasmine, Jest, Mocha, PhantomJS, Qunit, Sinon.js, Tape, TestCafe etc. github.com/sorrycc/awesome-javascript#testing-frameworks Dr. Sabin Sabin Buraga Dr. de studiat și Let’s Code: Test-Driven JavaScript www.letscodejavascript.com instrumente: testare busaco ~ / Testare cross-browser a aplicațiilor Web profs.info.uaic.ro exemple: Browsera – www.browsera.com Browserling – www.browserling.com Browser Sandbox – turbo.net/browsers Browser Shots – browsershots.org Sabin Buraga Dr. instrumente: documentarea codului busaco ~ / Standarde de redactare a codului JavaScript profs.info.uaic.ro JavaScript Standard Style standardjs.com Code Conventions for JavaScript www.crockford.com/code.html Principles of Writing Consistent, Idiomatic JavaScript Sabin Buraga Dr. github.com/rwaldron/idiomatic.js instrumente: documentarea codului busaco ~ / Standarde de redactare a codului JavaScript ghiduri specifice – câteva exemple: Airbnb JavaScript Style Guide profs.info.uaic.ro github.com/airbnb/javascript Google JavaScript Style Guide google.github.io/styleguide/jsguide.html React Native Code Style facebook.github.io/react-native/docs/style.html Sabin Buraga Dr. NPM’s Coding Style docs.npmjs.com/misc/coding-style.html instrumente: documentarea codului busaco ~ / Standarde de redactare a codului JavaScript profs.info.uaic.ro instrumente utile (formatatoare a codului-sursă): JS Beautifier – jsbeautifier.org Prettier – prettier.io esformatter – github.com/millermedeiros/esformatter Dr. Sabin Sabin Buraga Dr. /** marcaje (adnotări) speciale * Class representing a dot. * @extends Point în cadrul comentariilor: */ class Dot extends Point { @abstract @author /** * Create a dot. @access @copyright busaco ~ * @param {number} x - The x value. @alias @license / * @param {number} y - The y value. @async @summary * @param {number} width - ... @extends @description */ @class @version constructor(x, y, width) { // ... @interface } @example @callback @since /** @event @see profs.info.uaic.ro * Get the dot's width. @emits @todo * @return {number} The dot's width. @listens @deprecated */ @function getWidth() { // ... @property } @module } @requires Sabin Buraga Dr. … documentarea codului: JSDoc Toolkit – usejsdoc.org instrumente: compresie de cod busaco ~ / Instrumente privind compresia/minimizarea profs.info.uaic.ro exemple: JSCompress – github.com/circlecell/jscompress.com Minify – www.minifier.org UglifyJS (Mihai Bazon, absolvent FII) – lisperator.net/uglifyjs/ Dr. Sabin Sabin Buraga Dr. instrumente: optimizare javascript busaco ~ / Transformarea codului JS într-unul optimizat profs.info.uaic.ro exemple: Closure Compiler (Google) – developers.google.com/closure Prepack (Facebook) – prepack.io Dr. Sabin Sabin Buraga Dr. detalii într-un curs separat instrumente: pachete busaco ~ / Managementul de pachete JavaScript profs.info.uaic.ro căutare, instalare, compilare, verificare a dependențelor exemple: Bower, jspm, npm, Yarn etc. Dr. Sabin Sabin Buraga Dr. github.com/sorrycc/awesome-javascript#package-managers instrumente: pachete busaco ~ / Managementul de pachete JavaScript profs.info.uaic.ro crearea de conglomerate de cod/resurse (bundles) exemplificări: browserify, Rollup (specific ES6), webpack Dr. Sabin Sabin Buraga Dr. github.com/sorrycc/awesome-javascript#bundlers instrumente: fluxuri de activități busaco ~ / Suport pentru fluxuri de activități (workflow-uri), eventual realizate automat profs.info.uaic.ro exemple: Brunch, Grunt, Yeoman, Phantom.js, Plop, Selenium Sabin Buraga Dr. instrumente: machete de redare busaco ~ / Sisteme de management al machetelor de redare a conținutului (templating engines) profs.info.uaic.ro exemplificări: Dust.js, EJS, Handlebars, Mustache.js,… Sabin Buraga Dr. github.com/sorrycc/awesome-javascript#templating-engines instrumente: programare busaco ~ / Biblioteci pentru programarea funcțională profs.info.uaic.ro Lodash – lodash.com Ramda – ramdajs.com Underscore – underscorejs.org Dr. Sabin Sabin Buraga Dr. resurse de interes la github.com/stoeffel/awesome-fp-js instrumente: programare busaco ~ / Biblioteci pentru programarea reactivă profs.info.uaic.ro vizează procesarea fluxurilor de date asincrone pe baza paradigmei funcționale adoptă șablonul de proiectare Observer Dr. Sabin Sabin Buraga Dr. www.learnrxjs.io instrumente: programare busaco ~ / Biblioteci pentru programarea reactivă profs.info.uaic.ro exemple: RxJS – github.com/ReactiveX/rxjs Cycle – cycle.js.org MobX – mobx.js.org Most.js – github.com/cujojs/most Sabin Buraga Dr. instrumente busaco ~ / Suport pentru creșterea performanței profs.info.uaic.ro asm.js (Mozilla, 2012—2014) subset JavaScript ce poate fi utilizat ca limbaj de nivel scăzut, eficient – în spiritul limbajului