Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

The blogosphere has a number of articles on the topic of AngularJS app structuring guidelines such as these (and others):

However, one scenario I have yet to come across for guidelines and best practices is the case where you have a large web application containing multiple "mini-spa" apps, and the mini-spa apps all share a certain amount of code.

I am not referring to the case of trying to have multiple ng-app declarations on the same page; rather, I mean different sections of a large site that have their own, unique ng-app declaration.

As Scott Allen writes in his OdeToCode blog:

One scenario I haven't found addressed very well is the scenario where multiple apps exist in the same greater web application and require some shared code on the client.

Are there any recommended approaches to take, pitfalls to avoid, or good sample structures of this scenario that you can point to?

share|improve this question
1  
What have you decided to go with? I'm in the same position where I want isolation of the application to be broken into a number of smaller self contained apps –  Stephen Aug 4 at 21:30

2 Answers 2

Single Page Apps (SPAs) aren't really intended to be used the way that you're suggesting with a really large application and multiple mini-SPAs within the main one. The biggest problem will be page load times as everything has to be loaded up front.

One way to tackle this is using a navigation page that will take you to individual SPAs. The navigation page will be fairly lightweight, and then you'll only load one SPA at a time based upon what was selected. You can provide a link bar with navigation links within each of your SPAs so users don't always have to go back to the navigation page when they need to go to another area.

Using this approach can create some challenges with persisting information across SPAs. But we're talking about something SPAs weren't intended to do. There are some frameworks that can help with client side data persistence. Breeze is the first that comes to mind, but there are others.


Regarding layout - several Programmers questions address large project layout, depending upon your particular needs. I came across this one and this one. There is nothing magical about SPAs that would affect your application layout beyond what is already answered in those questions.

That said, there are differing approaches that work best for different projects. I would recommend sticking with the base layout as provided by the angular seed project. Create separate folders from the provided ones for your custom packages and source code. And within your source folder, use a project layout that makes sense for your needs.

share|improve this answer

If your application needs multiple ng-app declarations on the same page, then you need to manually bootstrap AngularJS module, by injecting a module name as shown below :

angular.element(document).ready(function() {
  angular.bootstrap(document, ['TodoApp']);
});

This plunker elaborates on how we could manually bootstrap AngularJS.

share|improve this answer
2  
mg1075 was pretty clear that this is not the case: "I am not referring to the case of trying to have multiple ng-app declarations on the same page; rather, I mean different sections of a large site that have their own, unique ng-app declaration." –  cincodenada Jul 22 at 21:06

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.