AngularJS Web Application Development Blueprints

1y ago
5 Views
1 Downloads
3.65 MB
496 Pages
Last View : 29d ago
Last Download : 3m ago
Upload by : Abram Andresen
Transcription

AngularJS Web Application Development Blueprints

Table of Contents AngularJS Web Application Development Blueprints Credits About the Author About the Reviewers www.PacktPub.com Support files, eBooks, discount offers, and more Why subscribe? Free access for Packt account holders Preface About JavaScript MVC frameworks How AngularJS was born The idea behind this book What this book covers What you need for this book Software versions Copying the code files Who this book is for Conventions Reader feedback Customer support Downloading the example code Errata Piracy Questions 1. Introduction to AngularJS and the Single Page Application Delving into Single Page Apps Anatomy of a simple AngularJS app Models and views Building an Address Book App

Understanding the scope in AngularJS Styling the app Sorting the contacts alphabetically Adding contacts to the Address Book The ng-show and ng-hide directives Summary 2. Setting Up Your Rig Setting up Node.js Creating a simple Node.js web server with ExpressJS Setting up Grunt Installing Grunt-cli Creating the package.json file Creating your Grunt tasks Grunt tasks to merge and concatenate files Running shell commands via Grunt Yeoman – the workflow tool Installing Yeoman Running your app Unit testing with Karma Using Protractor for End-to-End tests Installing Selenium Server Understanding the example spec.js file Understanding the conf.js file Writing your own Protractor test cases Summary 3. Rapid Prototyping with AngularJS Understanding the application that we will Prototype Introducing Grid Layouts and Bootstrap Understanding the grid system Introducing Angular UI UI-Utils

UI-Modules UI-Bootstrap NG-Grid UI-Router IDE Plugins Prototyping the Healthy Living website Adding the ui.bootstrap dependency Creating the navigation bar Adding the carousel Tweaking the hero unit Adding the three content blocks Creating a new view Understanding routes Building the articles view Accordions using Angular Bootstrap Building the image gallery Gallery view using Bootstrap Thumbnail Adding the star rating Building data grids using NG-Grid Adding the NG-Grid component Grouping data in NG-Grid Excel-style editing in NG-Grid Creating a modal window to add subscribers Real-time form validations Summary 4. Using REST Web Services in Your AngularJS App Understanding the response from a REST API Testing a RESTful web service Jump starting your app development with Angular Seed Files and folders in Angular Seed Adding Bootstrap libraries

Starting your Node web server Mark-up our Layout Creating the routes Understanding AngularJS services Writing your first factory service Dependency Injection Coding the partial Calling the REST web service using http Using promise for asynchronous calls Displaying data from the JSON response Unit testing our application Mocking http during Unit testing Creating a Pinterest style layout Adding actions to the buttons Summary 5. Facebook Friends’ Birthday Reminder App Understanding the Facebook SDK The Social Graph The Graph API The Graph API Explorer Creating your Facebook app Setting up our project Running your application Delving into AngularJS directives What is a directive? Importance of naming conventions for directives The anatomy of a directive Writing our first directive Adding a Facebook login Adding the fb-root div element Loading the Facebook SDK

Understanding watch and digest When to use apply Getting the user’s friend list Getting your friends’ profile pictures and birthdays Requesting additional permission with FB.login Understanding isolated scope Adding some CSS styles Changing the routes Adding in the logout link Writing automated tests Writing Unit tests with Karma Writing End-to-End tests using Protractor Summary 6. Building an Expense Manager Mobile App Understanding HTML5 Web Storage localStorage sessionStorage Building the Expense Manager App Building the Add Expense form What is rootScope? Understanding the .run block Creating a value service to store CategoryList Validating the Add Expense form Using localStorage to save data Building a bar chart directive based on D3 Summarizing the expenses by categories Creating our bar chart directive Making the app responsive Adding the CSS media query Scaling the D3 chart based on window size Adding touch events

Enabling swipe gestures using ngTouch Adding page transitions using ngAnimate Loading the ngAnimate module Adding CSS3 transitions Making the app feel like a native app Adding touch icons Running the app in fullscreen mode Adding additional features Summary 7. Building a CMS on the MEAN Stack Why the MEAN stack? Getting started with the MEAN stack Setting up MongoDB Setting up ExpressJS and MongooseJS Building the server-side app Creating the Mongoose schemas Creating CRUD routes Adding a new entry to the collection Updating a collection Deleting a collection item Displaying a single record Securing your admin section Using bcrypt to encrypt passwords Adding a new admin user Creating the route for authenticating login Creating the logout route Writing the sessionCheck middleware Integrating AngularJS with an ExpressJS project Generating SEO-friendly URLs using HTML5 mode Building the admin section for CRUD operations Creating the routes for the admin section

Building the factory services Building the controllers for the admin section Setting up the admin page layout Building the listing view for the admin section Setting up authentication in AngularJS Creating our login page Building a custom module for global notification Building and initializing the message.flash module Building the message.flash factory service Setting up broadcasts Building the directive for the message.flash module Setting a flash message Creating our Add-Edit page controller Creating our Add-Edit view Writing a custom filter to autogenerate the URL field Adding the WYSIWYG editor Setting up an Interceptor to detect responses Building the frontend of our CMS Building our navigation bar directive Building the admin-login directive Displaying the content of a page Setting the default home page Summary 8. Scalable Architecture for Deployments on AWS Understanding the various services in Amazon AWS Delving into AWS deployment architectures The EC2 server-based architecture The Server-less Architecture Deploying our app in a Server-less Architecture on AWS Mapping a domain to S3 Mapping the S3 bucket to a CloudFront distribution

Getting your app ready for production deployment Improving the page-load time of your app Setting Expires headers Performance Summary 9. Building an E-Commerce Store Backend as a Service Building a BaaS platform on AWS Setting up an S3 Bucket with public read access Setting up the CORS policy on your S3 bucket Creating our DynamoDB tables Creating the Identity and Access Management (IAM) role Creating our e-commerce app Building nested views using UI-Router Mapping states to URL, views, and controllers Prototyping our application Setting up our index.html file Creating the controllers Creating the product partials Adding animations to the view transitions Adding in the CSS transition effects Creating our application-level controller Adding a Facebook login Integrating AWS JS SDK with our application Creating the AWS service provider Building our Add Products page Saving data in DynamoDB tables Creating the view for the add product form Building the controller for the add products view Uploading images to S3 Fetching the products lists for a category

Using resolves to preload data Creating our product details page Adding products to cart The checkout page Saving the orders Summary A. AngularJS Resources Official resources Recommended AngularJS modules Boiler plates Learning resources Good friends with AngularJS (third-party tools and services) Core team members and knowledgeable people to follow Index

AngularJS Web Application Development Blueprints

AngularJS Web Application Development Blueprints Copyright 2014 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: August 2014 Production reference: 1180814 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78328-561-7 www.packtpub.com Cover image by Faiz Fattohi ( faizfattohi@gmail.com )

Credits Author Vinci Rufus Reviewers Jeff Cunningham Ashutosh Das AJ Kerrigan Ciro Nunes Yacine Rezgui Commissioning Editor Akram Hussain Acquisition Editor Richard Harvey Content Development Editor Vaibhav Pawar Technical Editors Shashank Desai Menza Mathew Copy Editors Karuna Narayanan Alfida Paiva Laxmi Subramanian Project Coordinators Binny K. Babu Kranti Berde Proofreaders Bridget Braund Paul Hindle Lucy Rowland Indexers Hemangini Bari

Mariammal Chettiyar Rekha Nair Priya Subramani Graphics Valentina D’silva Production Coordinator Aparna Bhagat Cover Work Aparna Bhagat

About the Author Vinci Rufus has been working with frontend technologies for close to 14 years now. He started his career building games with Flash ActionScript and later moved on to JavaScript and HTML5. During his spare time, he enjoys conducting workshops and training people. For a living, he mentors, guides, and helps grow the technology team at Razorfish Neev, primarily in the area of commerce, usability, and emerging technologies. A sincere thanks to the awesome team at Razorfish Neev. I’ve learned so much working with you all. My deepest regards to the technical reviewers, Jeff Cunningham, Ashutosh Das, AJ Kerrigan, Ciro Nunes, and Yacine Rezgui, and also to the content development editor, Vaibhav Pawar, whose insights and feedback greatly helped in adding the finishing touches for this book. A big thank you to my family; my dad, Rufus, who learned computers only so that he could teach me; my mom, Anne, who has always encouraged me to take up challenges every time I thought it wasn’t possible; my awesome kids, Shannon and Jaden, who sacrificed a lot of their play time so that I could write this book; my wife, Raina, for all the support that was instrumental in this book reaching its completion; and finally, my sister, Blaisy, who was always there to give feedback and critique my work, and with whom I could brainstorm and discuss ideas.

About the Reviewers Jeff Cunningham is a mobile app developer at Comdata in Nashville, TN. After 15 years of working in the field of Java web development, he now enjoys the challenges of frontend and mobile development. He also reviewed the book, AngularJS Directives, Packt Publishing, and maintains the popular repo named AngularJS-Learning on GitHub g). Ashutosh Das, who hails from Bangladesh, works mainly as a backend developer and his experience includes working with Django, Node.js, Laravel, and so on. He also likes to work with AngularJS. He spends his spare time writing for GitHub. He also works as a freelancer and is a part-time job holder. He is currently in the process of reviewing the book, AngularJS UI Development, Packt Publishing. AJ Kerrigan is a systems analyst with a small IT department in New Jersey. His technical duties and interests include server and database administration, command-line scripting, and web development. AngularJS Web Application Development Blueprints, Packt Publishing, represents AJ’s first experience as a technical reviewer. I would like to thank my wife, daughter, and dog for their love, support, and endless supply of hugs. Thanks to my father as well, who provided me with my first exposure to programming (BASIC on the family TI-99/4a computer). He has been a consistent source of encouragement and guidance. Ciro Nunes is a 22-year old frontend engineer, test-first evangelist, and specialist in largescale architectures for heavy client-side applications. At such a young age, he has been responsible for the development of the biggest e-commerce websites from Latin America. He’s also the organizer of the AngularJS SP Meetup which has more than 400 members. Nowadays, he’s working on applications for the financial market that pushes the boundaries of AngularJS. I want to thank my family and friends for their patience, with me being so absent lately. I promise that I’m going to walk more with the dog and spend more time with you whom I love. Yacine Rezgui is a French-Tunisian web developer. He started web developing at the age of 12, and since then, has made his passion his job. He’s specialized in web development and strongly believes that it is the best cross-platform environment. He’s currently the organizer of the London Phonegap Meetup. He worked in different companies such as Médiamétrie eStat, Tequila Rapido, and GovernorHub as a freelancer. I would like to thank my friends, James Nocentini, James Sharp, Cédric Ferretti, and Xavier Kress for supporting me on my work, my family for all their encouragement, and Xuxu for helping me to focus.

www.PacktPub.com

Support files, eBooks, discount offers, and more You might want to visit www.PacktPub.com for support files and downloads related to your book. Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at service@packtpub.com for more details. At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks. http://PacktLib.PacktPub.com Do you need instant solutions to your IT questions? PacktLib is Packt’s online digital book library. Here, you can access, read and search across Packt’s entire library of books.

Why subscribe? Fully searchable across every book published by Packt Copy and paste, print and bookmark content On demand and accessible via web browser

Free access for Packt account holders If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.

Preface The most annoying part of using any website or web application is the time we wait for pages to load. Sure, everybody is working on making the Web fast, but those 2-3 seconds that it takes for a round trip to the server does not stop you from opening multiple tabs and often forgetting which tab you originally were on. The rapid popularity of JavaScript frameworks and technologies such as AJAX clearly show the desperate need to save those 1 or 2, second-round trips to the server, and provide the users with a more desktop-like user experience.

About JavaScript MVC frameworks These JavaScript frameworks aren’t some new revolutionary technology or a new discovery; they are all still using the same old faithful JavaScript. These JavaScript frameworks merely provide a layer of abstraction (if I may) or a more Model-ViewController-like architecture, so that we can be more productive while building apps and don’t really have to worry about mundane things. The credit for the rising popularity of these JavaScript frameworks would go to this surge of JavaScript-based highly interactive and rich Internet applications that nowadays do so much more than just displaying data received from a backend server. All of this is possible thanks to the modern day browser and their JavaScript engines that have become faster and powerful. There has nearly been an explosion of these JavaScript MVC frameworks, and every other day, we see a new framework being launched. While most people consider Backbone.js or SproutCore to be one of the first JavaScript frameworks, I would say Ext JS by Sencha has been among the first JavaScript frameworks and one that is still being extensively used in the corporate world mainly to build finance apps. While Backbone.js and SproutCore were launched in 2010, Version 2.0 of Ext JS was launched towards the end of 2007. AngularJS too was launched somewhere in 2010. Around the same time, other JavaScript frameworks were sprouting up. However, it is probably the fastest growing framework in terms of user adoption, mainly due to the “wow” factor and also the backing from the big G. Each framework has its own pros and cons, and ideally the choice of the framework would depend on the nature of your project. Note http://www.todomvc.com/ is a very nice site to understand and compare the functioning of these JavaScript frameworks. AngularJS is currently the most popular JavaScript MVC framework. Some of the reasons for this would be as follows: It’s among the simplest to learn It follows some of the best software-engineering concepts, and is ideal to build large, scalable apps It has a robust testing framework to run Unit tests and End-to-End tests, thus making it easy to write and run automated test cases It also allows for teams to work in parallel on a single application without stepping over each other’s work It has the fastest growing community of adaptors, and the AngularJS Google Groups and IRC chats are a great place to interact with others

How AngularJS was born AngularJS started as an internal Google project by Misko Hevery, sometime in 2009. As the story goes, Misko’s team was working on a project called Google Feedback; even after six months of development and about 17,000 lines of code, they were still unhappy with the pace of development and the inability to write automated tests. That’s when Misko decided to rewrite that. It took him about 3 weeks and he managed to write the whole thing in just about 1,500 lines of code. That’s when AngularJS got some serious attention internally at Google, and a team was put together to help further develop it. Around 2010, Google decided to declare it as open source under the MIT license.

The idea behind this book The idea behind writing this book is to showcase the different types of applications that can be built on AngularJS. Besides explaining AngularJS and how to write modular and testable code, there is a fair amount of emphasis on making those apps look beautiful. So, be ready for some CSS stuff and design-related discussions. I’ve tried to cover a variety of applications ranging from a simple address book, an HTML5 mobile app, an e-commerce store, a CMS framework, and also ideas on how to deploy apps on Amazon AWS.

What this book covers This book is broken down into nine chapters. Chapter 1, Introduction to AngularJS and the Single Page Application, talks about the concept of a Single Page App and how they are different from the regular web apps. We’ll also learn about the basics of AngularJS by building a simple Address Book App. Chapter 2, Setting Up Your Rig, talks about how having the right set of tools can be a huge productivity booster. It also makes you feel like a pro when building your AngularJS app. This chapter will talk about some of the tools such as Node.js, ExpressJS, Grunt, Yeoman, and Karma. Chapter 3, Rapid Prototyping with AngularJS, talks about the ease with which one can create clickable prototypes to get a feel of how an application would look and feel before working on any backend code. Chapter 4, Using REST Web Services in Your AngularJS App, will show you how to consume data from third-party REST web services using factories and the http service. Chapter 5, Facebook Friends’ Birthday Reminder App, will explain directives and how we can create our Facebook login directive. We will also set up some automated tests to ensure everything is working fine. Chapter 6, Building an Expense Manager Mobile App, will walk you through the process of building a responsive and touch-friendly mobile app using ngAnimate and HTML5 features such as localStorage. Chapter 7, Building a CMS on the MEAN Stack, talks about how to set up an entire backend and frontend system and how AngularJS interacts with a node server and MongoDB database. We will also look at session management and interceptors. Chapter 8, Scalable Architecture for Deployments on AWS, will teach you about AWS and its various services, and how we can deploy our app in a Server-less Architecture that can inherently scale. Chapter 9, Building an E-Commerce Store, will show you how to directly read and write data from AWS’s DynamoDB database, and upload images to S3 directly from our JavaScript app. Appendix, AngularJS Resources. Well, you know what to expect here.

What you need for this book You obviously don’t need to read the entire book before you can start working on your first AngularJS project. I’m a firm believer of learning things the practical way, and that’s why from the very first chapter, you will find yourself firing up your IDE/Text editor, and writing code and testing it on your browser. While you will learn a couple of new features of AngularJS in each of the chapters, each chapter is still self-contained, and you can comfortably jump to any of the chapters that interest you or that you need to refer to for your project. However, if you are just starting off with AngularJS, then I strongly recommend that you read through the first three chapters before you start jumping.

Software versions The current stable version of AngularJS while writing this book is 1.2, and unless specified, we will be using the stable version of 1.2.17 for all the examples in this book. You can get the latest version of AngularJS using any of the following methods: Download the compiled minified version from http://www.angularjs.org. Fork or clone the source code from the GitHub URL https://github.com/angular/angular.js. The recommended option for both development and production code is to call the AngularJS file directly from the Google CDN. The link to the AngularJS section on the CDN is uide#angularjs.

Copying the code files The code examples mentioned in this book can be used in your programs. However, if you choose to burn them on to CDs for redistribution or are putting up the code examples for downloads, you are required to get explicit permission from Packt Publishing.

Who this book is for This book is mainly aimed at professionals, both designers and programmers. Thankfully, AngularJS is evolving to be a framework where both designers and programmers work together without discriminating each other as backend developers or frontend designers. The book obviously assumes that you know your basics in HTML, CSS, and JavaScript. You understand the importance and need for writing modular, scalable, testable, and goodlooking applications. You don’t need to have worked with AngularJS or any other JavaScript framework to understand the topics covered. The book assumes you just met AngularJS on a blind date. The book starts off with getting you comfortable with the basic concepts that you come across very often while working with AngularJS. We’ll write some simple code just to see how AngularJS works, understanding it better, and then we’ll graduate to writing cleaner and modular code. Also, I have a chapter dedicated to setting up your development “rig” with a set of tools and plugins that will help you boost your productivity while building AngularJS apps.

Conventions In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning. Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: “Now, angular-bootstrap will be available for use across our application.” A block of code is set as follows: carousel interval "setInterval" slide ng-repeat "slide in slides" active "slide.active" /slide /carousel When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold: body ng-app ng-init " myName 'John Doe' " {{myName}} is {{ 2014-1968}} years old. script src " angular.min.js " type "text/javascript " /script /body Any command-line input or output is written as follows: yo angular:route subscribers New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: “Click on the Download button and select the following options from the pop-up window:” Note Warnings or important notes appear in a box like this. Tip Tips and tricks appear like this.

Reader feedback Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of. To send us general feedback, simply send an e-mail to feedback@packtpub.com , and mention the book title via the subject of your message. If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

Customer support Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the example code You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

Errata Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submiterrata, selecting your book, clicking on the errata submission form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

Piracy Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy. Please contact us at copyright@packtpub.com with a link to the suspected pirated material. We appreciate your help in protecting our authors, and our ability to bring you valuable content.

Questions You can contact us at questions@packtpub.com if you are having a problem with any aspect of the book, and we will do our best to address it.

Chapter 1. Introduction to AngularJS and the Single Page Application In this chapter, we’ll learn what Single Page Apps are and how they differ from the regular web applications. We will also learn the fundamentals of AngularJS and go about building a simple Address Book App using it. The list of topics to be covered in the chapter are as follows: What are Single Page Apps? Anatomy of an app Models and views Building an Address Book App Styling the app with CSS Adding items to the Address Book

Delving into Single Page Apps Besides other things, AngularJS is primarily used to build Single Page Apps (SPAs), so let us first understand its characteristics. Single Page Apps are apps or websites wherein the entire site or app content loads within a single page. This essentially means that once the app or website is loaded in the browser, clicking on any link would not reload the entire page but would simply update certain sections within the main page itself. This gives users a very desktop-like feel while using an SPA. Although SPAs have become very popular nowadays, the concept has been discussed as early as 2003, and the term Single Page App was coined in 2005. Some of the technologies that play a predominant role in building SPAs are HTML, CSS, JavaScript, AJAX, and web services usually RESTful. Of these, JavaScript plays the most crucial role in building an SPA, so if you have been procrastinating on sharpening your JavaScript skills this would be the best time to get up and get started. One of the fundamental differences in the way SPAs work against regular websites is the way the pages are built, which the user sees. Refer to the following diagram:

In traditional web applications that are built on the server-side technologies such as Java, PHP, and .NET, whenever a page is requested, the web server would make a request to the database, fetch the result of the query, the

book, AngularJS UI Development, Packt Publishing. AJ Kerrigan is a systems analyst with a small IT department in New Jersey. His technical duties and interests include server and database administration, command-line scripting, and web development. AngularJS Web Application Development Blueprints, Packt Publishing, represents AJ's

Related Documents:

AngularJS uses dependency injection and make use of separation of concerns. AngularJS provides reusable components. AngularJS viii With AngularJS, the developers can achieve more functionality with short code. In AngularJS, views are pure html pages, and controllers written in JavaScript do the business processing. On the top of everything, AngularJS applications can run on all major browsers .

AngularJS Tutorial W3SCHOOLS.com AngularJS extends HTML with new attributes. AngularJS is perfect for Single Page Applications (SPAs). AngularJS is easy to learn. This Tutorial This tutorial is specially designed to help you learn AngularJS as quickly and efficiently as possible. First, you will learn the basics of AngularJS: directives, expressions, filters, modules, and controllers. Then you .

Beginning AngularJS Beginning AngularJS is your step-by-step guide to learning the powerful AngularJS JavaScript framework. AngularJS is one of the most respected and innovative frameworks for building properly structured, easy-to-develop web applications. This book will teach you the absolute essentials, from downloading and installing AngularJS, to using modules, controllers, expressions .

AngularJS provides data binding capability to HTML thus giving user a rich and responsive experience AngularJS code is unit testable. AngularJS uses dependency injection and make use of separation of concerns. AngularJS provides reusable components. With AngularJS,

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: [3] AngularJS extends HTML with ng-directives. The ng-app directive defines that this is an AngularJS application.

episode iv Introduction: A New Hope 12 The Blueprints 18 episode v Introduction: The Empire Strikes Back 92 The Blueprints 96 episode vi Introduction: Return of the Jedi 186 The Blueprints 190 episode i Introduction: Episodes I, II, III The Prequel Trilogy 270 The Phantom Menace Blueprints 274 episode ii Attack of the Clones Blueprints 308

Even the blueprints of the c hunks, are chunks. And even the blueprints of the blueprints. More than that. A given chunk can be part of n files, m blueprints of files and x blueprints of blueprints of files and so on. You see the glitch? The recombination of useless data to a reque

Conduct an API-653 inspection of your tank every five years as recommended by TFI (The Fertilizer Institute) WHAT IS THE API 650 SPECIFICATION API - AMERICAN PETROLEUM INSTITUTE Worldwide Standard for Above Ground Storage Tank Design and Construction Provides requirements for calculations of shell plate thickness, man-way and nozzle design Provides procedures for shell, roof and floor .