<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=AngularJS_Good_Practices</id>
	<title>AngularJS Good Practices - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=AngularJS_Good_Practices"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=AngularJS_Good_Practices&amp;action=history"/>
	<updated>2026-05-13T05:16:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=AngularJS_Good_Practices&amp;diff=37671&amp;oldid=prev</id>
		<title>Łukasz Sokołowski: /* Bespoke agenda */</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=AngularJS_Good_Practices&amp;diff=37671&amp;oldid=prev"/>
		<updated>2016-07-29T15:39:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Bespoke agenda&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Draft}}&lt;br /&gt;
{{Cat| Angular}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{Cat| JavaScript}}&lt;br /&gt;
{{JavaScript Links}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;slideshow style=&amp;quot;nobleprog&amp;quot; headingmark=&amp;quot;⌘&amp;quot; incmark=&amp;quot;…&amp;quot; scaled=&amp;quot;false&amp;quot; font=&amp;quot;Trebuchet MS&amp;quot; &amp;gt;&lt;br /&gt;
;title: AngularJS Good Practices&lt;br /&gt;
;author: Lukasz Sokolowski (NobleProg Ltd)&lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== AngularJS Good Practices ==&lt;br /&gt;
AngularJS Good Practices Training Materials&lt;br /&gt;
&lt;br /&gt;
{{Can I use your material}}&lt;br /&gt;
&lt;br /&gt;
==  Intro ==&lt;br /&gt;
Angular Bespoke Course Outline&lt;br /&gt;
&lt;br /&gt;
(Proposition of potential agenda, can be adjusted or extended)&lt;br /&gt;
&lt;br /&gt;
2 days training&lt;br /&gt;
&lt;br /&gt;
== Bespoke agenda ==&lt;br /&gt;
&lt;br /&gt;
* Avoiding major pitfalls of scaling an AngularJS app&lt;br /&gt;
* Proper MVC directory structure&lt;br /&gt;
* Writing Modules in a smarter way&lt;br /&gt;
** Keeping the names consistent&lt;br /&gt;
** Modularize the Header, Footer, Routes&lt;br /&gt;
* Dependency injection and minifying the code&lt;br /&gt;
** Global dependencies&lt;br /&gt;
* Not-overusing Controllers&lt;br /&gt;
** Syntax of &amp;#039;controllerAs&amp;#039;&lt;br /&gt;
** Using &amp;#039;bindToController&amp;#039; in our Directives&lt;br /&gt;
** Making &amp;#039;ng-click&amp;#039; conditional&lt;br /&gt;
* Factory vs Service&lt;br /&gt;
** All providers are singletons&lt;br /&gt;
* Utilizing browser extensions (Batarang, etc)&lt;br /&gt;
* To many watchers and performance issues&lt;br /&gt;
* Scoping&lt;br /&gt;
** Write-only in the controllers&lt;br /&gt;
** Read-only in the templates&lt;br /&gt;
** Object in the scope instead of properties&lt;br /&gt;
** Avoiding to shadow property of the parent &amp;#039;$scope&amp;#039; &lt;br /&gt;
** Prototypical inheritance&lt;br /&gt;
** Keeping scope uncluttered&lt;br /&gt;
** How to talk with sibling objects&lt;br /&gt;
* One-Time Binding&lt;br /&gt;
* Not-manual testing&lt;br /&gt;
** ngMock module&lt;br /&gt;
** Protractor&lt;br /&gt;
*** e2e tests with Jasmine&lt;br /&gt;
*** &amp;#039;$digest&amp;#039; cycles&lt;br /&gt;
** Karma&lt;br /&gt;
*** How to easly close the feedback loop&lt;br /&gt;
*** Run tests in parallel across different browsers&lt;br /&gt;
*** Real world usage scenarios with different devices&lt;br /&gt;
* Not-using jQuery&lt;br /&gt;
** Change the way of thinking&lt;br /&gt;
* Proper deploying&lt;br /&gt;
** Facade to interact with servers&lt;br /&gt;
*** Separation of server interaction and error handling from the model&lt;br /&gt;
** Business logic in models&lt;br /&gt;
** Configure providers before they are injected&lt;br /&gt;
** Proper use of &amp;#039;$scope.$emit()&amp;#039; and &amp;#039;$scope.$broadcast&amp;#039;&lt;br /&gt;
** Automating our workflow&lt;br /&gt;
*** yo, grunt, bower&lt;br /&gt;
* Agnular 1 vs Angular 2&lt;br /&gt;
** Differences and similarities&lt;br /&gt;
** Three ways: typescript, pure js, dart&lt;br /&gt;
** Good practices in Angular 2&lt;br /&gt;
** Upgrading from 1&lt;/div&gt;</summary>
		<author><name>Łukasz Sokołowski</name></author>
	</entry>
</feed>