Introduction to angular with a simple but complete project
Angular is a framework for building client applications in HTML, CSS and TypeScript. It provides best practices like modularity, separation of concerns and testability for client-side development. The document discusses creating an Angular project, generating components, binding data, using directives, communicating with backend services, routing between components and building for production. Key steps include generating components, services and modules, binding data, calling REST APIs, defining routes and building the app.
Introduction to Angular as a client application framework and its evolution, focusing on modular programming and front-end/back-end separation.
Overview of Traditional Web Architecture vs. Service Oriented Front End Architecture (SOFEA), highlighting scalability, interoperability, and SPA benefits.
Instructions on setting up an Angular development environment, including tools like ATOM, Node.js, npm, and Angular CLI installation.
Steps to create and run a new Angular project, including project setup and accessing the default Angular page.
Introduction to components in Angular, including creation, structure, and usage of Bootstrap for enhancing application appearance.
Explanation of data binding methods in Angular: interpolation, property binding, event binding, and two-way data binding.
Overview of directives in Angular, including Attribute and Structural directives, with specific examples like ngIf and ngFor.
Process of integrating Angular with backend services through HttpClient, creating services, and managing data flow between front end and back end.
Angular routing functions that allow navigation between components within a Single Page Application without reloading the page.
Best practices for managing Angular projects' versions with .gitignore and handling different environments by configuring environment variables.
Steps for preparing an Angular application for production, including editing index.html, building with ng build, and deploying to a server.
Summary of key Angular commands and an overview of project structure, highlighting folder organization and important files.List of references and sources used throughout the presentation for further learning and insights on Angular.
Angular Introduction
• Angularis a framework for building client
applications in HTML, CSS and TypeScript ( that
compiles to JavaScript ).
• It has changed the way we develop client side
applications, by providing the possibilities to
apply the best practices usually applied on server
side like modular programming, separation of
concerns, testability and many other, on client
side.
2Angular
Angular Introduction
• ServiceOriented Front End Architecture - SOFEA
6Angular
HTTP Server
Services
Business Logic
and
Persistence
7.
Angular Introduction
• SOFEAadvantages
• Scalability (processing, stateless, caching)
• Interoperability (BaaS – Back-end as a Service, Web
and Mobile)
• Offline Applications
• Asynchronous development ( front-end x back-end)
7Angular
8.
Angular Introduction
• Angularuses the concept of Single Page
Application (SPA)
• SPA is not an application of a unique html file but a fully
contained applications in the browser that do not need
to make requests for new pages on the server.
• Usually SPA makes request just of the data that will be
show inside of the pages ( accessing back end
REST+JSON services)
8Angular
9.
Angular Introduction
• SinglePage Application Advantages:
• Faster, eliminate the download of html, js and css code
in each request
• Possibility to create off line applications
9Angular
Angular Install theEnvironment
• ATOM : Text editor (or any other that you prefer)
• Node.js + npm: dependence management (npm
~= gradle/maven in java world)
• Angular CLI: Command Line Interfaces for
angular
• TypeScript: The language of angular 2
11Angular
12.
Angular Install theEnvironment
• Download and install Aton (https://atom.io/)
12Angular
Angular Install theEnvironment
• Download and install Node.js (https://nodejs.org)
to have access to npm
14Angular
15.
Angular Install theEnvironment
• After install npm, install typescript and angular cli
using the npm of node.js
• sudo npm intall –g typescript
• sudo npm intall –g @angular/cli
15Angular
Angular Create anew Project
18Angular
• Create a new angular project
• ng new project_name
19.
Angular Create anew Project
19Angular
• Open angular project in Atom
20.
Angular Create theProject
• Running the project
• ng server inside of project folder
• open the browser on http://localhost:4200
20Angular
Angular Creating Components
•Angular is based on components.
• There is already the main component called
app.component that shows the “Wellcome to App” page
when you access localhost:4200
23Angular
24.
Angular Creating Components
•Angular component have 3 basics parts.
• name-component.html (the html code of component)
• name-component.css (css style of component)
• name-component.ts (the typescritp of component)
24Angular
25.
Angular Creating Components
•Our application will have 3 components
• Let's create then with ng g c name Angular CLI
command
25Angular
Header
Home
Footer
Angular Creating Components
•Each component has a selector in the typescript
class that identify the component
30Angular
31.
Angular Creating Components
•So, let’s erase the content of the template
app.component.html file and put our components
selectors in the order of the components will be
shown
31Angular
Angular Project Lookand Feel
• Now let’s install bootstrap in our project to make
view pretty
• To install new angular external modules use npm
npm install bootstrap@3 jquery --save
• This installs Bootstrap and jQuery into the
node_modules folder within the project directory
34Angular
35.
Angular Project Lookand Feel
• When we are development a web application with
bootstrap and jquery we need to include its .css
and .js files in our html pages.
• We can do this with angular, but usually angular
has a file .angular-cli.json where we can include
the .css and .javascript code that we will use in
our project
35Angular
36.
Angular Project Lookand Feel
• Open the .angular-cli.json file and add the css
and js files of bootstrap and jQuery inside slyles
and scripts arrays.
36Angular
37.
Angular Project Lookand Feel
• Now we can open the home component template
(html file) and use some bootstrap css class
37Angular
Angular Project Lookand Feel
• We can also use bootstrap templates in our
project
• Angular projects have a assets folder that we
can use to put static files, like images, html
templates, etc..
• Let’s use in our project the SB Admin 2 bootstrap
theme (https://startbootstrap.com/template-
overviews/sb-admin-2/)
39Angular
40.
Angular Project Lookand Feel
• Adding the SB Admin 2 bootstrap theme
• Download it
40Angular
41.
Angular Project Lookand Feel
• Adding the SB Admin 2 bootstrap theme
• Copy it content to the assets directory
41Angular
42.
Angular Project Lookand Feel
• Adding the SB Admin 2 bootstrap theme
• Add its js and css files in the .angular-cli.json file
42Angular
43.
Angular Project Lookand Feel
• Adding the SB Admin 2 bootstrap theme
• Now we can use SB Admin 2 elements in the angular
components html files
43Angular
Angular Data Binding
•Interpolation
• Allows us to read primitive or object values from
component properties in the template (html file)
45Angular
46.
Angular Data Binding
•Property Binding
• Angular executes the expression and assigns it to a
property of an HTML element, a component, or a
directive.
46Angular
47.
Angular Data Binding
•Event Binding
• A component method responds to an event raised by an
element, component, or directive.
47Angular
48.
Angular Data Binding
•Two-Way Data Binding
• Its takes a combination of setting a specific element
property and listening for an element change event.
48Angular
49.
Angular Data Binding
•Two-Way Data Binding
• You can use a property + event binding
• Or [ ( ) ] syntax
49Angular
Angular Directives
• AttributeDirectives and Structural Directives
• Attribute Directives: changes the appearance or
behavior of a DOM element
• Structural Directives: Change the DOM's structure,
typically by adding, removing, or manipulating elements.
52Angular
Angular Communicate withback end
• To communication with back end angular uses
the concept of “services”
• Creating a new service
• cd src/app/home
• ng g s home
• This create inside of home
• folder the home.service.ts
• file
57Angular
58.
Angular Communicate withback end
• In the HomeService
• import the HttpClient from “@angular/commum/http”
• Inject it by constructor
• Create a method getScearios()
• In the method getScenarios() call the get method
passing the URL of the service
• This call a REST service in the backend that will return a
array of scenarios using json.
58Angular
Angular Communicate withback end
• In the HomeComponent
• import the HttpService from ./home.service
• Inject it by constructor
• Create a method scenariosList() that call the
getScearios() from the service
• On the ngOnInit() method call the scenariosList(),
when the home component is create (the html code is
show)
• ngOnInit() -> sceneariosList() -> getScenarios()
61Angular
Angular Communicate withback end
• In app module (app.module.ts file)
• import the HttpClientModule and the HomeService
• add HttpClientModule in imports[] arrays and
HomeService in providers[] array
64Angular
Angular Communicate withback end
• In the back end you can use any technology
• We create a RestFul Web Service using Spring
that return a list of ScenarioDTO objects
66Angular
Angular Communicate withback end
• The Scenario[] arrays return by getScenarios()
method of HomeService will have fields with the
same name of ScenarioDTO return by back end.
68Angular
69.
Angular Communicate withback end
• Now on the front end, you can iterate over the
array on the home template (.html file) using
ngFor directive and access the fields defined on
back end.
69Angular
70.
Angular Communicate withback end
• Now on the front end, you can iterate over the
array on the home template (.html file) using
ngFor directive and access the fields defined on
back end.
70Angular
Angular Routes
• Routesis a functionally that helps your
application to become a Single Page Application
• It redirect the user to another component without
reload the page or call the back end.
72Angular
73.
Angular Routes
• Wecreate 2 new components charts and
scenarios
• And a new file app.routing.ts
73Angular
74.
Angular Routes
• Inthe file app.routing.ts we will declare the root
routes of our application
74Angular
75.
Angular Routes
• Declarea appRoutes variable of the type Routes
that is a array with two fields: the path and the
component
• When access one path the application will
redirect for the component
75Angular
Angular Routes
• Nowwe have to indicate where the html code of
component will be drawn in our application
• We will indicate this with router-outlet tag.
• We put this tag on the app.component.html
78Angular
79.
Angular Routes
• Inthe Home component we will let just the
common code.
• When the user access the path “/scenarios”, the
code of ScenariosComponent will be rendered in
app.component.html
• When the user access the path “/charts”, the
code of ChartsComponent will be rendered in
app.component.html.
79Angular
Angular Versioning theProject
• Angular/cli automatically create a .gitignore file
that ignore the node_modules directory
85Angular
86.
Angular Versioning theProject
• This happens because this directory contains all
dependence of project and is very big.
• When you clone a angular project ( that should
not contains the node_modules), you can restore
it with the command npm install.
• git clone url_to_my_project
• cd project_directory
• npm install
• ng server
86Angular
Angular Environment Variables
•You can manage different environments
• Angular create under src directory, a directory
named environments, where you can configure
global constants
88Angular
89.
Angular Environment Variables
•Define the environments that you will have in
environments array in .angular-cli.json file:
89Angular
90.
Angular Environment Variables
•environment.ts is default environment
• You can specify the environment on the moment
of the build
• ng build --env=test
• This is very useful to define the api url.
90Angular
Angular Build toProduction
• Edit the index.html to set the <base href>
appropriately with the context of the application,
ending with “/”.
93Angular
94.
Angular Build toProduction
• To build the project to production, we use this
command:
ng build --prod --env=prod
• The prod option will minify all files and do another cool
things to format the files do production.
• The env option will build the correct environment file to
use
94Angular
95.
Angular Build toProduction
• The build will generated a dist directory
95Angular
96.
Angular Build toProduction
• Rename the dist directory as application context
name (same name of base href in index.html)
• Copy the directory put inside a HTTP Server
(apache, tomcat, etc)
96Angular
Angular Commands Summary
98Angular
•ng new name (create a new project)
• npm install (download all dependences and restore
node_modules directory)
• ng server (run the application for development
localhost:4200)
• ng g m name (generate a new module)
• ng g c name (generate a new component)
• ng g s name (generate a new server)
• ng build --prod --env=prod (build for production)
99.
Angular Project StructureOverview
99Angular
Declaration of angular dependences
Configuration of your project
The code of our application
Contains all dependences
Git control Version
end to end tests
build output folder
100.
Angular Project Structure(Inside src folder)
100Angular
index.html of our application
The icon of our application
configuration to different environments (dev, test e prod)
Global CSS styles can be put here
Images and other things can be put here
Our code
101.
Angular Project Structure(Inside app folder)
101Angular
The main component (mandatory)
Our specific components
The main model (mandatory)