Secrets of the Javascript Ninja

Total Page:16

File Type:pdf, Size:1020Kb

Secrets of the Javascript Ninja Secrets of the JavaScript Ninja JOHN RESIG BEAR BIBEAULT MANNING SHELTER ISLAND Licensed to Serge Krul <[email protected]> For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 261 Shelter Island, NY 11964 Email: [email protected] ©2013 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. Development editors: Jeff Bleiel, Sebastian Stirling 20 Baldwin Road Technical editor: Valentin Crettaz PO Box 261 Copyeditor: Andy Carroll Shelter Island, NY 11964 Proofreader: Melody Dolab Typesetter: Dennis Dalinnik Cover designer: Leslie Haimes ISBN: 978-1-933988-69-6 Printed in the United States of America 12345678910–MAL–18171615141312 Licensed to Serge Krul <[email protected]> brief contents PART 1PREPARING FOR TRAINING.............................................1 1 ■ Enter the ninja 3 2 ■ Arming with testing and debugging 13 PART 2APPRENTICE TRAINING ................................................29 3 ■ Functions are fundamental 31 4 ■ Wielding functions 61 5 ■ Closing in on closures 89 6 ■ Object-orientation with prototypes 119 7 ■ Wrangling regular expressions 151 8 ■ Taming threads and timers 175 PART 3NINJA TRAINING........................................................191 9 ■ Ninja alchemy: runtime code evaluation 193 10 ■ With statements 215 11 ■ Developing cross-browser strategies 229 12 ■ Cutting through attributes, properties, and CSS 253 iii Licensed to Serge Krul <[email protected]> iv BRIEF CONTENTS PART 4MASTER TRAINING.....................................................287 13 ■ Surviving events 289 14 ■ Manipulating the DOM 329 15 ■ CSS selector engines 345 Licensed to Serge Krul <[email protected]> contents preface xi acknowledgments xiii about this book xv about the authors xx PART 1PREPARING FOR TRAINING .................................1 Enter the ninja 3 1 1.1 The JavaScript libraries we’ll be tapping 4 1.2 Understanding the JavaScript language 5 1.3 Cross-browser considerations 6 1.4 Current best practices 9 Current best practice: testing 9 ■ Current best practice: performance analysis 10 1.5 Summary 11 Arming with testing and debugging 13 2 2.1 Debugging code 14 Logging 14 ■ Breakpoints 16 v Licensed to Serge Krul <[email protected]> vi CONTENTS 2.2 Test generation 17 2.3 Testing frameworks 19 QUnit 21 ■ YUI Test 22 ■ JsUnit 22 Newer unit-testing frameworks 22 2.4 The fundamentals of a test suite 22 The assertion 23 ■ Test groups 24 ■ Asynchronous testing 25 2.5 Summary 27 PART 2APPRENTICE TRAINING.....................................29 Functions are fundamental 31 3 3.1 What’s with the functional difference? 32 Why is JavaScript’s functional nature important? 33 Sorting with a comparator 37 3.2 Declarations 40 Scoping and functions 43 3.3 Invocations 46 From arguments to function parameters 47 ■ Invocation as a function 49 ■ Invocation as a method 50 ■ Invocation as a constructor 52 ■ Invocation with the apply() and call() methods 54 3.4 Summary 58 Wielding functions 61 4 4.1 Anonymous functions 62 4.2 Recursion 64 Recursion in named functions 64 ■ Recursion with methods 65 The pilfered reference problem 66 ■ Inline named functions 68 The callee property 70 4.3 Fun with function as objects 71 Storing functions 72 ■ Self-memoizing functions 73 Faking array methods 76 4.4 Variable-length argument lists 77 Using apply() to supply variable arguments 77 Function overloading 79 4.5 Checking for functions 86 4.6 Summary 88 Licensed to Serge Krul <[email protected]> CONTENTS vii Closing in on closures 89 5 5.1 How closures work 90 5.2 Putting closures to work 94 Private variables 94 ■ Callbacks and timers 96 5.3 Binding function contexts 99 5.4 Partially applying functions 103 5.5 Overriding function behavior 106 Memoization 106 ■ Function wrapping 109 5.6 Immediate functions 111 Temporary scope and private variables 112 ■ Loops 115 Library wrapping 117 5.7 Summary 118 Object-orientation with prototypes 119 6 6.1 Instantiation and prototypes 120 Object instantiation 120 ■ Object typing via constructors 127 Inheritance and the prototype chain 128 HTML DOM prototypes 133 6.2 The gotchas! 135 Extending Object 135 ■ Extending Number 136 Subclassing native objects 137 ■ Instantiation issues 139 6.3 Writing class-like code 143 Checking for function serializability 146 ■ Initialization of subclasses 147 ■ Preserving super-methods 148 6.4 Summary 150 Wrangling regular expressions 151 7 7.1 Why regular expressions rock 152 7.2 A regular expression refresher 153 Regular expressions explained 153 ■ Terms and operators 154 7.3 Compiling regular expressions 158 7.4 Capturing matching segments 161 Performing simple captures 161 ■ Matching using global expressions 162 ■ Referencing captures 163 Non-capturing groups 165 7.5 Replacing using functions 166 Licensed to Serge Krul <[email protected]> viii CONTENTS 7.6 Solving common problems with regular expressions 168 Trimming a string 168 ■ Matching newlines 170 Unicode 171 ■ Escaped characters 172 7.7 Summary 172 Taming threads and timers 175 8 8.1 How timers and threading work 176 Setting and clearing timers 176 ■ Timer execution within the execution thread 177 ■ Differences between timeouts and intervals 179 8.2 Minimum timer delay and reliability 180 8.3 Dealing with computationally expensive processing 183 8.4 Central timer control 186 8.5 Asynchronous testing 189 8.6 Summary 190 PART 3NINJA TRAINING ............................................191 Ninja alchemy: runtime code evaluation 193 9 9.1 Code evaluation mechanisms 194 Evaluation with the eval() method 194 ■ Evaluation via the Function constructor 197 ■ Evaluation with timers 197 Evaluation in the global scope 198 ■ Safe code evaluation 199 9.2 Function “decompilation” 201 9.3 Code evaluation in action 204 Converting JSON 204 ■ Importing namespaced code 205 JavaScript compression and obfuscation 206 ■ Dynamic code rewriting 208 ■ Aspect-oriented script tags 209 Metalanguages and DSLs 210 9.4 Summary 213 With statements 215 10 10.1 What’s with “with”? 216 Referencing properties within a with scope 216 ■ Assignments within a with scope 218 ■ Performance considerations 219 10.2 Real-world examples 221 10.3 Importing namespaced code 223 Licensed to Serge Krul <[email protected]> CONTENTS ix 10.4 Testing 223 10.5 Templating with “with” 224 10.6 Summary 227 Developing cross-browser strategies 229 11 11.1 Choosing which browsers to support 230 11.2 The five major development concerns 231 Browser bugs and differences 232 ■ Browser bug fixes 233 Living with external code and markup 234 Missing features 239 ■ Regressions 240 11.3 Implementation strategies 242 Safe cross-browser fixes 242 ■ Object detection 243 Feature simulation 245 ■ Untestable browser issues 247 11.4 Reducing assumptions 249 11.5 Summary 251 Cutting through attributes, properties, and CSS 253 12 12.1 DOM attributes and properties 255 Cross-browser naming 256 ■ Naming restrictions 257 Differences between XML and HTML 257 ■ Behavior of custom attributes 258 ■ Performance considerations 258 12.2 Cross-browser attribute issues 262 DOM id/name expansion 262 ■ URL normalization 264 The style attribute 265 ■ The type attribute 265 The tab index problem 266 ■ Node names 267 12.3 Styling attribute headaches 267 Where are my styles? 268 ■ Style property naming 270 The float style property 271 ■ Conversion of pixel values 271 Measuring heights and widths 272 ■ Seeing through opacity 276 ■ Riding the color wheel 279 12.4 Fetching computed styles 282 12.5 Summary 285 PART 4MASTER TRAINING .........................................287 Surviving events 289 13 13.1 Binding and unbinding event handlers 290 13.2 The Event object 294 Licensed to Serge Krul <[email protected]> x CONTENTS 13.3 Handler management 297 Centrally storing associated information 298 Managing event handlers 300 13.4 Triggering events 309 Custom events 310 13.5 Bubbling and delegation 315 Delegating events to an ancestor 315 ■ Working around browser deficiencies 316 13.6 The document ready event 324 13.7 Summary 326 Manipulating the DOM 329 14 14.1 Injecting HTML into the DOM 330 Converting HTML to DOM 331 ■ Inserting into the document 334 ■ Script execution 336 14.2 Cloning elements 338 14.3 Removing elements 340 14.4 Text contents 341 Setting text 342 ■ Getting text 343 14.5 Summary 344 CSS selector engines 345 15 15.1 The W3C Selectors API 347 15.2 Using XPath to find elements 349 15.3 The pure-DOM implementation 351 Parsing the selector
Recommended publications
  • Changing the Game: Monthly Technology Briefs
    the way we see it Changing the Game: Monthly Technology Briefs April 2011 Tablets and Smartphones: Levers of Disruptive Change Read the Capgemini Chief Technology Officers’ Blog at www.capgemini.com/ctoblog Public the way we see it Tablets and Smartphones: Levers of Disruptive Change All 2010 shipment reports tell the same story - of an incredible increase in the shipments of both Smartphones and Tablets, and of a corresponding slowdown in the conventional PC business. Smartphone sales exceeded even the most optimis- tic forecasts of experts, with a 74 percent increase from the previous year – around a battle between Apple and Google Android for supremacy at the expense of traditional leaders Nokia and RIM BlackBerry. It was the same story for Tablets with 17.4 million units sold in 2010 led by Apple, but once again with Google Android in hot pursuit. Analyst predictions for shipments suggest that the tablet market will continue its exponential growth curve to the extent that even the usually cautious Gartner think that by 2013 there will be as many Tablets in use in an enterprise as PCs with a profound impact on the IT environment. On February 7, as part of the Gartner ‘First Thing Monday’ series under the title ‘The Digital Natives are Restless, The impending Revolt against the IT Nanny State’ Gartner analyst Jim Shepherd stated; “I am regularly hearing middle managers and even senior executives complaining bit- terly about IT departments that are so focussed on the global rollout of some monolith- ic solution that they have no time for new and innovative technologies that could have an immediate impact on the business.
    [Show full text]
  • Marcelo Camargo (Haskell Camargo) – Résumé Projects
    Marcelo Camargo (Haskell Camargo) – Résumé https://github.com/haskellcamargo [email protected] http://coderbits.com/haskellcamargo Based in Joinville / SC – Brazil Knowledge • Programming languages domain: ◦ Ada, AdvPL, BASIC, C, C++, C#, Clipper, Clojure, CoffeeScript, Common LISP, Elixir, Erlang, F#, FORTRAN, Go, Harbour, Haskell, Haxe, Hy, Java, JavaScript, Ink, LiveScript, Lua, MATLAB, Nimrod, OCaml, Pascal, PHP, PogoScript, Processing, PureScript, Python, Ruby, Rust, Self, Shell, Swift, TypeScript, VisualBasic [.NET], Whip, ZPL. • Markup, style and serialization languages: ◦ Markdown, reStructuredText, [X] HTML, XML, CSS, LESS, SASS, Stylus, Yaml, JSON, DSON. • Database management systems: ◦ Oracle, MySQL, SQL Server, IBM DB2, PostgreSQL. • Development for operating systems: ◦ Unix based, Windows (CE mobile included), Android, Firefox OS. • Parsers and compilers: ◦ Macros: ▪ Sweet.js, preprocessor directives. ◦ Parser and scanner generators: ▪ ANTLR, PEG.js, Jison, Flex, re2c, Lime. • Languages: ◦ Portuguese (native) ◦ English (native) ◦ Spanish (fluent) ◦ French (fluent) ◦ Turkish (intermediate) ◦ Chinese (mandarin) (intermediate) ◦ Esperanto (intermediate) Projects • Prelude AdvPL – a library that implements functional programming in AdvPL and extends its syntax to a more expressive one; it's a port of Haskell's Prelude; • Frida – a LISP dialect that runs on top of Node.js; • PHPP – A complete PHP preprocessor with a grammar able to identify and replace tokens and extend/modify the language syntax, meant to be implemented
    [Show full text]
  • Pragmatic Guide to Javascript
    www.allitebooks.com What Readers Are Saying About Pragmatic Guide to J a v a S c r i p t I wish I had o w n e d this book when I first started out doing JavaScript! Prag- matic Guide to J a v a S c r i p t will take you a big step ahead in programming real-world JavaScript by showing you what is going on behind the scenes in popular JavaScript libraries and giving you no-nonsense advice and back- ground information on how to do the right thing. W i t h the condensed years of e x p e r i e n c e of one of the best JavaScript developers around, it’s a must- read with great reference to e v e r y d a y JavaScript tasks. Thomas Fuchs Creator of the script.aculo.us framework An impressive collection of v e r y practical tips and tricks for getting the most out of JavaScript in today’s browsers, with topics ranging from fundamen- tals such as form v a l i d a t i o n and JSON handling to application e x a m p l e s such as mashups and geolocation. I highly recommend this book for anyone wanting to be more productive with JavaScript in their web applications. Dylan Schiemann CEO at SitePen, cofounder of the Dojo T o o l k i t There are a number of JavaScript books on the market today, b u t most of them tend to focus on the new or inexperienced JavaScript programmer.
    [Show full text]
  • Opera Software the Best Browsing Experience on Any Device
    Opera Software The best browsing experience on any device The best Internet experience on any device Web Standards for the Future – Bruce Lawson, Opera.com • Web Evangelist, Opera • Tech lead, Law Society & Solicitors Regulation Authority (2004-8) • Author 2 books on Web Standards, edited 2 • Committee member for British Standards Institution (BSI) for the new standard for accessible websites • Member of Web Standards Project: Accessibility Task Force • Member of W3C Mobile Best Practices Working Group Web Standards for the Future – Bruce Lawson, Opera.com B.A., Honours English Literature and Language with Drama Theresa is blind But she can use the Web if made with standards The big picture WWW The big picture Western Western Web A web (pre)history • 1989 TBL proposes a project • 1992 <img> in Mosaic beta. Now 99.57% (MAMA) • 1994 W3C started at MIT • 1996 The Browser Wars • 1999 WAP, Web Content Accessibility Guidelines (WCAG) • 2000 Flash Modern web history • 2000-ish .com Crash - Time to grow up... • 2002 Opera Mobile with Small Screen Rendering • 2005 WHAT-WG founded, W3C Mobile Web Initiative starts • 2007 W3C adopts WHAT-WG spec as basis for HTML 5 • January 22, 2008 First public working draft of HTML 5 Standards at Opera • 25 employees work on standards • Mostly at W3C - a big player • Working on many standards • Bringing new work to W3C • Implementing Standards properly (us and you!) (Web Standards Curriculum www.opera.com/wsc) Why standards? The Web works everywhere - The Web is the platform • Good standards help developers: validate; separate content and presentation - means specialisation and maintainability.
    [Show full text]
  • Javascript Tomasz Pawlak, Phd Marcin Szubert, Phd Institute of Computing Science, Poznan University of Technology Presentation Outline
    INTERNET SYSTEMS JAVASCRIPT TOMASZ PAWLAK, PHD MARCIN SZUBERT, PHD INSTITUTE OF COMPUTING SCIENCE, POZNAN UNIVERSITY OF TECHNOLOGY PRESENTATION OUTLINE • What is JavaScript? • Historical Perspective • Basic JavaScript • JavaScript: The Good Parts • JavaScript: The Bad Parts • Languages that compile to JavaScript • ECMAScript 6 MODERN WEB APPLICATION DATABASE SERVER HTML defines structure and content, CSS sets the formatting and appearance, JavaScript adds interactivity to a webpage and allows to create rich web applications. WHY JAVASCRIPT? • JavaScript is the language of the web browser — it is the most widely deployed programming language in history • At the same time, it is one of the most despised and misunderstood programming languages in the world • The amazing thing about JavaScript is that it is possible to get work done with it without knowing much about the language, or even knowing much about programming. It is a language with enormous expressive power. It is even better when you know what you’re doing — JAVASCRIPT: THE GOOD PARTS , DOUGLAS CROCKFORD WHY JAVASCRIPT? • Q: If you had to start over, what are the technologies, languages, paradigms and platforms I need to be up- to-date and mastering in my new world of 2014? • A: Learn one language you can build large systems with AND also learn JavaScript. • JavaScript is the language of the web. The web will persist and the web will win. That's why I suggest you learn JavaScript — S C O T T HANSELMAN , 2 0 1 4 WHAT IS JAVASCRIPT? • JavaScript is a cross-platform, object-oriented, functional, lightweight, small scripting language. • JavaScript contains a standard library of built-in objects, such as Array and Math, and a core set of language elements such as operators, control structures, and statements.
    [Show full text]
  • A Javascript Mode for Yi
    Abstract Yi is a text editor written in the lazy functional programming language Haskell, which makes it possible to define precise editing modes using an abstract syntax tree provided online using the lazy and incremental parser library in Yi. We have developed a JavaScript mode for this editor using this parser library to accurately point out possible errors in the source code. The mode accurately highlights syntactical errors as the user types and pro- vides a verifier to check the semantics of the source code. It supports most of the syntax from JavaScript 1.8 and can readily be extended with more functionality. The mode can also be used as a starting point for future developers of C-like modes for Yi. Writing a responsive parser for Yi proved non-trivial, because of the trade-off between parser performance and accuracy. This report describes how to write a mode for Yi and the different problems encountered during the working process of the JavaScript mode. It also describes in what ways the problems were solved. Sammanfattning Yi är en textredigerare skriven i det lata funktionella programspråket Haskell, som gör det möjligt att definiera noggranna redigeringslägen med hjälp av ett abstrakt syntaxträd som tillhandahålls av det lata och inkre- mentella parsningsbiblioteket i Yi. Vi har utvecklat ett JavaScript-läge till denna redigerare med hjälp av detta parsningsbibliotek för att exakt utpeka möjliga fel i källkoden. Läget markerar syntaktiska fel medan användaren skriver och tillhandahåller en verifierare för att kontrollera semantiken i källkoden. Det stödjer större delen av syntaxen i JavaScript 1.8 och kan enkelt utökas med mer funk- tionalitet.
    [Show full text]
  • Declare Named Function Coffeescript
    Declare Named Function Coffeescript Dannie remains feudalistic after Waring pikes unendurably or understudied any issue. Mickie waters outrageously. Hansel ratchet her saffrons banteringly, drivable and grouchier. This nintendo switch from running code must carefully update clause runs to adjust a named function with leading number of place You down need the add furniture to execute coffee script code in an HTML file In other cases I've seen people scour the attributes of typecoffeescript and typecoffee so they might offer for you fill well. CoffeeScript and Named Functions Software Engineering. Thanks for contributing an hook to socket Overflow! It was expected. Tech Book time Off CoffeeScript Vs Simplifying Lucid Mesh. Function var age myName name names say i len myName. CoffeeScript Interview Questions for beginners and professionals with decent list at top frequently. In its own derivatives of array which others have to motivate us with other languages they different from christian faith: was so why i actually declare named function coffeescript, rather than enforcing classical object. Therefore, where site navigate the funeral was announced for the procedure time. Do exploration spacecraft enter your function invocation can even though, coffeescript file is named functions like java developers have you want a string, dynamic import prelude. This regard where coffeescript can be a fee problem. You declare variables declared in other objects from the bottom, things for declaration location data type errors is where it stopped requiring by opening a lesson here! Already there an account? Behind them in function declaration, or named shorthand method needs to declare it actually quite surprising.
    [Show full text]
  • Jquery Cloudflare Your Company Via Grunt-Contrib-Uglify Used to Build That Jquery
    JavaScript & Security get married Yan Zhu NCC Group SF Open Forum 9/17/15 F YEAH RUSTIC PENNSYLVANIA WEDDING THEME!! About me: ● Security Engineer at Yahoo! by day ● EFF Technology Fellow (Let’s Encrypt, HTTPS Everywhere) ● That’s a real photo of me -> Our story 09.??.1995 08.19.15 JavaScript released! Started investigating JS optimizer security as a side project. ??.??.1991 01.05.11 08.23.15 I was born! Wrote my first line of Got bored and mostly JavaScript. stopped working on this project. This talk is about JavaScript. (sorry not sorry) JAVASCRIPT What runs JS? ● Browsers ● Servers (node/io.js) ● Soon: everything Inspiration GET YOUR COPY TODAY PoC||GTFO 0x08 https://www.alchemistowl.org/pocorgtfo/ “No amount of source-level verification or scrutiny will protect you from using untrusted code. In demonstrating the possibility of this kind of attack, I picked on the C compiler. I could have picked on any program-handling program such as an assembler, a loader, or even hardware microcode. As the level of program gets lower, these bugs will be harder and harder to detect.” Ken Thompson, Reflections on Trusting Trust (1984) seen in the wild! JS isn’t “compiled,” but ... ● Transpilers to JS exist for every major language ● JS sugar (CoffeeScript, Coco, LiveScript, Sibilant) ● Optimizers (Closure, Uglify) ● Static typing (Closure, Flow, TypeScript, asm.js) ● Language extensions (React’s JSX) ● ES6 -> ES5 converter (Babel) more at https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that- compile-to-js Let’s get hackin’ Step 1: Pick a JS library Who uses UglifyJS2? INSERT OVERCROPPED LOGO gruntjs jquery cloudflare your company via grunt-contrib-uglify used to build that jquery.
    [Show full text]
  • Expanding the Power of Csound with Integrated Html and Javascript
    Michael Gogins. Expanding the Power of Csound with Intergrated HTML and JavaScript EXPANDING THE POWER OF CSOUND WITH INTEGRATED HTML AND JAVA SCRIPT Michael Gogins [email protected] https://michaelgogins.tumblr.com http://michaelgogins.tumblr.com/ This paper presents recent developments integrating Csound [1] with HTML [2] and JavaScript [3, 4]. For those new to Csound, it is a “MUSIC N” style, user- programmable software sound synthesizer, one of the first yet still being extended, written mostly in the C language. No synthesizer is more powerful. Csound can now run in an interactive Web page, using all the capabilities of current Web browsers: custom widgets, 2- and 3-dimensional animated and interactive graphics canvases, video, data storage, WebSockets, Web Audio, mathematics typesetting, etc. See the whole list at HTML5 TEST [5]. Above all, the JavaScript programming language can be used to control Csound, extend its capabilities, generate scores, and more. JavaScript is the “glue” that binds together the components and capabilities of HTML5. JavaScript is a full-featured, dynamically typed language that supports functional programming and prototype-based object- oriented programming. In most browsers, the JavaScript virtual machine includes a just- in-time compiler that runs about 4 times slower than compiled C, very fast for a dynamic language. JavaScript has limitations. It is single-threaded, and in standard browsers, is not permitted to access the local file system outside the browser's sandbox. But most musical applications can use an embedded browser, which bypasses the sandbox and accesses the local file system. HTML Environments for Csound There are two approaches to integrating Csound with HTML and JavaScript.
    [Show full text]
  • Kaang: a Restful API Generator for the Modern Web
    Kaang: A RESTful API Generator for the Modern Web Ricardo Queirós CRACS & INESC-Porto LA & DI/ESMAD/P.PORTO, Porto, Portugal [email protected] https://orcid.org/0000-0002-1985-6285 Abstract Technology is constantly evolving, as a result, users have become more demanding and the ap- plications more complex. In the realm of Web development, JavaScript is growing in a surprising way, already leaving the boundaries of the browser, mainly due to the advent of Node.js. In fact, JavaScript is constantly being reinvented and, from the ES2015 version, began to include the OO concepts typically found in other programming languages. With Web access being mostly made by mobile devices, developers face now performance challenges and need to perform a plethora of tasks that weren’t necessary a decade ago, such as managing dependencies, bundling files, minifying code, optimizing images and others. Many of these tasks can be achieved by using the right tools for the job. However, developers not only have to know those tools, but they also must know how to access and operate them. This process can be tedious, confusing, time-consuming and error-prone. In this paper, we present Kaang, an automatic generator of RESTFul Web applications. The ultimate goal of Kaang is to minimize the impact of creating a RESTFul service by automating all its workflow (e.g., files structuring, boilerplate code generation, dependencies management, and task building). This kind of generators will benefit two types of users: will help novice developers to decrease their learning curve while facing the new frameworks and libraries commonly found in the modern Web and speed up the work of expert developers avoiding all the repetitive and bureaucratic work.
    [Show full text]
  • JAVASCRIPT TRANSPILERI Završni Rad
    SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA Preddiplomski studij JAVASCRIPT TRANSPILERI Završni rad Zvonimir Grubišić Osijek, 2017 Obrazac Z1P - Obrazac za ocjenu završnog rada na preddiplomskom sveučilišnom studiju Osijek, 23.09.2018. Odboru za završne i diplomske ispite Prijedlog ocjene završnog rada Ime i prezime studenta: Zvonimir Grubišić Studij, smjer: Preddiplomski sveučilišni studij Računarstvo Mat. br. studenta, godina upisa: R3637, 29.09.2017. OIB studenta: 50946540896 Mentor: Izv. prof. dr. sc. Irena Galić Sumentor: Hrvoje Leventić Sumentor iz tvrtke: Naslov završnog rada: Javascript transpileri Znanstvena grana rada: Programsko inženjerstvo (zn. polje računarstvo) Predložena ocjena završnog rada: Izvrstan (5) Primjena znanja stečenih na fakultetu: 3 bod/boda Kratko obrazloženje ocjene prema Postignuti rezultati u odnosu na složenost zadatka: 3 bod/boda Kriterijima za ocjenjivanje završnih i Jasnoća pismenog izražavanja: 3 bod/boda diplomskih radova: Razina samostalnosti: 3 razina Datum prijedloga ocjene mentora: 23.09.2018. Datum potvrde ocjene Odbora: 26.09.2018. Potpis: Potpis mentora za predaju konačne verzije rada u Studentsku službu pri završetku studija: Datum: IZJAVA O ORIGINALNOSTI RADA Osijek, 01.10.2018. Ime i prezime studenta: Zvonimir Grubišić Studij: Preddiplomski sveučilišni studij Računarstvo Mat. br. studenta, godina upisa: R3637, 29.09.2017. Ephorus podudaranje [%]: 1% Ovom izjavom izjavljujem da je rad pod nazivom: Javascript transpileri izrađen pod vodstvom mentora Izv. prof. dr. sc. Irena Galić i sumentora Hrvoje Leventić moj vlastiti rad i prema mom najboljem znanju ne sadrži prethodno objavljene ili neobjavljene pisane materijale drugih osoba, osim onih koji su izričito priznati navođenjem literature i drugih izvora informacija. Izjavljujem da je intelektualni sadržaj navedenog rada proizvod mog vlastitog rada, osim u onom dijelu za koji mi je bila potrebna pomoć mentora, sumentora i drugih osoba, a što je izričito navedeno u radu.
    [Show full text]
  • Research-Based Comparison of Top20 Javascript Frameworks & Libraries Picked by Remote Developers in 2020
    Research-Based Comparison of Top20 JavaScript Frameworks & Libraries Picked by Remote Developers in 2020 Original # of Websites # of Devs Used Top 3 Countries with # of # of Ranking on # of Open Average JS Frameworks/ # of Stars Average Dev Type Founded by Release Ideal for Size Powered by a It (2019, the Highest % of Contributors Forks on Stack Overflow Vacancies on Hourly Rate Learnability Libraries on GitHub Salary (USA) Year Framework Worldwide) Usage on GitHub GitHb (2019) LinkedIn (USA) US React JavaScript library Facebook 2011 UI 133KB 380,164 71.7% Russia 146,000 1,373 28,300 1 130,300 $91,000.00 $35.19 Moderate Germany US Single-page apps and dynamic web Angular Front-end framework Google 2016 566KB 706,489 21.9% UK 59,000 1,104 16,300 2 94,282 $84,000.00 $39.14 Moderate apps Brazil US Vue.js Front-end framework Evan You 2014 UI and single-page applications 58.8KB 241,б615 40.5% Russia 161,000 291 24,300 5 27,395 $116,562.00 $42.08 Easy Germany US Ember.js Front-end framework Yehuda Katz 2011 Scalable single-page web apps 435KB 20,985 3.6% Germany 21,400 782 4,200 8 3,533 $105,315.00 $51.00 Difficult UK US Scalable web, mobile and desktop Meteor App platform Meteor Software 2012 4.2MB 8,674 4% Germany 41,700 426 5,100 7 256 $96,687.00 $27.92 Moderate apps France US JavaScript runtime Network programs, such as Web Node.js Ryan Dahl 2009 141KB 1,610,630 49.9% UK 69,000 2,676 16,600 not included 52,919 $104,964.00 $33.78 Moderate (server) environment servers Germany US Polymer JS library Google 2015 Web apps using web components
    [Show full text]