Engineering Complex Web-Apps using Angular and RequireJS
Submitted by kapil verma (@kapv89) on Tuesday, 24 December 2013
To explore building complex web-applications using AngularJS and RequireJS, and demonstrate how to use angular as a library(the way its meant to be used) and not a framework (which it is not).
AngularJS has often been called a "toolkit", or a "library" by many experienced JS developers. Even its creators have said that it is a library meant to fit into your framework. However it is often treated by developers new to it as a framework in itself. This approach works fine for small or even intermediate complexity projects. But as the complexity of the project at hand grows, things start getting out of hand, and after a certain size, the codebase simply turns into a mess.
RequireJS is the defacto AMD solution for front-end development. Its most visible benefits are basically allowing developers to not care about including another "script" tag in the html, providing proper dependency management, and tools to build and minify your projects.
By combining RequireJS and AngularJS, you can structure your angular applications in a modular manner, where each UI component(like the CRUD of Users, for example) can exist in its own module. You can easily add any number of modules you need, and manage module registration with Angular at module-level, and can maintain different levels of complexity inside each module.
We'll be exploring a complex and decently sized admin panel like app made specifically for the purpose of this talk. We'll look into how it has been structured and will try to understand the decisions that went behind that structuring.
I am Kapil Verma, here is my bio from laracon.eu (laravel php framework conference website)
"Kapil is a software engineer that specializes in application architecture design. He has significant experience in designing software that is able to quickly react to vague and constantly evolving business requirements. He is currently involved as a project-manager, consultant and developer at multiple startups in Delhi."
You can check out my talk at LaraconEU here : https://www.youtube.com/watch?v=DEj1Q0N9o0w
Currently, I am involved at cofounder level with two startups, Musejam and Blazingtrail. For Both of them I have developed/am developing big complex angular applications, and small plug and play types applications which are either directly being used by test users, or administrators. (The front-end for musejam, which is used by beta users, is a pretty unconventional JS application in itself, which combines a pjax-style-app and a media-player, and both of these applications communicate with each other using events).
I have nailed down client side architecture with angular to such a level that if you understand the patterns, then most client-side implementations become trivial. The setup also leaves space for the developer to tackle non-trivial complex UI interactions a they should be.