AMD and RequireJS Splitting JavaScript Code into Dependent Modules Software University Technical Trainers SoftUni Team.

Slides:



Advertisements
Similar presentations
JavaScript Basics Course Introduction SoftUni Team Technical Trainers Software University
Advertisements

AngularJS Routing Routes, Route Parameters, Templates, Location, Navigation SoftUni Team Technical Trainers Software University
AngularJS Services Built-in and Custom Services SoftUni Team Technical Trainers Software University
Software University Curriculum, Courses, Exams, Jobs SoftUni Team Technical Trainers Software University
Fundamentals SoftUni Welcome to Software University SoftUni Team Technical Trainers Software University
Advanced JavaScript Course Introduction SoftUni Team Technical Trainers Software University
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC SoftUni Team Technical Trainers Software University
AngularJS Directives Defining Custom Directives SoftUni Team Technical Trainers Software University
Software Testing Lifecycle Exit Criteria Evaluation, Continuous Integration Ivan Yonkov Technical Trainer Software University.
Teamwork and Personal Skills Course Introduction Software University SoftUni Team Technical Trainers.
High-Quality Programming Code Code Correctness, Readability, Maintainability, Testability, Etc. SoftUni Team Technical Trainers Software University
JavaScript Design Patterns Private Fields, Module, Revealing Module, Revealing Prototype, … Software University Technical Trainers SoftUni.
Composer packages Installing and Using Composer, Packagist, Packaging your code Mario Peshev Technical Trainer Software University
Consuming REST Services from C# SoftUni Team Technical Trainers Software University
Start Your Own Blog Angel Georgiev Part-time Trainer angeru.softuni-friends.org Software University The Culture of Knowledge Sharing.
Entity Framework Performance SoftUni Team Technical Trainers Software University
Svetlin Nakov Technical Trainer Software University
Build Processes and Continuous Integration Automating Build Processes Software University Technical Trainers SoftUni Team.
Processing Redis with.NET How to Operate with Redis Databases SoftUni Team Technical Trainers Software University
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC Angel Georgiev Part-time Trainer Software University
Test-Driven Development Learn the "Test First" Approach to Coding SoftUni Team Technical Trainers Software University
JavaScript Basics Course Introduction Svetlin Nakov Technical Trainer Software University
Templating, Routing, lodash Extending functionality using Collections SoftUni Team Technical Trainers Software University
Controllers and Markup Controllers, $scope, Markup, Directives, Expressions, Binding, Filters, Validation SoftUni Team Technical Trainers Software University.
Asynchronous Web Services Writing Asynchronous Web Services SoftUni Team Technical Trainers Software University
Controls, Widgets, Grid…
Jekyll Static Site Generator Template-Based Site Generation Svetlin Nakov Technical Trainer Software University
Forms Overview, Query string, Submitting arrays, PHP & HTML, Input types, Redirecting the user Mario Peshev Technical Trainer Software.
JavaScript Modules and Patterns Private Fields, Module, Revealing Module, Revealing Prototype, … Software University Technical Trainers.
Web Development Tools Tools for Front-End Developers Writing HTML and CSS Code SoftUni Team Technical Trainers Software University
ASP.NET SignalR SoftUni Team Technical Trainers Software University
Responsive Design Design that Adapts to Different Devices SoftUni Team Technical Trainers Software University
Processing JSON in.NET JSON, JSON.NET LINQ-to-JSON and JSON to XML SoftUni Team Technical Trainers Software University
Tables, Rows, Columns, Cells, Header, Footer, Colspan, Rowspan
High-Quality Programming Code Code Correctness, Readability, Maintainability Svetlin Nakov Technical Trainer Software University
CSS Transitions and Animations Animated HTML Elements SoftUni Team Technical Trainers Software University
High-Quality Code: Course Introduction Course Introduction SoftUni Team Technical Trainers Software University
Design Patterns: Structural Design Patterns General and reusable solutions to common problems in software design Software University
Advanced C# Course Introduction SoftUni Team Technical Trainers Software University
Prototype Chain and Inheritance Prototype chain, Inheritance, Accessing Base Members Software University Technical Trainers SoftUni Team.
Events Event Handling in JavaScript SoftUni Team Technical Trainers Software University
Object-Oriented Programming Course Introduction Svetlin Nakov Technical Trainer Software University
JavaScript Applications Course Introduction SoftUni Team Technical Trainers Software University
Mocking with Moq Tools for Easier Unit Testing SoftUni Team Technical Trainers Software University
Mocking with Moq Mocking tools for easier unit testing Svetlin Nakov Technical Trainer Software University
JavaScript Tools Tools for Writing / Editing / Debugging JavaScript Code Svetlin Nakov Technical Trainer Software University
Test-Driven Development Learn the "Test First" Approach to Coding Svetlin Nakov Technical Trainer Software University
Sets, Dictionaries SoftUni Team Technical Trainers Software University
JavaScript Applications Course Introduction SoftUni Team Technical Trainers Software University
Creating Content Defining Topic, Creating Technical Training Materials SoftUni Team Technical Trainers Software University
High-Quality Code: Course Introduction Course Introduction SoftUni Team Technical Trainers Software University
Software Technologies Course Overview SoftUni Team Technical Trainers Software University
Programming Fundamentals Course Introduction SoftUni Team Technical Trainers Software University
Doctrine The PHP ORM SoftUni Team Technical Trainers Software University
Team Work and Personal Skills Course Introduction Angel Georgiev Part-time Trainer Software University
Creating Content Defining Topic, Creating Technical Training Materials SoftUni Team Technical Trainers Software University
Web Storage and Cookies Cookies, Local and Session Storage SoftUni Team Technical Trainers Software University
First Steps in PHP Creating Very Simple PHP Scripts SoftUni Team Technical Trainers Software University
AngularJS Best Practices High Quality SPA Applications SoftUni Team Technical Trainers Software University
Inheritance Class Hierarchies SoftUni Team Technical Trainers Software University
Advanced JavaScript Course Introduction SoftUni Team Technical Trainers Software University
Stacks and Queues Processing Sequences of Elements SoftUni Team Technical Trainers Software University
Generics SoftUni Team Technical Trainers Software University
High-Quality Programming Code Code Correctness, Readability, Maintainability, Testability, Etc. SoftUni Team Technical Trainers Software University
Mocking tools for easier unit testing
Entity Framework: Relations
Modules, Babel, RequireJS, Other JavaScript Module Systems
Extending functionality using Collections
CSS Transitions and Animations
CSS Transitions and Animations
Presentation transcript:

AMD and RequireJS Splitting JavaScript Code into Dependent Modules Software University Technical Trainers SoftUni Team

 AMD Overview  RequireJS Overview  Installation and Configuration  Defining Modules with RequireJS  Defining Dependent Modules Table of Contents 2

AMD Overview The Missing Client-Side JS Module System depends

AMD Overview  Asynchronous module definition (AMD) is a JavaScript API for defining modules  Modules (JS files) are loaded asynchronously  Useful in improving the performance of websites  AMD allows to create dependent modules  Modules that need other modules to work  RequireJS is a famous AMD library  Runs both in the browser and in Node.js

Dive into RequireJS How to Create Dependent Modules?

 RequireJS is a JavaScript file and module loader  Optimized for in-browser use  Can be used in other JavaScript environments  Like Rhino and Node.js  Modular loaders improve the speed and quality of code  Inspire lazy-loading of JS files  Makes files dependent on other files RequireJS Overview

 Using RequireJS makes code more simpler and optimized  Load JavaScript files only when needed  Handles the "many-scripts-hell" in a Web page  Load a single file/module (app.js)  Main file will require other files/modules  And these other modules will require more modules and etc. RequireJS Overview (2)

Using RequireJS Step by Step Guidelines

 RequireJS needs a configuration file to load other files  The config file is the single JavaScript file in the web page  RequireJS loads all code relative to a base url  The url given in data-main attribute  RequireJS assumes by default that all dependencies are scripts  Suffix ".js " is not expected Using RequireJS

Using RequireJS: Steps  How to use RequireJS? 1. Fetch the require.js file:  Download it from RequireJS web siteRequireJS web site  Install with bower: 2. Create an app.js file to start your application 3. Create an HTML page and include RequireJS library  Set the src attribute to the require.js library  Set the data-main attribute to the app.js file $ bower install requirejs

11 RequireJS Configurations  baseUrl – the root path to use for all module lookups  The default value is the location of the HTML page that loads require.js  If data-main attribute is used, the path will become the baseUrl  paths – mapping module names to paths relative to baseUrl (function () { require.config({ require.config({ baseUrl: "/another/path", baseUrl: "/another/path", paths: { paths: { "jquery": "libs/jquery-2.0.3", "jquery": "libs/jquery-2.0.3", "angular": "libs/angular-1.3.min" "angular": "libs/angular-1.3.min" } }); });});

 The app.js is the file, that starts your application  It has dependencies to other RequreJS modules The app.js File (function () { require.config({ require.config({ paths: { paths: { "jquery": "libs/jquery-2.0.3" "jquery": "libs/jquery-2.0.3" } }); });}); require(["jquery"], function () { //write your jQuery-dependent code here //write your jQuery-dependent code here }); });}());

Using RequireJS Live Demo

Defining Modules in RequireJS

 A module is a well-scoped object that avoids polluting the global scope  It can explicitly list its dependencies and get a handle on those dependencies  Dependencies are received as arguments to the define function  The RequireJS module is an extension of the Module Pattern Modules

Modules (2)  The RequireJS syntax for modules allows them to be loaded as fast as possible  Evaluated in the correct dependency order  Since global variables are not created it is possible to load multiple versions of a module  There should have only one module definition in a single JS file!  The modules can be grouped into optimized bundles

 Defining modules is done using the define function of RequireJS:  The name of the modules is the path of the file  Not all modules need dependencies  If no dependencies, just pass a function handler / object Defining Modules // file "libs/module1.js" define(function(){ // do stuff // do stuff return result; } return result; } define({ properties });

Defining Simple Modules Live Demo

Defining Modules with Dependencies

 Some modules use another modules  RequireJS can "request" a file to be loaded  Pass the names of the required module as an array in the define function  If any of them is not loaded, RequireJS will load it Defining Dependencies // file "libs/module1.js" define(['jquery', 'angular'], function($, ng) { $('#button').on('click', function() { … }); $('#button').on('click', function() { … }); return result; } return result; } Load dependencies in order of define First argument will be jquery First argument is jquery Second argument is angular

Defining Dependencies Live Demo

? ? ? ? ? ? ? ? ? AMD and RequireJS

License  This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International" licenseCreative Commons Attribution- NonCommercial-ShareAlike 4.0 International 23  Attribution: this work may contain portions from  “JavaScript OOP" course by Telerik Academy under CC-BY-NC-SA licenseJavaScript OOPCC-BY-NC-SA

Free Software University  Software University Foundation – softuni.orgsoftuni.org  Software University – High-Quality Education, Profession and Job for Software Developers  softuni.bg softuni.bg  Software Facebook  facebook.com/SoftwareUniversity facebook.com/SoftwareUniversity  Software YouTube  youtube.com/SoftwareUniversity youtube.com/SoftwareUniversity  Software University Forums – forum.softuni.bgforum.softuni.bg