SPA Design and Architecture

Total Page:16

File Type:pdf, Size:1020Kb

SPA Design and Architecture Understanding single-page web applications Emmit A. Scott, Jr. FOREWORD BY Burke Holland MANNING SPA Design and Architecture Licensed to Mark Watson <[email protected]> ii Licensed to Mark Watson <[email protected]> SPA Design and Architecture Understanding single-page web applications EMMIT A. SCOTT, JR. MANNING SHELTER ISLAND Licensed to Mark Watson <[email protected]> iv 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 761 Shelter Island, NY 11964 Email: [email protected] ©2016 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 elemental chlorine. Manning Publications Co. Development editor: Dan Maharry 20 Baldwin Road Technical development editor: Joel Kotarski PO Box 761 Technical proofreaders: Andrew Gibson Shelter Island, NY 11964 Jean-François Morin Copyeditor: Sharon Wilkey Proofreader: Linda Recktenwald Typesetter: Marija Tudor Cover designer: Marija Tudor ISBN: 9781617292439 Printed in the United States of America 12345678910–EBM–201918171615 Licensed to Mark Watson <[email protected]> To my three beautiful children, Ana Carolina, David, and Sofía. Thanks for all the smiles, hugs, and unconditional love. You are forever in my heart. Licensed to Mark Watson <[email protected]> vi Licensed to Mark Watson <[email protected]> brief contents PART 1THE BASICS ..................................................................1 1 ■ What is a single-page application? 3 2 ■ The role of MV* frameworks 22 3 ■ Modular JavaScript 52 PART 2CORE CONCEPTS ........................................................83 4 ■ Navigating the single page 85 5 ■ View composition and layout 106 6 ■ Inter-module interaction 129 7 ■ Communicating with the server 156 8 ■ Unit testing 186 9 ■ Client-side task automation 209 appendix A Employee directory example walk-through 229 appendix B Review of the XMLHttpRequest API 259 appendix C Chapter 7 server-side setup and summary 266 appendix D Installing Node.js and Gulp.js 277 vii Licensed to Mark Watson <[email protected]> viii BRIEF CONTENTS Licensed to Mark Watson <[email protected]> contents foreword xv preface xvii acknowledgments xviii about this book xix about the cover illustration xxiii PART 1THE BASICS 1 What is a single-page application? 3 1 1.1 SPA in a nutshell 4 No browser refreshes 7 ■ Presentation logic in the client 7 Server transactions 7 1.2 A closer look 8 An SPA starts with a shell 8 ■ From traditional pages to views 9 ■ The birth of a view 10 ■ View swapping for zero reload navigation 11 ■ Fluidity through dynamic updates 12 1.3 Benefits of SPAs over traditional web applications 12 1.4 Rethinking what you already know 14 1.5 Ingredients of a well-designed SPA 15 Organizing your project 15 ■ Creating a maintainable, loosely coupled UI 17 ■ Using JavaScript modules 18 ■ Performing SPA navigation 19 ■ Creating view composition and layout 19 ■ Enabling module communication 20 ix Licensed to Mark Watson <[email protected]> x CONTENTS Communicating with the server 20 ■ Performing unit testing 20 ■ Using client-side automation 20 1.6 Summary 20 The role of MV* frameworks 22 2 2.1 What is MV*? 24 Traditional UI design patterns 25 ■ MV* and the browser environment 27 2.2 Common MV* concepts 29 Meet the frameworks 30 ■ Meet our MV* project 30 Models 32 ■ Bindings 36 ■ Templates 40 ■ Views 44 2.3 Why use an MV* framework? 44 Separation of concerns 45 ■ Routine tasks simplified 46 Productivity gains 47 ■ Standardization 47 Scalability 48 2.4 Choosing a framework 48 2.5 Chapter challenge 50 2.6 Summary 51 Modular JavaScript 52 3 3.1 What is a module? 53 Module pattern concepts 53 ■ The module’s structure 54 The revealing module pattern 55 3.2 Why modular programming? 56 Avoiding name collisions 56 ■ Protecting your code’s integrity 65 ■ Hiding complexity 67 ■ Reducing the impact of code changes 68 ■ Organizing your code 68 Understanding disadvantages of the module pattern 69 3.3 The module pattern dissected 69 Achieving privacy 69 ■ Creating the public API 70 Allowing for global imports 73 ■ Creating the module’s namespace 73 3.4 Module loading and dependency management 74 Script loaders 74 ■ Asynchronous Module Definition 75 Using AMD modules with RequireJS 77 3.5 Chapter challenge 81 3.6 Summary 81 Licensed to Mark Watson <[email protected]> CONTENTS xi PART 2CORE CONCEPTS ............................................83 Navigating the single page 85 4 4.1 What is a client-side router? 86 Traditional navigation 86 ■ SPA navigation 86 4.2 Routes and their configuration 88 Route syntax 90 ■ Route entries 90 ■ Route parameters 91 Default routes 93 4.3 How do client-side routers work? 93 The fragment identifier method 94 ■ The HTML5 History API method 95 ■ Changes for the HTML5 History API method 97 4.4 Putting it all together: implementing routing in SPAs 98 The faculty list (default route) 99 ■ The main contact route 101 ■ Faculty office hours (parameterized route) 102 4.5 Chapter challenge 104 4.6 Summary 105 View composition and layout 106 5 5.1 Introducing our project 107 5.2 Reviewing layout design concepts 108 Views 108 ■ Regions 109 ■ View composition 110 Nested views 111 ■ Routes 112 5.3 Considering alternatives for advanced composition and layout 113 Pros 113 ■ Cons 114 5.4 Designing the application 114 Designing the base layout 115 ■ Designing the default content 117 ■ Using a view manager for complex designs 122 Creating nested views with their own states 125 5.5 Chapter challenge 127 5.6 Summary 128 Inter-module interaction 129 6 6.1 Review of module concepts 131 Modules encapsulate code 131 ■ APIs provide controlled access to internal functionality 133 ■ SRP means designing with a single purpose 134 ■ Code reuse helps your project scale 135 Licensed to Mark Watson <[email protected]> xii CONTENTS 6.2 Inter-module interaction methods 136 Inter-module interaction through dependencies 136 Dependency method pros and cons 138 ■ Inter-module interaction through publish/subscribe 138 ■ Pub/sub pros and cons 141 6.3 Project details 142 Searching 144 ■ Displaying product information 150 6.4 Chapter challenge 155 6.5 Summary 155 Communicating with the server 156 7 7.1 Understanding the project requirements 158 7.2 Exploring the communication process 158 Choosing a data type 158 ■ Using a supported HTTP request method 159 ■ Converting the data 160 7.3 Using MV* frameworks 162 Generating requests 162 ■ Processing results with callbacks 165 ■ Processing results with promises 166 Promise error handling 171 7.4 Consuming RESTful web services 172 What is REST? 172 ■ REST principles 172 ■ How MV* frameworks help us be RESTful 174 7.5 Project details 174 Configuring REST calls 174 ■ Adding product items to the cart 177 ■ Viewing the cart 179 ■ Updating the cart 181 Removing products from the cart 183 7.6 Chapter challenge 184 7.7 Summary 184 Unit testing 186 8 8.1 Understanding the project 187 8.2 What is a unit test? 187 Benefits of unit testing 188 ■ Creating better unit tests 189 8.3 Traditional unit testing 192 Getting started with QUnit 193 ■ Creating your first unit tests 196 ■ Testing code built with MV* objects 200 Testing changes to the DOM 205 ■ Adding other testing frameworks to the mix 206 Licensed to Mark Watson <[email protected]> CONTENTS xiii 8.4 Chapter challenge 208 8.5 Summary 208 Client-side task automation 209 9 9.1 Common uses for task runners 210 Live browser reloads 210 ■ Automatic JavaScript and CSS preprocessing 211 ■ Automatic code analysis from linters 211 Continuous unit testing 211 ■ File concatenation 212 Code minification 212 ■ Continuous integration 212 9.2 Choosing a task runner 212 9.3 Our project 213 Introducing Gulp.js 214 ■ Creating your first task 215 Creating a code analysis task 216 ■ Creating a browser-reload task 218 ■ Automating unit testing 220 ■ Creating a build process 222 9.4 Chapter challenge 227 9.5 Summary 227 appendix A Employee directory example walk-through 229 appendix B Review of the XMLHttpRequest API 259 appendix C Chapter 7 server-side setup and summary 266 appendix D Installing Node.js and Gulp.js 277 index 281 Licensed to Mark Watson <[email protected]> xiv CONTENTS Licensed to Mark Watson <[email protected]> foreword In 1991, Tim Berners-Lee launched the world’s first website, which ran on a program he named the WorldWideWeb. Two years later, he would release the source code for the WorldWideWeb and the world itself would never be the same. You can still see that first web page at info.cern.ch. Since 1991, the web has experienced unprecedented popularity. At 24 years old, it’s still the most widely used technology in the world. It runs on all operating systems, all hardware platforms, and nearly all mobile devices in some form or fashion. The program that makes this all possible is the almighty web browser.
Recommended publications
  • THE FUTURE of SCREENS from James Stanton a Little Bit About Me
    THE FUTURE OF SCREENS From james stanton A little bit about me. Hi I am James (Mckenzie) Stanton Thinker / Designer / Engineer / Director / Executive / Artist / Human / Practitioner / Gardner / Builder / and much more... Born in Essex, United Kingdom and survived a few hair raising moments and learnt digital from the ground up. Ok enough of the pleasantries I have been working in the design field since 1999 from the Falmouth School of Art and onwards to the RCA, and many companies. Ok. less about me and more about what I have seen… Today we are going to cover - SCREENS CONCEPTS - DIGITAL TRANSFORMATION - WHY ASSETS LIBRARIES - CODE LIBRARIES - COST EFFECTIVE SOLUTION FOR IMPLEMENTATION I know, I know, I know. That's all good and well, but what does this all mean to a company like mine? We are about to see a massive change in consumer behavior so let's get ready. DIGITAL TRANSFORMATION AS A USP Getting this correct will change your company forever. DIGITAL TRANSFORMATION USP-01 Digital transformation (DT) – the use of technology to radically improve performance or reach of enterprises – is becoming a hot topic for companies across the globe. VERY DIGITAL CHANGING NOT VERY DIGITAL DIGITAL TRANSFORMATION USP-02 Companies face common pressures from customers, employees and competitors to begin or speed up their digital transformation. However they are transforming at different paces with different results. VERY DIGITAL CHANGING NOT VERY DIGITAL DIGITAL TRANSFORMATION USP-03 Successful digital transformation comes not from implementing new technologies but from transforming your organisation to take advantage of the possibilities that new technologies provide.
    [Show full text]
  • Lightweight Django USING REST, WEBSOCKETS & BACKBONE
    Lightweight Django USING REST, WEBSOCKETS & BACKBONE Julia Elman & Mark Lavin Lightweight Django LightweightDjango How can you take advantage of the Django framework to integrate complex “A great resource for client-side interactions and real-time features into your web applications? going beyond traditional Through a series of rapid application development projects, this hands-on book shows experienced Django developers how to include REST APIs, apps and learning how WebSockets, and client-side MVC frameworks such as Backbone.js into Django can power the new or existing projects. backend of single-page Learn how to make the most of Django’s decoupled design by choosing web applications.” the components you need to build the lightweight applications you want. —Aymeric Augustin Once you finish this book, you’ll know how to build single-page applications Django core developer, CTO, oscaro.com that respond to interactions in real time. If you’re familiar with Python and JavaScript, you’re good to go. “Such a good idea—I think this will lower the barrier ■ Learn a lightweight approach for starting a new Django project of entry for developers ■ Break reusable applications into smaller services that even more… the more communicate with one another I read, the more excited ■ Create a static, rapid prototyping site as a scaffold for websites and applications I am!” —Barbara Shaurette ■ Build a REST API with django-rest-framework Python Developer, Cox Media Group ■ Learn how to use Django with the Backbone.js MVC framework ■ Create a single-page web application on top of your REST API Lightweight ■ Integrate real-time features with WebSockets and the Tornado networking library ■ Use the book’s code-driven examples in your own projects Julia Elman, a frontend developer and tech education advocate, started learning Django in 2008 while working at World Online.
    [Show full text]
  • Angularjs Native Rich Clients with Eclipse RCP WEB APPS UNTIL NOW
    Die Grundlagen Philipp Burgmer theCodeCampus / Weigle Wilczek GmbH ABOUT ME Philipp Burgmer Software Engineer / Consultant / Trainer Focus: Frontend, Web Technologies WeigleWilczek GmbH [email protected] ABOUT US WeigleWilczek / W11k Software Design, Development & Maintenance Consulting, Trainings & Project Kickoff Web Applications with AngularJS Native Rich Clients with Eclipse RCP WEB APPS UNTIL NOW JSF UI on Server A lot HTTP Requests Just to Update UI Hard to Use JS Libs / Scatters UI Logic GWT UI in Java / XML Hard to Use JS Libs / Scatters UI Logic "Java World" Instead of "Web World" Flex Clean Separation of Front- and Backend Based on Flash, Adobe Discontinues Developement MXML and ActionScript Instead of HTML and JavaScript WEB APPS FROM NOW ON Frontend Runs Completely in the Browser Stateful UI, Stateless Server Server Delivers Static Resources Server Delivers Dynamic Data HTML, CSS and JavaScript as UI Toolkit WHAT IS ANGULARJS? HTML Enhanced for Web Apps angularjs.com Client / Browser JS Framework Rich Browser Applications Brings Core Frontend Concepts and Features to the Browser Extends HTML Instead of Abstracting or Wrapping It angularjs.org Current Versions: 1.2.23 and 1.3.0-beta.19 License: MIT CORE CONCEPTS Model View Controller Modules Pattern Dependency Injection Two Way Data-Binding Services Directives Filter Goals Separation of Concerns Make It Easier to Write Clean Code Make It Easier to Write Testable Code Offer Concepts and Be Open for Extensions DEMO Two Way Data-Binding [ JS Bin | localhost ] Add Logic with a Controller
    [Show full text]
  • Learning Javascript Design Patterns
    Learning JavaScript Design Patterns Addy Osmani Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo Learning JavaScript Design Patterns by Addy Osmani Copyright © 2012 Addy Osmani. All rights reserved. Revision History for the : 2012-05-01 Early release revision 1 See http://oreilly.com/catalog/errata.csp?isbn=9781449331818 for release details. ISBN: 978-1-449-33181-8 1335906805 Table of Contents Preface ..................................................................... ix 1. Introduction ........................................................... 1 2. What is a Pattern? ...................................................... 3 We already use patterns everyday 4 3. 'Pattern'-ity Testing, Proto-Patterns & The Rule Of Three ...................... 7 4. The Structure Of A Design Pattern ......................................... 9 5. Writing Design Patterns ................................................. 11 6. Anti-Patterns ......................................................... 13 7. Categories Of Design Pattern ............................................ 15 Creational Design Patterns 15 Structural Design Patterns 16 Behavioral Design Patterns 16 8. Design Pattern Categorization ........................................... 17 A brief note on classes 17 9. JavaScript Design Patterns .............................................. 21 The Creational Pattern 22 The Constructor Pattern 23 Basic Constructors 23 Constructors With Prototypes 24 The Singleton Pattern 24 The Module Pattern 27 iii Modules 27 Object Literals 27 The Module Pattern
    [Show full text]
  • Web Age Webinar Series
    Welcome! Check that you can "raise your hand" next to your name on the left When we start I'll ask everyone to raise their hand to verify you can hear me To ask a question during the presentation type it in the “Questions” section and raise your hand to help me notice it ©WebAgeSolutions.com 1 CLASH OF THE JAVASCRIPT TITANS: BACKBONE.JS AND ANGULAR.JS A comparison and contrast between Backbone.js and Angular.js ©WebAgeSolutions.com 2 Introduction Eric W. Greene Web Application Developer [email protected] Web Age Solutions Web Age Solutions provides mentoring services and skills training to companies navigating the world of online business. ©WebAgeSolutions.com 3 Overview of Talk The Problem to be Solved Framework or Library? Differences and Benefits of Each The Big Issue: Two-Way Data Binding Browserify and Node.js Conclusion ©WebAgeSolutions.com 4 The Problem to be Solved What problem do JavaScript solutions like Backbone.js and Angular.js solve? Single Page Applications (SPAs) SPAs need the following • Structure to manage UI and application data • Method for accessing network resources such as REST services • Routing System for going from page to page without reloading the web page from the server • Template System for constructing views ©WebAgeSolutions.com 5 Framework or Library? What is the difference between a framework and library? Why is Backbone.js a library? Why is Angular.js a framework? Which are the benefits and costs of using frameworks and libraries? ©WebAgeSolutions.com 6 The Big Issue: Two-Way Data Binding Two-Way Data
    [Show full text]
  • Angularjs in 60 Minutes
    AngularJS in 60 Minutes by Dan Wahlin Transcription and Arrangement by Ian Smith © 2013, 2014 Wahlin Consulting 1 | P a g e Video Length: 01:10:49 So you’ve heard about AngularJS, but you’re not exactly sure how to get started with it? This video’s for you. AngularJS Fundamentals in 60-ish Minutes is going to go through all of the key fundamentals you need to know about the AngularJS SPA framework. Video: http://www.youtube.com/watch?v=i9MHigUZKEM Disclaimer: The original content is copyright of the original “free to download” video published as indicated by the link to the original source material above. Any mistakes, opinions or views in that content are those of the original presenter. Any mistakes in the actual transcription of that content are the fault of the transcriber. © 2013, 2014 Wahlin Consulting 2 | P a g e Contents AngularJS in 60 Minutes .......................................................................................................................... 1 Introduction ............................................................................................................................................ 4 Module 1: Getting Started .................................................................................................................... 15 Single Page Application (SPA) ........................................................................................................... 16 The Challenge With SPAs .................................................................................................................
    [Show full text]
  • Angularjs Tutorial
    AngularJS Tutorial Sunnie Chung http://www.w3schools.com/angular/angular_intro.asp http://www.w3schools.com/angular/angular_modules.asp http://www.w3schools.com/angular/angular_http.asp http://www.w3schools.com/angular/angular_sql.asp AngularJS is a JavaScript framework . It can be added to an HTML page with a <script> tag. AngularJS extends HTML attributes with Directives , and binds data to HTML with Expressions . AngularJS is a JavaScript Framework AngularJS is a JavaScript framework. It is a library written in JavaScript. AngularJS is distributed as a JavaScript file, and can be added to a web page with a script tag: <script src ="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js">< / script > AngularJS Extends HTML AngularJS extends HTML with ng-directives . The ng-app directive defines an AngularJS application. The ng-model directive binds the value of HTML controls (input, select, textarea) to application data. The ng-bind directive binds application data to the HTML view. AngularJS Example <!DOCTYPE html > <html > <script src ="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js">< / script > <body > <div ng-app =""> <p>Name: <input type ="text" ng-model ="name">< /p > <p ng-bind ="name">< /p > </div > </body > </html > Example explained: AngularJS starts automatically when the web page has loaded. The ng-app directive tells AngularJS that the <div> element is the "owner" of an AngularJS application . The ng-model directive binds the value of the input field to the application variable name . The ng-bind directive binds the innerHTML of the <p> element to the application variable name .
    [Show full text]
  • Notes - Javascript - Commonjs Modules
    Notes - JavaScript - CommonJS Modules Dr Nick Hayward A collection of notes &c. on plain JavaScript modules, in particular usage of CommonJS modules and Node.js. Contents Intro General usage Folders as modules package.json index.js require pattern Dynamic require for modules Module design Intro CommonJS is a module library and pattern popularised by Node.js. It is still in regular use for modern apps, both Node.js and client-side based apps. For client-side, we may use build tools, such as WebPack and Browserify, to bundle module dependencies for online usage in a browser-based environment. General usage In CommonJS, every file is a module. Each module has an implicit local scope, and the global scope needs to be accessed explicitly. The module code is wrapped in a function by the loading call, which provides this local scope. CommonJS modules may export a public interface for consumption in apps - dependencies are resolved using require function calls. require function calls are synchronous, returning the exposed interface for the required module. By default, functions in a module will be local to that module. We may then choose the functions, properties &c. to export in the public API for the module. e.g. // CONSTRUCTOR - create basic keyboard object for testing... function Keyboard(keyDetails) { ({ total: this.total, x: this.x, y: this.y, white: this.white, black: this.black } = keyDetails ); } module.exports = Keyboard; The function Keyboard is now available to other files (modules) by requiring the file, const keyboard = require('./basic1'); Local, relative modules may use the standard Unix path to define file access for the module relative to the application, e.g.
    [Show full text]
  • Comparative Analysis of Angularjs and Reactjs
    International Journal of Latest Trends in Engineering and Technology Vol.(7)Issue(4), pp.225-227 DOI: http://dx.doi.org/10.21172/1.74.030 e-ISSN:2278-621X COMPARATIVE ANALYSIS OF ANGULARJS AND REACTJS Anurag Kumar1 and Ravi Kumar Singh2 Abstract- We live in a different era of web, we need better ways to quickly develop and deploy interactive web applications and that is where JavaScript frameworks come to the picture. JavaScript frameworks are the backbone of single page web applications development and provide superpowers to plain HTML and JavaScript. AngularJS and React.js are two most used javascript frameworks in current web development. Both frameworks are used to build interactive single page application. This research paper helps in understanding AngularJS and ReactJS. Keywords – Javascript, AngularJS, ReactJS, Two-way binding, Virtual DOM I. INTRODUCTION JavaScript is a client side scripting language which is used for providing dynamic attributes and features to the HTML webpages .JavaScript was developed for supporting the browser with feature of asynchronous communication, controlling the browser and for user interaction with the web page components. An HTML page is just a static page. JavaScript can make the website more interactive and user- friendliness, JavaScript helps easy navigation of the website and to provides interactivity. Based on JavaScript there are many frameworks are developed and also added many new features for server side scripting. JavaScript has emerged so much in web industry and if you look at the current websites there are no web technologies that are not using JavaScript. JavaScript is a dynamic scripting language, it instruct the browser to make changes to page elements after loading a page.
    [Show full text]
  • Mobile HTML5: Implementing a Responsive Cross-Platform Application
    Aalto University School of Science Degree Programme of Computer Science and Engineering Kimmo Puputti Mobile HTML5: Implementing a Responsive Cross-Platform Application Master's Thesis Kirkkonummi, May 15, 2012 Supervisor: Professor Petri Vuorimaa, Aalto University Instructor: Risto Sarvas D.Sc.(Tech.) Aalto University School of Science ABSTRACT OF Degree Programme of Computer Science and Engineering MASTER'S THESIS Author: Kimmo Puputti Title: Mobile HTML5: Implementing a Responsive Cross-Platform Application Date: May 15, 2012 Pages: ix + 70 Professorship: Media Technology Code: T-111 Supervisor: Professor Petri Vuorimaa Instructor: Risto Sarvas D.Sc.(Tech.) In twenty years, the Web has become an integral part of our everyday lives. The rapid growth of the smartphone market has brought the Web from our home desks to anywhere we are, and enabled us to access this vast source of information at any time. However, the proliferation of mobile devices and platforms has raised new prob- lems for application development. The growing amount of different platforms and their distinct native technologies make it hard to develop applications that can be accessed with all these devices. The only combining factor in all these platforms is the browser, and it is be- coming the universal application platform. We cannot afford anymore to build applications for the silos and walled gardens of single platforms, and building cross-platform applications is essential in the modern mobile market. In this work, I introduce the HTML5 (HyperText Markup Language version 5) specification as well as several related specifications or specification drafts for modern web development. I also present several tools and libraries for mobile web development.
    [Show full text]
  • Partitioning Web Applications Between the Server and the Client
    Journal of Web Engineering, Vol. 9, No. 3 (2010) 207–226 c Rinton Press PARTITIONING WEB APPLICATIONS BETWEEN THE SERVER AND THE CLIENT JANNE KUUSKERI Department of Software Systems, Tampere University of Technology, P.O. Box 553 Tampere, 33103, Finland janne.kuuskeri@tut.fi TOMMI MIKKONEN Department of Software Systems, Tampere University of Technology, P.O. Box 553 Tampere, 33103, Finland tommi.mikkonen@tut.fi Received June 21, 2009 Revised January 14, 2010 Web 2.0 and rich Internet application technologies are offering more and more sophis- ticated means for building compelling applications. At the same time the development of applications is becoming increasingly complex. While web applications are commonly relying on server side processing, we aim at implementing a “fat client” and running applications mostly on the client. With this in mind we derive a set of guidelines on how the applications should be partitioned between the server and the client. By following these directives and leaning on the traditional principles of good software development, we address the issues of complexity that have lately emerged in web development. Keywords: Web Application, AJAX, JavaScript, Comet 1 Introduction Web application development is in the middle of a paradigm shift. Users are getting used to web applications with dynamic content and enhanced user experience. User interfaces are no longer updated the whole screen at a time, and servers are able to feed data to them spontaneously. From the users’ point of view, web applications are thus becoming more and more like traditional desktop applications. While the user interfaces of web applications are becoming more usable, the underlying standards and protocols are not evolving at the same pace.
    [Show full text]
  • Krivenko Eugene
    Krivenko Eugene city: Kiev E-mail: [email protected] CONTACT Website: https://www.linkedin.com/in/eugen- krivenko Phone: +380632141113 OBJECTIVE I'm a Front-end developer seeking an opportunity to participate in an interesting project and to become a part of a great team. Desire to work with React, NodeJS etc. Love for minimalizm, optimisation, clean code, structuring, best practices. PROFESSIONAL SKILLS Javascript, Typescript React, AngularJS, Angular2 Redux, RxJS Webpack, Gulp WebSockets (socket.io, signalR, sip.js) Node.JS (Hapi, Express) Bootstrap, HTML, CSS, SCSS, SASS, Angular Material D3.js SEO understanding WORK EXPERIENCE Maxitech 04.2019 — 03.2021 Frontend developer Responsibilities: Implement new features and improve existing ones Improve Redux store structure Improve components architecture Code review Bug fixing Interview new candidates Mentoring Environment: React, Redux, Redux Toolkit, RxJS, signalR, socket.io, Express, Typescript, Git, PostCSS, Jest, Webpack Krivenko Eugene 1 MWDN 09.2017 — 03.2019 Frontend developer Responsibilities: Implement new features and improve existing ones Maintain existing projects AngularJs/React Migrate project from AngularJS to React Refactoring Code review Bug fixing Interview new candidates Environment: React, AngularJS, Git, SASS, CSSinJS, Redux, Webpack, MobX, ES6, Typescript, Jenkins, Hapi.js, MongoDB, D3, Jira Evoplay 09.2016 — 08.2017 Frontend developer Lead Responsibilities: Create new project from scratch Implement new features and improve existing ones Participate in project
    [Show full text]