You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+192-26
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,31 @@
1
1
# JavaScript / Angular Bootcamp - 2018
2
2
3
-
Welcome to the bootcamp, training time has begun
3
+
## IMPORTANT DISCLAIMER
4
+
This is not your typical _crash course_, this is a Bootcamp.
5
+
6
+
What does that mean?
7
+
8
+
-_You will give your best_
9
+
10
+
-_We will give our best_
11
+
12
+
-_We will all have a good time_
13
+
14
+
15
+
But most important, there will be **A LOT** of humor, because a happy developer _(student, pupil, padawan, you get the point...)_ is a great and hard working developer.
16
+
17
+
18
+
_That said..._
19
+
20
+
21
+
## Welcome to the bootcamp, training time has begun
4
22
5
23

6
24
7
25
Please, use this repository as a base for you training phase. The idea is to
8
26
fork this project so everyone use the same folder structure for the
9
27
exercises.
10
28
11
-
12
29
#### Index
13
30
14
31
1.[Objective](#objective)
@@ -39,7 +56,7 @@ exercises.
39
56
40
57
### Objective
41
58
42
-
This course teaches the basics of JavaScript development and [Single Page Applications](https://medium.com/@NeotericEU/single-page-application-vs-multiple-page-application-2591588efe58) with Angular.
59
+
This course teaches the basics of JavaScript development and [Single Page Applications](https://medium.com/@NeotericEU/single-page-application-vs-multiple-page-application-2591588efe58) with `Angular`.
43
60
44
61
→ [index](#index)
45
62
@@ -82,7 +99,7 @@ exercises as wanted.
82
99
83
100
### Materials
84
101
85
-
1. You will need to install [Node.JS](https://nodejs.org/en/) (Version 8) (NVM is strongly recommended - [Unix](https://github.com/creationix/nvm#installation)/[Windows](https://github.com/coreybutler/nvm-windows))
102
+
1. You will need to install [Node.JS](https://nodejs.org/en/) (Version 6) (NVM is strongly recommended - [Unix](https://github.com/creationix/nvm#installation)/[Windows](https://github.com/coreybutler/nvm-windows))
86
103
87
104
2. The recommended IDE is [Visual Studio Code](https://code.visualstudio.com/). However, you can use any IDE of your preference.
88
105
@@ -105,7 +122,7 @@ The boot camp is organized in the following way:
105
122

106
123
107
124
The first week is oriented to learn the basics around JavaScript and Node. This
108
-
Bootcamp assumes you already know the basics of Js syntax. If this is not your
125
+
Bootcamp assumes you already know the basics of `Js` syntax. If this is not your
109
126
case, it is recommended to take a look to the following topics:
110
127
111
128
-[Js Values, Types, and Operators](http://eloquentjavascript.net/01_values.html)
@@ -131,7 +148,6 @@ You will learn about Cross-Compiled apps, Hybrid Apps, and Progressive Web Apps.
131
148
awaiting for you is making last week's app more scallable, you will add lazy loaded modules with routing and you will
132
149
upgrade the security with some route guards.
133
150
134
-
135
151
### General Guidelines
136
152
137
153
1.[Team play](http://www.dummies.com/how-to/content/ten-qualities-of-an-effective-team-player.html) is encouraged but the work will be evaluated per person.
@@ -141,7 +157,7 @@ You must look for support and guidance from your PM, teammates and tutors.
141
157
142
158
3. All code and documentation must be in English.
143
159
144
-
4.Js Code must adhere to this [Coding Style Guide](https://github.com/airbnb/javascript).
160
+
4.`Js` Code must adhere to this [Coding Style Guide](https://github.com/airbnb/javascript).
145
161
146
162
5. Ts and Angular Code must adhere to this [Coding Style Guide](https://angular.io/guide/styleguide).
147
163
@@ -150,7 +166,7 @@ You must look for support and guidance from your PM, teammates and tutors.
150
166
### Learning Days ###
151
167
152
168
Each day you will grab the fundamentals of the key building blocks for usual
153
-
Js/Ts/Angular applications.
169
+
`Js/Ts/Angular` applications.
154
170
155
171
On each learning day you will have to:
156
172
@@ -163,7 +179,7 @@ following practice.
163
179
You will implement the previously gathered knowledge in simple coding activities.
164
180
165
181
3.**Commit:**
166
-
You will commit all your code on a daily basis, when you finish your practice. This will not apply for code of Week 4.
182
+
You will commit all your code on a daily basis, when you finish your practice. This will not apply for code of Week 3 and 4.
167
183
168
184
# Introduction
169
185
@@ -179,13 +195,15 @@ You will commit all your code on a daily basis, when you finish your practice. T
179
195
180
196
→ [index](#index)
181
197
198
+
_Now let's get down to business_
199
+
182
200
# Week 1: JavaScript and Node 101
183
201
184
202
## Day 1: The Secret Life of Objects
185
203
186
204

187
205
188
-
Js is often called an Object oriented language, but actually that isn't 100% true. In Js
206
+
`Js` is often called an Object oriented language, but actually that isn't 100% true. In `Js`
189
207
we have what's called `Prototipal Inheritance`.
190
208
In this lesson you will learn all about the Prototype, Inheritance, Getters, Setters, Constructors and Polymorfism.
191
209
@@ -206,7 +224,7 @@ We still have that ~~hideous~~ beautiful `Prototype` under the hood, so don't ge
206
224
## Day 2: Going Regular with RegEx (Also, learn how to hunt those bugs)
207
225
One of the most ~~hated~~ used features on any kind of language are Regular Expressions, aka RegEx. Those are **REALLY** powerfull strings (they are more like a really special kind of strings) that allow you to capture any pattern you want on any kind of string. You can make sure all emails accounts end up with `@something.com` or all the names are at most 4 characters long... you get the idea.
208
226
209
-
Also, you will be learning error handling and some of the finest debugging techniques out there. Or, as I like to call them, **_learn how to properly use the browser console_**.
227
+
Also, you will be learning error handling and some of the finest debugging techniques out there. Or, as I like to call them, **_learn how to properly use your tools_**.
210
228
211
229
Read up and catch 'em all
212
230
@@ -230,7 +248,7 @@ The code comes to life. All works fine (at least if you coded right :unamused:)
230
248
231
249

232
250
233
-
No, no it's not. It's the browser's engine. Js runs inside a browser on a [VM](https://en.wikipedia.org/wiki/JavaScript_engine), that VM could be
251
+
No, no it's not. It's the browser's engine. `Js` runs inside a browser on a [VM](https://en.wikipedia.org/wiki/JavaScript_engine), that VM could be
234
252
[V8](https://developers.google.com/v8/) (Chrome), [SpiderMonkey](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey) (Firefox), [Chakra](https://github.com/Microsoft/ChakraCore) (Edge) or [Nitro](https://developer.apple.com/documentation/javascriptcore) (Safari)
235
253
236
254
For day 3 you will learn about the Browser, the Document Object Model (basically the whole thing you are seeing on the browser's window) and DOM Events.
@@ -248,7 +266,7 @@ The browser and the server (the little computer thingy that lives on the cloud a
Users communicate with the application via `forms`, those are fill up sections which where designed on a time before Js where all interactions with the server where made while navigating to a new page. That kind of interaction is **SO** web 1.0 but, we still use `forms`.
269
+
Users communicate with the application via `forms`, those are fill up sections which where designed on a time before `Js` where all interactions with the server where made while navigating to a new page. That kind of interaction is **SO** web 1.0 but, we still use `forms`.
Look into [`src/week1/day4-5`](src/week1/day4-5) in there there're some `js` files. Those 2 are Node.js apps, they don't work as you would expect from any other `.js` file.
306
+
Look into [`src/week1/day4-5`](src/week1/day4-5) in there there're some `js` files. Those 2 are `Node.js` apps, they don't work as you would expect from any other `.js` file.
288
307
You will need to use the command line:
289
308
```
290
309
luca.sartori@AR-IT12688:~/bootcamps/ui$
@@ -319,48 +338,195 @@ Don't be afraid to Google stuff, no developer remembers everything
319
338
→ [index](#index)
320
339
321
340
# Week 2: TypeScript and Angular 101
341
+
So, here we are. This is the first step into a whole new world. It doesn't matter if it's [Angular](https://angular.io/), [React](https://reactjs.org/), [Vue](https://vuejs.org/) or any `Js` framework. The latest generation of those tools makes the whole development process a breeze.
342
+
Welcome to the SPA world.
322
343
323
-
### Reading:
344
+

324
345
325
-
## Day 6:
346
+
Here at Globant we are technology agnostic, every developer is welcomed to study anything he wants. However we do recommend from a maturity and scalabilty points of view `Angular` or `React`.
326
347
327
-
### Exercise:
348
+
This Bootcamp will be made around `Angular` that does not mean that you should stop there, if you want to dig into `React` please do, it'll help you in the future.
328
349
329
-
## Day 7: Unit Testing
350
+
**SO**... going back to our business: **`WEEK 2`** - Beginning our project.
330
351
331
-
### Reading:
352
+
##Day 6: TypeScript 101
332
353
354
+
Let's start with [TypeScript](http://www.typescriptlang.org/), basically a superset of `Js`, with some advantages
355
+
1. Types
356
+
```
357
+
var number: number = 1;
358
+
var word: string = "1";
333
359
334
-
### Exercise:
360
+
return number === word;
361
+
// IS NOT THE SAME
362
+
363
+
number = word;
364
+
// CAN'T BE DONE, DIFFERENT TYPES
365
+
```
366
+
2. Intellisense
367
+
368
+

369
+
370
+
3. Generics - generic code for any type
371
+
```
372
+
class Greeter<T> {
373
+
greeting: T;
374
+
constructor(message: T) {
375
+
this.greeting = message;
376
+
}
377
+
greet() {
378
+
return this.greeting;
379
+
}
380
+
}
381
+
382
+
let greeter = new Greeter<string>("Hello, world");
383
+
384
+
let button = document.createElement('button');
385
+
button.textContent = "Say Hello";
386
+
button.onclick = function() {
387
+
alert(greeter.greet());
388
+
}
389
+
390
+
document.body.appendChild(button);
391
+
```
392
+
4. Transpilation - write in Ts, get ES6, ES5, ES4, etc...
393
+

394
+
[_Taken from Ts Playground_](http://www.typescriptlang.org/play/index.html)
395
+
396
+
Relax, you can always keep writing Js with TypeScript
397
+
398
+
And there's more and more... but that's for you to read:
335
399
400
+
### Reading:
401
+
-[TypeScript in 5 minutes](http://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html)
There is no excercise section on these two days because as this is a superset of `Js` you already know how it works. Take them as free days so you can digest all that new info about `Ts` specific features.
420
+
421
+
All `Ts` code will be evaluated with `Angular` as that's the language it uses.
422
+
339
423
340
-
## Day 8, 9 and 10:
424
+
## Day 8, 9 and 10: Angular 101
425
+
So yes, here we are, `Angular`. The **ONE** framework (as they say) you may know it for it's previous generation, the highly important and famous _angular.js_.
426
+
427
+
_But as they say... water under the bridge._
428
+
429
+
`Angular` is a new framework, a new codebase and **A LOT** of new features. The team wanted _so bad_ to emphasize the _new_ part that the ditched the `.js` part of the name (commonly used on Js frameworks) and they adopted [_semver_](http://semver.org/).
430
+
431
+
The current version is 5.0, but we will focus on version 4.x as this is more mature and stable and most of the features of 5.0 are not difficult to learn after picking up 4.x
The exercise for the week, is simple. We want you to be friends with `Angular`, so what's best than talking to each other?
443
+
444
+
You will do the `Tour of Heroes App` featured in the intro above. For that you'll have to follow the instructions on the page. However, as we want you to make the code, not copy/paste it there's a catch.
445
+
446
+
_You will need to make a commit after every step, each one with a difference of at least 20 minutes. That way we can **at least try** to believe that you typed the code_
447
+
448
+
Keep in mind:
449
+
1. The app must be under [src/week2](src/week2)
450
+
2. You will need to install Angular CLI
451
+
3. You are expected to follow `Angular`'s code standards
452
+
4. Make a personal touch, you should be listed as a hero (cool powers only :grimacing:)
453
+
347
454
→ [index](#index)
348
455
349
456
# Week 3: Angular 201
457
+
Things are getting serious, are you ready to dive deep into `Angular`'s architechture?
458
+
459
+

460
+
461
+
You will learn about the fundamentals, the good ways, the more performant and powerful approaches.
So... you've got your `Angular` going, you read a **LOT** of stuff last week, you started a SPA. So... What's next?
491
+
492
+

493
+
494
+
There're still a lot of stuff to read, some of them really work better under specific conditions or requirements. Remember:
495
+
496
+
_KEEP IT SIMPLE_
497
+
498
+
If there's a more advanced or complicated way to get to a solution it doesn't always mean that's the better approach.
499
+
500
+
With that in mind, here are some more advanced _(or not, this **whole** crash course was made by a bored developer on a few days span)_ features that every one should know, and at least being able to explain them.
0 commit comments