Comparison of Javascript Bundlers

Total Page:16

File Type:pdf, Size:1020Kb

Comparison of Javascript Bundlers Sonja Laurila Comparison of JavaScript Bundlers Metropolia University of Applied Sciences Bachelor of Engineering ICT Engineer Bachelor’s Thesis 06.10.2020 Abstract Author Sonja Laurila Title Comparison of JavaScript Bundlers Number of Pages 36 pages + 6 appendices Date 06.10.2020 Degree Bachelor of Engineering Degree Programme ICT Engineer Professional Major Software Engineering Instructors Juha Kämäri, Lecturer The objective of this thesis was to provide a thorough overview of the ideology of bundlers and then create a comparison of four different bundlers selected by their popularity. The study first focused on building a solid understanding of the history of modular JavaScript and how the need for a tool such as bundler arose, how the bundling process goes and what kind of optimization steps the bundling process includes. Next, four different bundlers were configured to bundle a simple React web application. After that a set of test runs was performed to get comparable results of the bundling speed and the resulting bundle size. The bundlers were evaluated from both technical and usability perspectives. As a result, a good understanding of the bundling process and the different bundlers and their characteristics was gained to be able to make better informed decisions when selecting a bundler for a certain use case. As a summary, Parcel would be great for beginners and getting the development environment up and running quickly. Parcel also offers extremely quick rebuild times due to caching. Webpack offers the best flexibility, quick rebuild times and good chunk splitting options. Rollup will most probably result in the smallest bundle size due to its advanced tree shaking capabilities. As to Browserify, it would probably be good to keep it on the server-side JavaScript, if the user is not already familiar with it. Keywords Bundler, bundling, Webpack, Browserify, Rollup, Parcel Abstract Tekijä Sonja Laurila Otsikko JavaScript bundlerien vertailu Sivumäärä 36 sivua + 6 liitettä Aika 06.10.2020 Tutkinto Insinööri21.8.2017 (AMK) Tutkinto-ohjelma Tieto- ja viestintätekniikka Ammatillinen pääaine Ohjelmistotuotanto Ohjaajat Juha Kämäri, Lehtori Työn tavoitteena oli luoda kattava kokonaiskuva koodin koontityökalujen (bundlerien) ideologiasta ja laatia vertailu, jossa vertaillaan neljää suosituinta koontityökalua. Opinnäytetyö keskittyy ensin rakentamaan syvällisen ymmärryksen modulaarisen JavaScriptin historiasta ja siitä, kuinka tarve koontityökalun kaltaiselle työkalulle heräsi. Mitä koontiprosessin aikana tapahtuu ja minkälaisia optimointivaiheita koontiprosessi sisältää. Konseptin ymmärtämisen jälkeen neljä eri koontityökalua konfiguroitiin niin, että niillä voitiin koota yksinkertainen React-sovellus. Konfiguroinnin jälkeen ajettiin testiajoja, jotta saatiin vertailukelpoisia tuloksia koontityökalujen nopeudesta ja tuloksena saadun kootun tiedoston koosta. Koontityökaluja arvioitiin sekä teknisestä, että käytettävyyden näkökulmasta. Lopputuloksena saatiin hyvä käsitys koontiprosessista ja eri koontityökaluista sekä niiden eroista, jotta voidaan tulevaisuudessa tehdä parempia päätöksiä valittaessa koontityökalua tiettyyn käyttötapaukseen. Yhteenvetona Parcel olisi hyvä aloittelijoille ja kehitysympäristön käynnistämiseen nopeasti sekä sen välimuistin käytön vuoksi tarvittaessa erittäin nopeita uudelleenkoontiaikoja. Webpack on kaikista joustavin ja tarjoaa myös nopeat koontiajat. Rollup todennäköisesti saavuttaa pienimmän kootun koodin koon, koska sillä on erinomaiset ”puunravistus”-kyvyt (tree shaking). Browserify on ehkä hyvä pitää serveripuolen JavaScriptissä, ellei käyttäjä sitten ole jo entuudestaan perehtynyt siihen. Avainsanat Bundler, bundlaus, Webpack, Browserify, Rollup, Parcel, koodin koontityökalu Contents List of Abbreviations 1 Introduction 1 2 JavaScript Bundling 2 2.1 Modules and Closures 2 2.1.1 Closure 3 2.1.2 Global Module Object with IIFE 3 2.1.3 CommonJS 4 2.1.4 Asynchronous Module Definition (AMD) 4 2.1.5 Universal Module Definition (UMD) 5 2.1.6 ES6 modules 5 2.2 Module Loaders 6 2.3 Bundlers 7 2.3.1 Bundling Process 8 2.3.2 Optimizing Bundles 9 3 Different Bundlers 12 3.1 Webpack 13 3.2 Browserify 14 3.3 Rollup 15 3.4 Parcel 15 4 Creating Simple Web Application for Comparison Basis 16 4.1 Creating Package.json File 16 4.2 Creating Simple React Application 17 5 Configuring and Bundling Projects with Different Bundlers 19 5.1 Webpack 19 5.2 Browserify 22 5.3 Rollup 24 5.4 Parcel 27 6 Bundler Comparison 29 7 Conclusions 35 References 36 Appendices Appendix 1. Small React application’s source code Appendix 2. Package.json and webpack.config.js when bundling with Webpack Appendix 3. Package.json when bundling with Browserify Appendix 4. Package.json and rollup.config.js when bundling with Rollup Appendix 5. Package.json when bundling with Parcel Appendix 6. Explanations for bundler features in Table 2 List of Abbreviations CLI Command Line Interface. Interface which one can use to run a software from the command line. DOM Document Object Model. HTML or XML tree structure interface. ES6 ECMAScript 6. Scripting-language specification standardized by Ecma International in ECMA-262. HTML Hypertext Markup Language. The standard mark-up language for files designed to be displayed in a browser. IIFE Immediately Invoked Function Expression. JavaScript function that runs immediately after it has been defined. JSX JavaScript XML. Syntax extension for JavaScript, used in React and resembling XML. npm Node Package Manager. Software registry and command line interface for node packages to share and borrow open-source node packages to and from other developers. 1 1 Introduction To run JavaScript in the browser, HTML files contain script tags, which contain JavaScript. In a case of larger applications, one typically wants to split the code into multiple JavaScript files, also known as modules, which would then lead into multiple script tags in the HTML file. The struggle here is to have the files in the correct order, because otherwise, the code does not run correctly and may lead into bugs and application crashing. Also, one should make sure that in the multiple files, the global variables and function names do not overlap each other, since if they are global in the file, they would be global also on the application level, which could cause overriding and mal-functioning. Bundlers can be used to automate handling the imports and taking care of how the modules work together. This thesis focuses on explaining the bundling need and process and comparing the features of the four most popular bundlers: Webpack, Browserify, Rollup and Parcel. During the thesis project, a small React frontend application was bundled with all four bundlers to get hands-on experience on what was it like to configure and use the different bundlers and what kind of features and characteristics they have. Currently there is widely spread inertia for using Webpack, which might lead into making misinformed decisions on which bundling tool to use and furthermore to unoptimized production bundles. The goal of the thesis is to find and understand the key differences between different bundlers and which bundler fits best in a certain use case and to learn how to configure them. The topic was chosen due to the author’s personal interest and identification of personal lack of knowledge and understanding. 2 2 JavaScript Bundling To deeply understand the need behind bundling, one needs to understand the need for JavaScript modules and the expansion of web development from little inline scripts on a HTML file into the modern web applications that are developed today. 2.1 Modules and Closures JavaScript works on a HTML file, inside a script tag. One can start by writing inline scripts between the tags, but when the application grows, the script tag expands and the code is not reusable, but the coder shall copy and paste it to be able to use it on another page of the application. It is necessary to move it into its own file, to be able to reuse it on another page. The file then expands, and it is needed to divide into multiple files. An example of a typical old-school HTML with an inline script tag is shown below. Important parts have been highlighted in green. <!DOCTYPE html> <html lang="en"> <head> <title>Application title</title> </head> <body> <button id="btn" onclick="clickFunction()">Click me!</button> <script type="text/javascript"> function clickFunction(){ alert('Hello you!') } </script> </body> </html> It is common for a coder to want to add external node packages later to make coding easier and then the situation with the script tags can already be quite complicated, because the script tags must be in the correct order in the HTML file. Also, the global namespace gets polluted by all the globally defined functions and variables. The maintainability of the code is on a poor level and the coder must do duplicate work when implementing new changes. An example of a HTML file with external libraries can be seen below. In this case there were scripts for adding React and ReactDOM and a button component, which can be assumed to internally use React and ReactDOM. Important parts have been highlighted green. 3 <!DOCTYPE html> <html lang="en"> <head> <title>Application title</title> </head> <body> <div id="btn"></div> <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script> <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script> <script src="button.js"></script> </body> </html> As
Recommended publications
  • Tests Deploys Uppy Is a Sleek, Modular Javascript File Uploader
    Uppy npm v1.27.0 Tests Tests passing Companion passing End-to-end tests failing Deploys CDN passing Companion Deploy failing Deploy uppy.io passing Uppy is a sleek, modular JavaScript file uploader that integrates seamlessly with any application. It’s fast, easy to use and lets you worry about more important problems than building a file uploader. Fetch files from local disk, remote URLs, Google Drive, Dropbox, Box, Instagram or snap and record selfies with a camera Preview and edit metadata with a nice interface Upload to the final destination, optionally process/encode Read the docs | Try Uppy Uppy is being developed by the folks at Transloadit, a versatile file encoding service. Example Code used in the above example: const Uppy = require('@uppy/core') const Dashboard = require('@uppy/dashboard') const GoogleDrive = require('@uppy/google-drive') const Instagram = require('@uppy/instagram') const Webcam = require('@uppy/webcam') const Tus = require('@uppy/tus') const uppy = new Uppy({ autoProceed: false }) .use(Dashboard, { trigger: '#select-files' }) .use(GoogleDrive, { target: Dashboard, companionUrl: 'https://companion.uppy.io .use(Instagram, { target: Dashboard, companionUrl: 'https://companion.uppy.io' .use(Webcam, { target: Dashboard }) .use(Tus, { endpoint: 'https://tusd.tusdemo.net/files/' }) .on('complete', (result) => { console.log('Upload result:', result) }) Try it online or read the docs for more details on how to use Uppy and its plugins. Features Lightweight, modular plugin-based architecture, easy on dependencies :zap:
    [Show full text]
  • Node Js Require All Files in Directory
    Node Js Require All Files In Directory Is Meryl undiscording or dormant when utter some scabbard transistorizing festively? Sometimes microbial Jess upraise her Northumbrians dynamically, but vitreous Rudolfo acidified unmercifully or overweens ethnologically. Rickie often pollute unconscionably when helmless Torry depredates wishfully and bluffs her exostosis. Cjs libraries like i pasted into modules in this wrapper for files in node all directory in the biggest challenge for This js processing units of all the require all files of an http servers, shahbaz badisha and mobile app? Mocha runs in the browser. It locally in the node js modules do its ecosystem is a post message to process for weekdays and grabbing them all files in node js files and dev bootcamps focus on. Importing a module in Node. The version number of Cypress. Or as some reason say accessing the file is relatively the simplest of all FS-related processes. Let me on unix that directory in here is required into the require some files with the exports object, you were implemented a js on. How to confirm your package or exists, so for loop above logging module once after the module name structure to work with ones that. The storefront for example using promise framework, or checkout with. This array of that are immediately detect errors back to maintain, and screen recorder web development also learn to. Files in node? Prepping for older versions manually when your project management and js file. Node js modules would their fake implementations removed mocha allows you. Follow their respective harmony flag, node js require all files in directory all code should be your directory will know which pieces of awareness, require some advice to.
    [Show full text]
  • Browserify Illegal Import Declaration
    Browserify Illegal Import Declaration Is Christoph elenctic or short-spoken after dicephalous Sullivan quarries so dexterously? Lazarus often disfavor silkily when Anglo-Catholic Durant outwind natheless and pannings her major-general. Metacentric and shifting Garwin never chiack bearably when Chandler dole his Quinton. To shell archive format was to ensure or were not to the subject to get through an underline The dashboard service workers get a pull request data, and load a monochrome display when used by typing on linux, we can be. This powder it possible you describe languages that extend definitions of other ones. These will apply to ensure that we commit partially causes a signal to search and browserify illegal import declaration, without system crash reporter that props are now. Mouse moves in our header of its own version of members, a directory being cut off, we commit and browserify illegal import declaration broken in. The browserify command log has been received and browserify illegal import declaration regression where preprocessor for import statements for always on par with tons of a copy of regexp pattern. Emitted when an authenticating proxy is asking for user credentials. Additionally it illegal activity that are browserify is turned on document and browserify illegal import declaration. English docs internalization implementation detail are important regression with query before signing is limiting its return a result in local cache, upgrade and import a format. Slides and login is uploaded id and browserify illegal import declaration, someone has been improved accessibility tools such as deprecated numeric property is a dedicated module. Emitted when the window gains focus.
    [Show full text]
  • Open Source Licenses Visionize Lab Suite the Software of Visionize Lab Suite Contains Open Source Licenses Included in This Document
    Open Source Licenses VisioNize Lab Suite The software of VisioNize Lab Suite contains open source licenses included in this document. Package name License Website/Repository Publisher/Author @angular-devkit/[email protected] MIT https://github.com/angular/angular-cli Angular Authors @angular-devkit/[email protected] MIT https://github.com/angular/angular-cli Angular Authors @angular-devkit/build-optimiz- MIT https://github.com/angular/angular-cli Angular Authors [email protected] @angular-devkit/build-web- MIT https://github.com/angular/angular-cli Angular Authors [email protected] @angular-devkit/[email protected] MIT https://github.com/angular/angular-cli Angular Authors @angular-devkit/[email protected] MIT https://github.com/angular/angular-cli Angular Authors @angular/[email protected] MIT https://github.com/angular/angular angular @angular/[email protected] MIT https://github.com/angular/angular-cli Angular Authors @angular/[email protected] MIT https://github.com/angular/angular angular @angular/[email protected] MIT https://github.com/angular/angular @angular/[email protected] MIT https://github.com/angular/angular angular @angular/[email protected] MIT https://github.com/angular/angular angular @angular/[email protected] MIT https://github.com/angular/angular angular @angular/[email protected] MIT https://github.com/angular/angular angular @angular/platform-browser-dynam- MIT https://github.com/angular/angular angular [email protected] @angular/[email protected] MIT https://github.com/angular/angular angular @angular/[email protected] MIT https://github.com/angular/angular angular
    [Show full text]
  • Thaddeus Wakefield Batt Engineering Leader
    Thaddeus Wakefield Batt Engineering Leader Internet Technologist with deep experience in creating transformative digital solutions for companies from Personal Info startup to enterprise. DevOps and cloud services expert. Continuous integration, automation, and agile professional at web scale. Practical blockchain development, operations, and implementation. Creative and Address calm problem solver and leader. 7899 E. 25th PL Denver, Colorado 80238 Experience Phone 303.358.1005 11.2017 - Founder/CTO present Blockchain Industries Llc E-mail Denver, CO [email protected] WeChat / Keybase Development and Operations consultancy to blockchain industry projects. kantmakm • Architecture design and implementation of cloud infrastructure and deploy process for LinkedIn full-node Ethereum-like and Bitcoin-like blockchain assets for dedicated block explorers in linkedin.com/in/thaddeusbatt/ support of mobile and desktop multi-currency wallet applications. • EC2, ECS, EBS, RDS, Docker, Github, Ansible, Azure DevOps, Jenkins integration pipelines GitHub • Globally distributed agile development teams github.com/kantmakm/ • Range of established relationships with blockchain infrastructure providers including AWS, ENS Radar, IBM/RedHat and cross-vertical blockchain product development organizations like thaddeusbatt.eth BurstIQ, Ownum, TQ Tezos, Dapix, and Opolis 04.2019 - Blockchain Solutions Architect Skills present Colorado Governor's Office of Information Technology Atlassian Suite (Jira, Bitbucket, Denver, CO Confluence, Bamboo, Trello.)
    [Show full text]
  • Patterns of Modern Web Applications with Javascript
    Patterns of Modern Web Applications with Javascript Ken Chau This book is for sale at http://leanpub.com/patterns-of-modern-web-applications This version was published on 2015-07-10 This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do. ©2015 Ken Chau Contents Introduction ............................................ 1 Who This Book is For ...................................... 1 Overview ............................................ 1 Acknowledgements ....................................... 2 Help and Support ........................................ 2 Part 1. Javascript Environments and Modularity .................. 3 Chapter One: Javascript Runtime Environments ....................... 4 Versions of Javascript ...................................... 4 Chapter Two: Patterns of Modularity .............................. 11 Introduction Who This Book is For Web development technology has shifted from server to client. This allowed for highly interactive applications to be developed in the style of Single Page Applications (SPA). Traditional server- rendered pages are becoming more and more extinct as Web browsers and hardware are getting faster and faster. As developers develop these complex applications, new patterns are emerging that would solve some problems presented by the “traditional” SPA’s. I have written this book for developers like me. I’m assuming that you come from a background of Web development. This should probably not be the book you use to start learning Web development. I hope to share lessons learned from building large and complex Web applications. This book captures the common design and architecture pattern found in modern Web development today. In this book, I am focusing on the front-end Web development stack written in Javascript.
    [Show full text]
  • Senior Full Stack Web Developer Email: [email protected] · Portfolio: Github: ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ Last Updated: February 2021 ​
    Ryan Weiss Senior Full Stack Web Developer Email: [email protected] · Portfolio: www.ryanweiss.net GitHub: www.github.com/rw3iss ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ Last Updated: February 2021 ​ # EDUCATION Rutgers University (2004 - 2008) ​ ​ B.S. in Computer Science, Minor in Music # FREELANCE EXPERIENCE - (December 2011 to present) ​ UrbanDaddy DrinkList - https://drinklist.us - December 2020 - Refactored and created a new frontend and backend for an ​ ​ ​ online drink creation/exploration website. Backend is in Django/Python, and the frontend is custom JS (with some jQuery), and responsive. Uses memcached as an intermediary database layer, updating data from a Google spreadsheet! Opus Logica - March 2020 - Present - Retainer of freelance work for a few projects. Helped maintain OpusWorldWind ​ project, an extension of 3D WebGL methods for the Nasa WorldWind library, for working with 3D objects on a map - https://github.com/opuslogica/OpusWorldWind. Also worked on a Ruby on Rails admin application for an iOS/Ionic app, to ​ manage the data and reporting for the application that is helping Crohn’s patients work with IoT data from devices. eSupportHealth - June 2020 - September 2020 - https://appdev.esupporthealth.com/ (demo) - built entire backend ​ ​ ​ (PHP/Wordpress), and architected and built frontend infrastructure (responsive React SPA) for a health services website which coordinates Zoom meetings between coaches and members, and allows for scheduling and planning by users. Coaches manage users and groups from the Wordpress backend, and users can manage their meetings on the frontend application. Utilizes Stripe subscriptions as payment methods. Quuie - (in progress) - January 2020 - April 2020 - Mobile-first, single page application built on Angular 8, with a Java ​ backend, for clients to manage building simple webpages with a drag and drop UI.
    [Show full text]
  • Приложения А Es2018 И Es2019
    Приложения А ES2018 и ES2019 Начиная с ECMAScript 2015, комитет TC-39 начал выпускать новую спецификацию ECMA каждый год. Это позволяет собрать все отдельные предложения, которые на- ходятся на достаточно продвинутой стадии, и упаковать их в единый пакет. Однако эта упаковка имеет ограниченное значение, поскольку производители браузеров, как правило, принимают предложения по частям. Когда предложение достигнет стадии 4, его поведение не изменится, только, скорее всего, оно будет включено в следующую версию ECMAScript и браузеры начнут применять функции пред- ложения по своему усмотрению. Предложение ECMAScript 2018 было завершено в январе 2018 года и содержит улучшения для асинхронной итерации, операторов остатка и распространения, регулярных выражений и промисов. TC-39 поддерживает GitHub-репозиторий (https://github.com/tc39/ecma262), который можно использовать для отслеживания состояния различных предложений: TODO FIX ASYNC ITERATION TODO ES2019 http://exploringjs.com/es2018-es2019/toc.html ПРИМЕЧАНИЕ Поскольку функции, описанные в этой главе, новые, они будут поддерживаться браузером в ограниченном виде (если вообще будут). Обрати- тесь к https://caniuse.com/, чтобы определить, поддерживает ли версия браузера определенную функцию. АСИНХРОННАЯ ИТЕРАЦИЯ Асинхронное выполнение и протокол итератора — две чрезвычайно распространенные темы в новых функциях ECMAScript последних выпусков. Асинхронное выполнение включает в себя высвобождение контроля над потоком выполнения, чтобы позволить Асинхронная итерация 3 медленным операциям завершаться до восстановления управления, а протокол ите- ратора включает определение канонического порядка для произвольных объектов. Асинхронная итерация — это просто логическое усвоение этих двух понятий. Синхронный итератор предоставляет пару {value, done} каждый раз при вызове next(). Конечно, это требует, чтобы вычисления и извлечения ресурсов, необходимые для определения содержимого этой пары, были завершены к моменту выхода из вызова next(), иначе эти значения не будут определены.
    [Show full text]
  • VW Golf & Jetta Service and Repair Manual
    VW Golf & Jetta Service and Repair Manual I M Coomber and Christopher Rogers Models covered (1081 - 344 - 1AA11) VW Golf & Jetta Mk 2 models with petrol engines, including fuel injection, catalytic converter, Formel E, 16-valve and special/limited edition models 1043 cc, 1272 cc, 1595 cc & 1781 cc Covers mechanical features of Van. Does not cover Convertible, Rallye, Caddy, diesel engine, 4 -wheel drive, Mk 1 models or new Golf range introduced in February 1992 Printed by J H Haynes & Co. Ltd, Sparkford, Nr Yeovil, Somerset ABCDE FGHIJ BA22 7JJ, England KLMNO PQRST © Haynes Publishing 1997 1 2 3 Haynes Publishing Sparkford Nr Yeovil A book in the Haynes Service and Repair Manual Series Somerset BA22 7JJ England All rights reserved. No part of this book may be reproduced or Haynes North America, Inc transmitted in any form or by any means, electronic or 861 Lawrence Drive mechanical, including photocopying, recording or by any Newbury Park information storage or retrieval system, without permission in California 91320 USA writing from the copyright holder. Editions Haynes S.A. ISBN 1 85960 282 7 147/149, rue Saint Honoré, 75001 PARIS, France British Library Cataloguing in Publication Data Haynes Publishing Nordiska AB A catalogue record for this book is available from the British Library Fyrisborgsgatan 5, 754 50 Uppsala, Sverige Contents LIVING WITH YOUR VOLKSWAGEN GOLF OR JETTA Introduction Page 0•4 Safety First! Page 0•5 Roadside Repairs Introduction Page 0•6 If your car won’t start Page 0•6 Jump starting Page 0•7 Wheel changing Page
    [Show full text]
  • Collection Titles
    Direct e-Learning Solutions for Today’s Careers CBT Direct’s IT Pro Collection Available: 7476 Collection Titles Coming Soon: 557 .NET 2.0 for Delphi Programmers Architecture Tivoli OMEGAMON XE for DB2 Performance .NET 3.5 CD Audio Player: Create a CD Audio 3D Computer Graphics: A Mathematical Expert on z/OS Player in .NET 3.5 Using WPF and DirectSound Introduction with OpenGL A Field Guide to Digital Color .NET Development for Java Programmers "3D for the Web: Interactive 3D animation using A First Look at Solution Installation for .NET Development Security Solutions 3ds max; Flash and Director " Autonomic Computing .NET Domain-Driven Design with C#: Problem - 3D Game Programming All in One A Guide to Global E-Commerce: Issues to Design - Solution 3D Graphics ReferencePoint Suite Consider When Selling Internationally Over the .NET E-Commerce Programming 3D Modeling in AutoCAD: Creating and Using Internet .NET Enterprise Development in C#: From 3D Models in AutoCAD 2000; 2000i; 2002; A Guide to MATLAB Object-Oriented Design to Deployment Second Edition Programming .NET Enterprise Development in VB.NET: From 3D Programming for Windows: Three- A Guide to Software Configuration Design to Deployment Dimensional Graphics Programming for the Management .NET for Visual FoxPro Developers Windows Presentation Foundation A Guide to Software Package Evaluation and .NET Framework ReferencePoint Suite 3ds max 5 Bible Selection .NET Framework Solutions: In Search of the 3ds max 5 For Dummies A Guide to the Project Management Body of Lost Win32 API
    [Show full text]
  • MVC -.::Ly Freitas
    MVC Origem: Wikipédia, a enciclopédia livre. Model-view-controller (MVC), em português modelo-vista-controlador, é um padrão de arquitetura de software (não confundir com um design pattern) que separa a representação da informação da interação do usuário com ele. É normalmente usado para o desenvolvimento de interfaces de usuário que divide uma aplicação em três partes interconectadas. Isto é feito para separar representações de informação internas dos modos como a informação é apresentada para e aceita Um diagrama simples exemplificando a relação entre Model, View e pelo usuário.[1][2] O padrão de projeto MVC separa estes componentes maiores Controller. As linhas sólidas indicam possibilitando a reutilização de código e desenvolvimento paralelo de maneira associação direta e as tracejadas eficiente. indicam associação indireta. O modelo (model) consiste nos dados da aplicação, regras de negócios, lógica e funções. Uma visão (view) pode ser qualquer saída de representação dos dados, como uma tabela ou um diagrama. É possível ter várias visões do mesmo dado, como um gráfico de barras para gerenciamento e uma visão tabular para contadores. O controlador (controller) faz a mediação da entrada, convertendo-a em comandos para o modelo ou visão. As ideias centrais por trás do MVC são a reusabilidade de código e separação de conceitos. Tradicionalmente usado para interfaces gráficas de usuário (GUIs), esta arquitetura tornou-se popular para projetar aplicações web e até mesmo para aplicações móveis, para desktop e para outros clientes.[3] Linguagens de programação populares como Java, C#, Ruby, PHP e outras possuem frameworks MVC populares que são atualmente usados no desenvolvimentos de aplicações web.
    [Show full text]
  • Scratching the Surface: Getting Started with PHP Fusebox Table of Contents
    By Mike Britton All materials Copyright © 1997−2002 Developer Shed, Inc. except where otherwise noted. Scratching the Surface: Getting Started with PHP Fusebox Table of Contents Introduction.........................................................................................................................................................1 Step 1: Setting Up the Core Files.......................................................................................................................2 The Core Files:.........................................................................................................................................2 What do the "core files" do?..............................................................................................................................3 A Word on FuseDocs..........................................................................................................................................5 Fusebox Naming Conventions...........................................................................................................................6 Picking Up Where We Left Off: Setting Up the Core Files............................................................................7 Using XFAs..........................................................................................................................................................9 What's an XFA?.......................................................................................................................................9
    [Show full text]