Angularjs architecture

22
AngularJS Architecture Michael He

Transcript of Angularjs architecture

Page 1: Angularjs architecture

AngularJS ArchitectureMichael He

Page 2: Angularjs architecture

Good Architecture

• Between each other has good interface design.

• Very easy to understand the function.

• You can add more to make even bigger system.

• After having rule, I never worried about the compatibility.

• Visualisable, it’s easiest way for human to understand.

Page 3: Angularjs architecture

Actually, Most of the situation

• What shall I put my code? (C)

• How to understand this module? (R)

• How can I modify this part? (U)

• How can I remove this function? (D)

Page 4: Angularjs architecture

How to do the architecture

Page 5: Angularjs architecture

Look at what we need

Page 6: Angularjs architecture

Look at what we have

Page 7: Angularjs architecture

Make the decision about what we can do.

Page 8: Angularjs architecture

Let check we have in the AngularJS for Architect

Page 9: Angularjs architecture

1. Config (Blueprint)

Define everything for the system.

Page 10: Angularjs architecture

2. routing system (Map)

Root

Spot

TripDay

Help you find the place you want to go.

Page 11: Angularjs architecture

3. Page (Room)

Define how the room look like, How many things in there (Template) How the room functioning (Controller)

Page 12: Angularjs architecture

4. Directive (Component)

Define how the component look like (Template) What’s the function of it. (Controller)

Page 13: Angularjs architecture

5. Service (Company or GOV)

Service Name Service Content

TV service Provide TV program

Internet service Provide Internet

Gas service Provide Gas

… …

Page 14: Angularjs architecture

6. Filter(Decorates)

Make the room(page) looks better, hide those ugly stuff. View Helpers.

Page 15: Angularjs architecture

7. Event (Phone call)

Most useful way to communicate between Components, without dependency.

Open Internet >

< OK, Done Sir

Page 16: Angularjs architecture

8. Model?• In AngularJS there is no model.

• Model in ROR, just a class mapped data in database.

• In front end side, model will be mapping the data from JSON to object to a Class.

• I don’t like ngResource to mapping the API path only, when you Get or Post data you won’t have a callback to be able to process it.

Page 17: Angularjs architecture

In the Real Project

Page 18: Angularjs architecture

/trips

/new

ItinerarySpot ListSearch Box

Routing

Page (Template + C

ontroller)

Directive

Service

Itinerary Data Sharing

Spot Searching

Itinerary Saving

Filter

Message

Message

Recenter

Add Spot to Itinerary

Talk

Page 19: Angularjs architecture

ItinerarySpot ListSearch Box

Page (Template + C

ontroller)

Sharing Data Between them

• Send Message by event.

• Use Service, it’s Singleton so you need to clean the data manually. (Tip: scope $destroy)

Page 20: Angularjs architecture

File Structure• Principle: You can find your file very fast.

• /trips/new/app/modules/trips/controllers/new.js.coffee

• Spot list panel/app/modules/trips/directives/spot_list_panel.js.coffee

• Trip Manager (manager we say it used for data sharing)/app/services/trip_manager.js.coffee

• UI-Router Config /app/configs/routes.js.coffee

Page 21: Angularjs architecture

We are not using• Angular modularization

(It’s good way to force developer to think about the module independent. But it’s much more complicated many situations. For small or middle project no need to use it.)

• require.js(we use assets pipeline to put all file in to one, super simple, no need to manage the complicated loading dependency.)

• Pure Javascript(We use coffeescript to avoid many javascript traps, also much simpler and smaller.)

Page 22: Angularjs architecture

More?Please go to http://blog.memoryforcer.com