| Introduction |
|
1 | (6) |
| I: Getting Started |
|
|
1 Introducing the Node.js-to-Angular Stack |
|
|
7 | (8) |
|
Understanding the Basic Web Development Framework |
|
|
7 | (4) |
|
|
|
8 | (1) |
|
|
|
8 | (2) |
|
|
|
10 | (1) |
|
|
|
10 | (1) |
|
Understanding the Node.js-to-Angular Stack Components |
|
|
11 | (3) |
|
|
|
11 | (1) |
|
|
|
12 | (1) |
|
|
|
13 | (1) |
|
|
|
13 | (1) |
|
|
|
14 | (1) |
|
|
|
14 | (1) |
|
|
|
15 | (24) |
|
|
|
15 | (1) |
|
Understanding JavaScript Data Types |
|
|
16 | (1) |
|
|
|
17 | (4) |
|
|
|
17 | (1) |
|
|
|
18 | (1) |
|
Applying Comparison and Conditional Operators |
|
|
18 | (3) |
|
|
|
21 | (3) |
|
|
|
21 | (1) |
|
|
|
22 | (1) |
|
|
|
22 | (1) |
|
|
|
23 | (1) |
|
|
|
23 | (1) |
|
|
|
24 | (2) |
|
|
|
24 | (1) |
|
Passing Variables to Functions |
|
|
24 | (1) |
|
Returning Values from Functions |
|
|
25 | (1) |
|
Using Anonymous Functions |
|
|
25 | (1) |
|
Understanding Variable Scope |
|
|
26 | (1) |
|
|
|
27 | (2) |
|
|
|
27 | (1) |
|
Creating Custom-Defined Objects |
|
|
28 | (1) |
|
Using a Prototyping Object Pattern |
|
|
29 | (1) |
|
|
|
29 | (3) |
|
|
|
31 | (1) |
|
Searching a String for a Substring |
|
|
31 | (1) |
|
Replacing a Word in a String |
|
|
31 | (1) |
|
Splitting a String into an Array |
|
|
32 | (1) |
|
|
|
32 | (3) |
|
|
|
33 | (1) |
|
|
|
34 | (1) |
|
Converting an Array into a String |
|
|
34 | (1) |
|
Checking Whether an Array Contains an Item |
|
|
34 | (1) |
|
Adding and Removing Items to Arrays |
|
|
34 | (1) |
|
|
|
35 | (2) |
|
|
|
35 | (1) |
|
|
|
36 | (1) |
|
|
|
36 | (1) |
|
|
|
37 | (1) |
|
|
|
37 | (2) |
| II: Learning Node.js |
|
|
3 Getting Started with Node.js |
|
|
39 | (16) |
|
|
|
39 | (3) |
|
|
|
40 | (1) |
|
What Is Node.js Used For? |
|
|
40 | (1) |
|
What Does Node.js Come With? |
|
|
40 | (2) |
|
|
|
42 | (1) |
|
Looking at the Node.js Install Location |
|
|
42 | (1) |
|
Verify Node.js Executables |
|
|
42 | (1) |
|
|
|
43 | (1) |
|
Working with Node Packages |
|
|
43 | (5) |
|
What Are Node Packaged Modules? |
|
|
43 | (1) |
|
Understanding the Node Package Registry |
|
|
43 | (1) |
|
Using the Node Package Manager |
|
|
44 | (1) |
|
Searching for Node Package Modules |
|
|
45 | (1) |
|
Installing Node Packaged Modules |
|
|
46 | (1) |
|
|
|
47 | (1) |
|
Creating a Node.js Application |
|
|
48 | (5) |
|
Creating a Node.js Packaged Module |
|
|
49 | (1) |
|
Publishing a Node.js Packaged Module to the NPM Registry |
|
|
50 | (2) |
|
Using a Node.js Packaged Module in a Node.js Application |
|
|
52 | (1) |
|
Writing Data to the Console |
|
|
53 | (1) |
|
|
|
54 | (1) |
|
|
|
54 | (1) |
|
4 Using Events, Listeners, Timers, and Callbacks in Node.js |
|
|
55 | (18) |
|
Understanding the Node.js Event Model |
|
|
55 | (4) |
|
Comparing Event Callbacks and Threaded Models |
|
|
55 | (2) |
|
|
|
57 | (1) |
|
|
|
57 | (2) |
|
Adding Work to the Event Queue |
|
|
59 | (8) |
|
|
|
60 | (3) |
|
Using nextTick to Schedule Work |
|
|
63 | (1) |
|
Implementing Event Emitters and Listeners |
|
|
64 | (3) |
|
|
|
67 | (4) |
|
Passing Additional Parameters to Callbacks |
|
|
67 | (1) |
|
Implementing Closure in Callbacks |
|
|
68 | (2) |
|
|
|
70 | (1) |
|
|
|
71 | (1) |
|
|
|
71 | (2) |
|
5 Handling Data I/O in Node.js |
|
|
73 | (22) |
|
|
|
73 | (1) |
|
Converting JSON to JavaScript Objects |
|
|
74 | (1) |
|
Converting JavaScript Objects to JSON |
|
|
74 | (1) |
|
Using the Buffer Module to Buffer Data |
|
|
74 | (7) |
|
Understanding Buffered Data |
|
|
75 | (1) |
|
|
|
75 | (1) |
|
|
|
76 | (1) |
|
|
|
77 | (1) |
|
Determining Buffer Length |
|
|
78 | (1) |
|
|
|
79 | (1) |
|
|
|
80 | (1) |
|
|
|
81 | (1) |
|
Using the Stream Module to Stream Data |
|
|
81 | (10) |
|
|
|
82 | (2) |
|
|
|
84 | (2) |
|
|
|
86 | (2) |
|
|
|
88 | (1) |
|
Piping Readable Streams to Writable Streams |
|
|
89 | (2) |
|
Compressing and Decompressing Data with Zlib |
|
|
91 | (2) |
|
Compressing and Decompressing Buffers |
|
|
91 | (1) |
|
Compressing/Decompressing Streams |
|
|
92 | (1) |
|
|
|
93 | (1) |
|
|
|
93 | (2) |
|
6 Accessing the File System from Node.js |
|
|
95 | (20) |
|
Synchronous Versus Asynchronous File System Calls |
|
|
95 | (1) |
|
Opening and Closing Files |
|
|
96 | (1) |
|
|
|
97 | (5) |
|
|
|
98 | (1) |
|
|
|
98 | (1) |
|
Asynchronous File Writing |
|
|
99 | (2) |
|
|
|
101 | (1) |
|
|
|
102 | (4) |
|
|
|
102 | (1) |
|
|
|
103 | (1) |
|
Asynchronous File Reading |
|
|
104 | (1) |
|
|
|
105 | (1) |
|
|
|
106 | (7) |
|
|
|
106 | (1) |
|
|
|
107 | (1) |
|
|
|
108 | (2) |
|
|
|
110 | (1) |
|
|
|
110 | (1) |
|
Making and Removing Directories |
|
|
111 | (1) |
|
Renaming Files and Directories |
|
|
112 | (1) |
|
Watching for File Changes |
|
|
112 | (1) |
|
|
|
113 | (1) |
|
|
|
113 | (2) |
|
7 Implementing HTTP Services in Node.js |
|
|
115 | (24) |
|
|
|
115 | (2) |
|
Understanding the URL Object |
|
|
116 | (1) |
|
Resolving the URL Components |
|
|
117 | (1) |
|
Processing Query Strings and Form Parameters |
|
|
117 | (1) |
|
Understanding Request, Response, and Server Objects |
|
|
118 | (7) |
|
The http.ClientRequest Object |
|
|
118 | (3) |
|
The http.ServerResponse Object |
|
|
121 | (1) |
|
The http.IncomingMessage Object |
|
|
122 | (1) |
|
|
|
123 | (2) |
|
Implementing HTTP Clients and Servers in Node.js |
|
|
125 | (9) |
|
|
|
125 | (2) |
|
Implementing Dynamic GET Servers |
|
|
127 | (3) |
|
Implementing POST Servers |
|
|
130 | (2) |
|
Interacting with External Sources |
|
|
132 | (2) |
|
Implementing HTTPS Servers and Clients |
|
|
134 | (3) |
|
|
|
135 | (2) |
|
|
|
137 | (1) |
|
|
|
137 | (1) |
|
|
|
137 | (2) |
|
8 Implementing Socket Services in Node.js |
|
|
139 | (20) |
|
Understanding Network Sockets |
|
|
139 | (1) |
|
Understanding TPC Server and Socket Objects |
|
|
140 | (7) |
|
|
|
140 | (4) |
|
|
|
144 | (3) |
|
Implementing TCP Socket Servers and Clients |
|
|
147 | (5) |
|
Implementing a TCP Socket Client |
|
|
147 | (3) |
|
Implementing a TCP Socket Server |
|
|
150 | (2) |
|
Implementing TLS Servers and Clients |
|
|
152 | (5) |
|
Creating a TLS Socket Client |
|
|
153 | (1) |
|
Creating a TLS Socket Server |
|
|
154 | (3) |
|
|
|
157 | (1) |
|
|
|
157 | (2) |
|
9 Scaling Applications Using Multiple Processors in Node.js |
|
|
159 | (22) |
|
Understanding the Process Module |
|
|
159 | (5) |
|
Understanding Process I/O Pipes |
|
|
159 | (1) |
|
Understanding Process Signals |
|
|
160 | (1) |
|
Controlling Process Execution with the process Module |
|
|
161 | (1) |
|
Getting Information from the process Module |
|
|
161 | (3) |
|
Implementing Child Processes |
|
|
164 | (10) |
|
Understanding the ChildProcess Object |
|
|
164 | (2) |
|
Executing a System Command on Another Process Using exec ( ) |
|
|
166 | (2) |
|
Executing an Executable File on Another Process Using execFile () |
|
|
168 | (1) |
|
Spawning a Process in Another Node.js Instance Using spawn ( ) |
|
|
169 | (2) |
|
|
|
171 | (3) |
|
Implementing Process Clusters |
|
|
174 | (5) |
|
|
|
174 | (1) |
|
Understanding the Worker Object |
|
|
175 | (1) |
|
Implementing an HTTP Cluster |
|
|
176 | (3) |
|
|
|
179 | (1) |
|
|
|
179 | (2) |
|
10 Using Additional Node.js Modules |
|
|
181 | (10) |
|
|
|
181 | (2) |
|
|
|
183 | (3) |
|
|
|
183 | (1) |
|
|
|
184 | (1) |
|
Converting JavaScript Objects to Strings |
|
|
184 | (1) |
|
Inheriting Functionality from Other Objects |
|
|
185 | (1) |
|
|
|
186 | (2) |
|
|
|
188 | (2) |
|
Other Node Modules and Objects |
|
|
190 | (1) |
|
|
|
190 | (1) |
|
|
|
190 | (1) |
|
|
|
|
11 Understanding NoSQL and MongoDB |
|
|
191 | (10) |
|
|
|
191 | (1) |
|
|
|
192 | (1) |
|
Understanding Collections |
|
|
192 | (1) |
|
|
|
192 | (1) |
|
|
|
193 | (1) |
|
|
|
194 | (6) |
|
Normalizing Data with Document References |
|
|
195 | (1) |
|
Denormalizing Data with Embedded Documents |
|
|
196 | (1) |
|
|
|
197 | (1) |
|
Understanding Atomic Write Operations |
|
|
198 | (1) |
|
Considering Document Growth |
|
|
198 | (1) |
|
Identifying Indexing, Sharding, and Replication Opportunities |
|
|
198 | (1) |
|
Large Collections Versus Large Numbers of Collections |
|
|
199 | (1) |
|
Deciding on Data Life Cycles |
|
|
199 | (1) |
|
Considering Data Usability and Performance |
|
|
200 | (1) |
|
|
|
200 | (1) |
|
|
|
200 | (1) |
|
12 Getting Started with MongoDB |
|
|
201 | (20) |
|
Building the MongoDB Environment |
|
|
201 | (5) |
|
|
|
201 | (1) |
|
|
|
202 | (1) |
|
|
|
203 | (1) |
|
Accessing MongoDB from the Shell Client |
|
|
203 | (3) |
|
Administering User Accounts |
|
|
206 | (3) |
|
|
|
206 | (1) |
|
|
|
207 | (2) |
|
|
|
209 | (1) |
|
Configuring Access Control |
|
|
209 | (2) |
|
Creating a User Administrator Account |
|
|
209 | (1) |
|
Turning on Authentication |
|
|
210 | (1) |
|
Creating a Database Administrator Account |
|
|
211 | (1) |
|
|
|
211 | (3) |
|
Displaying a List of Databases |
|
|
211 | (1) |
|
Changing the Current Database |
|
|
212 | (1) |
|
|
|
212 | (1) |
|
|
|
212 | (1) |
|
|
|
213 | (1) |
|
|
|
214 | (5) |
|
Displaying a List of Collections in a Database |
|
|
214 | (1) |
|
|
|
214 | (1) |
|
|
|
215 | (1) |
|
Finding Documents in a Collection |
|
|
216 | (1) |
|
Adding Documents to a Collection |
|
|
217 | (1) |
|
Deleting Documents in a Collection |
|
|
217 | (1) |
|
Updating Documents in a Collection |
|
|
218 | (1) |
|
|
|
219 | (1) |
|
|
|
219 | (2) |
|
13 Getting Started with MongoDB and Node.js |
|
|
221 | (20) |
|
Adding the MongoDB Driver to Node.js |
|
|
221 | (1) |
|
Connecting to MongoDB from Node.js |
|
|
222 | (4) |
|
Understanding the Write Concern |
|
|
222 | (1) |
|
Connecting to MongoDB from Node.js Using the MongoClient Object |
|
|
223 | (3) |
|
Understanding the Objects Used in the MongoDB Node.js Driver |
|
|
226 | (7) |
|
Understanding the Db Object |
|
|
227 | (2) |
|
Understanding the Admin Object |
|
|
229 | (1) |
|
Understanding the Collection Object |
|
|
229 | (3) |
|
Understanding the Cursor Object |
|
|
232 | (1) |
|
Accessing and Manipulating Databases |
|
|
233 | (4) |
|
|
|
233 | (1) |
|
|
|
234 | (1) |
|
|
|
234 | (1) |
|
Creating, Listing, and Deleting Databases Example |
|
|
234 | (2) |
|
Getting the Status of the MongoDB Server |
|
|
236 | (1) |
|
Accessing and Manipulating Collections |
|
|
237 | (3) |
|
|
|
237 | (1) |
|
|
|
237 | (1) |
|
|
|
238 | (1) |
|
Collection Creation, Listing, and Deleting Example |
|
|
238 | (1) |
|
Getting Collection Information |
|
|
239 | (1) |
|
|
|
240 | (1) |
|
|
|
240 | (1) |
|
14 Manipulating MongoDB Documents from Node.js |
|
|
241 | (20) |
|
Understanding Database Change Options |
|
|
241 | (1) |
|
Understanding Database Update Operators |
|
|
242 | (2) |
|
Adding Documents to a Collection |
|
|
244 | (2) |
|
Getting Documents from a Collection |
|
|
246 | (2) |
|
Updating Documents in a Collection |
|
|
248 | (2) |
|
Atomically Modifying Documents in a Collection |
|
|
250 | (2) |
|
Saving Documents in a Collection |
|
|
252 | (1) |
|
Upserting Documents in Collection |
|
|
253 | (2) |
|
Deleting Documents from a Collection |
|
|
255 | (2) |
|
Removing a Single Document from a Collection |
|
|
257 | (2) |
|
|
|
259 | (1) |
|
|
|
259 | (2) |
|
15 Accessing MongoDB from Node.js |
|
|
261 | (30) |
|
|
|
261 | (1) |
|
Understanding Query Objects |
|
|
262 | (2) |
|
Understanding Query Options Objects |
|
|
264 | (1) |
|
Finding Specific Sets of Documents |
|
|
265 | (3) |
|
|
|
268 | (2) |
|
|
|
270 | (5) |
|
|
|
270 | (1) |
|
Limiting Fields Returned in Objects |
|
|
271 | (2) |
|
|
|
273 | (2) |
|
|
|
275 | (1) |
|
Finding Distinct Field Values |
|
|
276 | (1) |
|
|
|
277 | (5) |
|
Applying MapReduce by Aggregating Results |
|
|
282 | (7) |
|
Understanding the aggregate ( ) Method |
|
|
283 | (1) |
|
Using Aggregation Framework Operators |
|
|
283 | (2) |
|
Implementing Aggregation Expression Operators |
|
|
285 | (2) |
|
|
|
287 | (2) |
|
|
|
289 | (1) |
|
|
|
289 | (2) |
|
16 Using Mongoose for Structured Schema and Validation |
|
|
291 | (36) |
|
|
|
291 | (1) |
|
|
|
292 | (1) |
|
Connecting to a MongoDB Database Using Mongoose |
|
|
292 | (2) |
|
|
|
294 | (4) |
|
|
|
294 | (1) |
|
Creating a Schema Definition |
|
|
294 | (1) |
|
Adding Indexes to a Schema |
|
|
295 | (1) |
|
Implementing Unique Fields |
|
|
296 | (1) |
|
|
|
296 | (1) |
|
Adding Methods to the Schema Model |
|
|
296 | (1) |
|
Implementing the Schema on the Words Database |
|
|
297 | (1) |
|
|
|
298 | (1) |
|
Understanding the Query Object |
|
|
298 | (6) |
|
Setting the Query Database Operation |
|
|
299 | (2) |
|
Setting the Query Database Operation Options |
|
|
301 | (1) |
|
Setting the Query Operators |
|
|
302 | (2) |
|
Understanding the Document Object |
|
|
304 | (1) |
|
Finding Documents Using Mongoose |
|
|
305 | (2) |
|
Adding Documents Using Mongoose |
|
|
307 | (2) |
|
Updating Documents Using Mongoose |
|
|
309 | (5) |
|
|
|
310 | (1) |
|
Updating a Single Document |
|
|
311 | (2) |
|
Updating Multiple Documents |
|
|
313 | (1) |
|
Removing Documents Using Mongoose |
|
|
314 | (3) |
|
Removing a Single Document |
|
|
314 | (1) |
|
Removing Multiple Documents |
|
|
315 | (2) |
|
Aggregating Documents Using Mongoose |
|
|
317 | (3) |
|
Using the Validation Framework |
|
|
320 | (2) |
|
Implementing Middleware Functions |
|
|
322 | (3) |
|
|
|
325 | (1) |
|
|
|
325 | (2) |
|
17 Advanced MongoDB Concepts |
|
|
327 | (16) |
|
|
|
327 | (3) |
|
|
|
330 | (1) |
|
|
|
330 | (4) |
|
|
|
332 | (1) |
|
|
|
333 | (1) |
|
|
|
334 | (7) |
|
|
|
335 | (1) |
|
|
|
336 | (1) |
|
Selecting a Partitioning Method |
|
|
337 | (1) |
|
Deploying a Sharded MongoDB Cluster |
|
|
338 | (3) |
|
Repairing a MongoDB Database |
|
|
341 | (1) |
|
|
|
341 | (1) |
|
|
|
342 | (1) |
|
|
|
342 | (1) |
| IV: Using Express to Make Life Easier |
|
|
18 Implementing Express in Node.js |
|
|
343 | (24) |
|
Getting Started with Express |
|
|
343 | (2) |
|
Configuring Express Settings |
|
|
343 | (2) |
|
Starting the Express Server |
|
|
345 | (1) |
|
|
|
345 | (5) |
|
|
|
346 | (1) |
|
Applying Parameters in Routes |
|
|
347 | (3) |
|
|
|
350 | (2) |
|
|
|
352 | (8) |
|
|
|
352 | (1) |
|
|
|
353 | (1) |
|
|
|
353 | (2) |
|
|
|
355 | (1) |
|
|
|
356 | (3) |
|
Sending a Download Response |
|
|
359 | (1) |
|
|
|
359 | (1) |
|
Implementing a Template Engine |
|
|
360 | (5) |
|
|
|
360 | (1) |
|
|
|
361 | (1) |
|
|
|
361 | (2) |
|
Rendering Templates in a Response |
|
|
363 | (2) |
|
|
|
365 | (1) |
|
|
|
365 | (2) |
|
19 Implementing Express Middleware |
|
|
367 | (16) |
|
|
|
367 | (2) |
|
Assigning Middleware Globally to a Path |
|
|
368 | (1) |
|
Assigning Middleware to a Single Route |
|
|
368 | (1) |
|
Adding Multiple Middleware Functions |
|
|
369 | (1) |
|
Using the query Middleware |
|
|
369 | (1) |
|
|
|
369 | (2) |
|
|
|
371 | (2) |
|
Sending and Receiving Cookies |
|
|
373 | (1) |
|
|
|
374 | (1) |
|
Applying Basic HTTP Authentication |
|
|
375 | (2) |
|
Implementing Session Authentication |
|
|
377 | (3) |
|
Creating Custom Middleware |
|
|
380 | (1) |
|
|
|
381 | (1) |
|
|
|
382 | (1) |
| V: Learning Angular |
|
|
20 Jumping into TypeScript |
|
|
383 | (8) |
|
Learning the Different Types |
|
|
383 | (2) |
|
|
|
385 | (1) |
|
|
|
386 | (1) |
|
|
|
387 | (1) |
|
|
|
387 | (1) |
|
|
|
388 | (1) |
|
|
|
389 | (1) |
|
|
|
389 | (2) |
|
21 Getting Started with Angular |
|
|
391 | (12) |
|
|
|
391 | (1) |
|
|
|
391 | (2) |
|
|
|
392 | (1) |
|
|
|
392 | (1) |
|
|
|
392 | (1) |
|
|
|
392 | (1) |
|
|
|
393 | (1) |
|
Separation of Responsibilities |
|
|
393 | (1) |
|
Adding Angular to Your Environment |
|
|
393 | (1) |
|
|
|
394 | (1) |
|
Generating Content with the CLI |
|
|
394 | (1) |
|
Creating a Basic Angular Application |
|
|
395 | (7) |
|
Creating Your First Angular App |
|
|
396 | (1) |
|
Understanding and Using NgModule |
|
|
397 | (1) |
|
Creating the Angular Bootstrapper |
|
|
398 | (4) |
|
|
|
402 | (1) |
|
|
|
402 | (1) |
|
|
|
403 | (12) |
|
|
|
403 | (1) |
|
|
|
404 | (1) |
|
|
|
404 | (3) |
|
Using Inline CSS and HTML in Angular Applications |
|
|
405 | (2) |
|
|
|
407 | (1) |
|
|
|
408 | (2) |
|
|
|
410 | (4) |
|
Building a Nested Component with Dependency Injection |
|
|
410 | (2) |
|
Passing in Data with Dependency Injection |
|
|
412 | (1) |
|
Creating an Angular Application that Uses Inputs |
|
|
413 | (1) |
|
|
|
414 | (1) |
|
|
|
414 | (1) |
|
|
|
415 | (14) |
|
|
|
415 | (7) |
|
|
|
416 | (2) |
|
Interacting with the Component Class in Expressions |
|
|
418 | (1) |
|
Using TypeScript in Angular Expressions |
|
|
419 | (3) |
|
|
|
422 | (4) |
|
|
|
424 | (2) |
|
|
|
426 | (2) |
|
|
|
427 | (1) |
|
|
|
428 | (1) |
|
|
|
428 | (1) |
|
|
|
429 | (12) |
|
Understanding Data Binding |
|
|
429 | (11) |
|
|
|
430 | (1) |
|
|
|
431 | (2) |
|
|
|
433 | (1) |
|
|
|
433 | (2) |
|
|
|
435 | (1) |
|
|
|
436 | (3) |
|
|
|
439 | (1) |
|
|
|
440 | (1) |
|
|
|
440 | (1) |
|
|
|
441 | (8) |
|
|
|
441 | (1) |
|
Using Built-in Directives |
|
|
441 | (7) |
|
|
|
442 | (1) |
|
|
|
442 | (3) |
|
|
|
445 | (3) |
|
|
|
448 | (1) |
|
|
|
448 | (1) |
| VI: Advanced Angular |
|
|
|
|
449 | (8) |
|
Creating a Custom Attribute Directive |
|
|
449 | (3) |
|
Creating a Custom Directive with a Component |
|
|
452 | (4) |
|
|
|
456 | (1) |
|
|
|
456 | (1) |
|
27 Events and Change Detection |
|
|
457 | (12) |
|
|
|
457 | (1) |
|
|
|
458 | (6) |
|
Emitting a Custom Event to the Parent Component Hierarchy |
|
|
458 | (1) |
|
Handling Custom Events with a Listener |
|
|
458 | (1) |
|
Implementing Custom Events in Nested Components |
|
|
458 | (3) |
|
Deleting Data in a Parent Component from a Child Component |
|
|
461 | (3) |
|
|
|
464 | (4) |
|
Creating an Observable Object |
|
|
464 | (1) |
|
Watching for Data Changes with Observables |
|
|
465 | (3) |
|
|
|
468 | (1) |
|
|
|
468 | (1) |
|
28 Implementing Angular Services in Web Applications |
|
|
469 | (34) |
|
Understanding Angular Services |
|
|
469 | (1) |
|
Using the Built-in Services |
|
|
469 | (1) |
|
Sending HTTP GET and PUT Requests with the http Service |
|
|
470 | (5) |
|
Configuring the HTTP Request |
|
|
471 | (1) |
|
Implementing the HTTP Response Callback Functions |
|
|
471 | (1) |
|
Implementing a Simple JSON File and Using the http Service to Access It |
|
|
472 | (3) |
|
Implementing a Simple Mock Server Using the http Service |
|
|
475 | (11) |
|
Implementing a Simple Mock Server and Using the http Service to Update Items on the Server |
|
|
481 | (5) |
|
Changing Views with the router Service |
|
|
486 | (2) |
|
|
|
488 | (1) |
|
Implementing a Simple Router |
|
|
488 | (4) |
|
Implementing a Router with a Navigation Bar |
|
|
492 | (5) |
|
Implementing a Router with Parameters |
|
|
497 | (4) |
|
|
|
501 | (1) |
|
|
|
501 | (2) |
|
29 Creating Your Own Custom Angular Services |
|
|
503 | (22) |
|
Integrating Custom Services into Angular Applications |
|
|
503 | (2) |
|
Adding an Angular Service to an Application |
|
|
504 | (1) |
|
Implementing a Simple Application that Uses a Constant Data Service |
|
|
505 | (1) |
|
Implementing a Data Transform Service |
|
|
506 | (4) |
|
Implementing a Variable Data Service |
|
|
510 | (5) |
|
Implementing a Service that Returns a Promise |
|
|
515 | (1) |
|
Implementing a Shared Service |
|
|
516 | (7) |
|
|
|
523 | (1) |
|
|
|
523 | (2) |
|
30 Having Fun with Angular |
|
|
525 | (24) |
|
Implementing an Angular Application that Uses the Animation Service |
|
|
525 | (5) |
|
Implementing an Angular Application that Zooms in on Images |
|
|
530 | (3) |
|
Implementing an Angular Application that Enables Drag and Drop |
|
|
533 | (6) |
|
Implementing a Star Rating Angular Component |
|
|
539 | (8) |
|
|
|
547 | (2) |
| Index |
|
549 | |