Talk AngularJS with the Experts – The Transcript

Share this article

Talk with the Experts this morning saw us chatting about the powerful AngularJS framework with SitePoint group developers Mal Curtis and Brad Barrow. The hour turned up a lot of resources, all of which I have compiled into a list below for those of you that don’t want to sift through the transcript. AngularJS in Action Angular-UI UI Router Demo Web Directions South Mgonto Restangular Learning Resources Building an app using directives and databinding Angular Yeoman Generator Misc Resources Angular announces Dart Angular Dart Mozilla’s Brick Storage module Web Directions videos Angular’s Google+ page Angular’s YouTube channel Google Groups If you missed the session because you didn’t know about it, make sure you sign up for notifications of future sessions here. Next week we’ll be talking about HTML Email with Nicole Merlin of Email Wizardry. That kicks off at 12:30pm PST on Wed 13 Nov and you can join the session here. For those of you that missed the talk and want to know what went down, you can read the full transcript here:

[22:05] <BradBarrow> AngularJS is one of many Javascript frameworks available at the moment. What sets it apart from the rest is it’s close integration with the DOM/HTML of your site
[22:06] <MalCurtis> I’d AngularJS has one of the highest learning curves of the frameworks out there, mainly because it does things a very different way.
[22:06] <MalCurtis> But the payoff is that once you’re up and running, it’s extremely powerful
[22:07] <BradBarrow> Exactly right MalCurtis, whilst other frameworks aim to provide a structure for your javascript, Angular seeks to use the power of javascript to make HTML more dynamic which is both groundbreaking and incredibly powerful
[22:07] <BradBarrow> Consider a button that, when pressed takes a value from a text field and uses it to display an alert message
[22:07] <HAWK> Is anyone using Angular currently?
[22:08] <BradBarrow> With Javascript/Jquery you’d need to write code to find the button, find the text field and find the message container…then you’d need code to listen to all of the events, to extract the values and insert them
[22:08] <Randyman5775> Mostly Jquery for me
[22:08] <BradBarrow> All of that code sits in a file quite far away from the markup it’s interacting with
[22:08] <Good> Just learning it and thinking how it could change the industry of web development
[22:08] <MalCurtis> For most sites, where you’re just adding in bits of dynamic content, Angular is not required
[22:09] <HAWK> If anyone has a question, now would be a good time to jump in.
[22:09] <MalCurtis> Angular is a great framework for SPA, Single Page Applications – so full client side apps
[22:09] <nanda> Why is it restricted to SPA only
[22:09] <Randyman5775> Is there any server side set-up?
[22:09] <MalCurtis> I’m not saying it’s restricted, I’m just saying it might be overkill for when you just need to add small bits of interactivity
[22:10] <MalCurtis> Randyman5775 no and yes
[22:10] <MalCurtis> No, in that it’s a full client side framework
[22:10] <BradBarrow> The main reason you’d want to use angular on SPA apps compared to full stack apps is that Angular wants to own routing
[22:10] <MalCurtis> Yes, in that if you want data – you’ve got to get it from somewhere
[22:10] <MalCurtis> but you can also look at using a ‘backed as a service’, such as Parse, Firebase, or (yup, I’m gonna say it) Azure
[22:11] <MalCurtis> where you interact with data over the wire, completely in their service
[22:11] <miked> Does Angular work with jQuery UI widgets?
[22:11] <BradBarrow> Angular wants to look at the browser’s url and decide which pages to render, so if you’re using it inside of something like Ruby on Rails, the two frameworks are going to contest for the use of the routing structure
[22:11] <MalCurtis> @miked You’ll find that often jQuery and Angular don’t work together
[22:11] <MalCurtis> They work in very different ways
[22:11] <nanda> So it is not advised to use Angular with a web framework then.
[22:11] <MalCurtis> But you’ll also find people who’ve solved the problem for you
[22:12] <MalCurtis> @nanda Angular IS a web framework
[22:12] <Good> And what about videogames? Do you know if anyone in the AngularJS team has any thoughts about opening AngularJS for easying HTML5 videogames as a game development framework?
[22:12] <miked> alternatives to the popular widgets like tabs etc.?
[22:12] <BradBarrow> @miked that being said, is a great project that’s pushing the boundaries when it comes to angular. They’ve implemented many popular ui tools in a true angular fashion.
[22:12] <MalCurtis> @Good, Game development is a whole other world, and not the problem Angular tries to solve
[22:12] <Good> Ok, thank you
[22:13] <MalCurtis> You could happily run a game site with angular
[22:13] <BradBarrow> @nanda I’ve used AngularJS in two Ruby on Rails projects and it’s possible, but the overhead can sometimes not feel worth it.
[22:13] <MalCurtis> But the actual game itself would need to use a proper game library
[22:13] <phil> What are your thoughts on Angular testing with mocks
[22:13] <phil> I have some custom directives that are reasonably complex
[22:13] <Good> How much would you charge for a SPA development now that we can use AngularJS and reduce ETAs?
[22:13] <bloopjs> What is your favorite site/example built with Angular?
[22:13] <phil> and the tests fall over quite a bit and require restarting.
[22:13] <MalCurtis> @Good How long is a piece of string?
[22:14] <nanda> What would be the disadvantages of using AngularJS instead of other server side frameworks?
[22:14] <phil> Is this a common experience (they work after the restart)
[22:14] <BradBarrow> @Good Alex Smith wrote a neat angular article that teaches you how to create a naughts and crosses game. It’s not a complicated game, but it shows off some of angular’s abilities
[22:14] <MalCurtis> @phil Complexity often is the cause of testing issues
[22:14] <MalCurtis> Reduce coupling, perhaps split your directive into multiple sub directives etc.
[22:15] <Good> BradBarrow, neat! I’ll give it a read
[22:15] <Good> seems interesting! thank you
[22:15] <MalCurtis> I generally find that if I’m having to stub / mock too much in a test, it means I probably need to rethink how it works
[22:15] <MalCurtis> and often it is highly coupled, not loosely coupled
[22:15] <pamelasue101> Hi everyone
[22:15] <BradBarrow> @phil I agree with Mal re testing. Ensure that your code is as modular and de-coupled as possible. Writing integration/acceptance tests can often help cover areas where unit testing get’s complicated.
[22:15] <Randyman5775> Can it be used along with something like Google Alerts or RSS?
[22:15] <MalCurtis> i.e. it expects an object with a whole lot of attributes from a parent scope, rather than several different variables from the parent scope, which are more explcit
[22:15] <phil> Even when I simplify things, the tests can fall over – but it’s more that Karma has got itself into a certain state that it requires a seems
[22:16] <MalCurtis> @phil Odd, each test should be reset to a blank state. Perhaps your build up and tear down isn’t clearing things efficiently or you’re trying to do much in oe test
[22:16] <MalCurtis> one*
[22:17] <Good> Is it true that AngularJS recommends using libaries like Ember.js, otherwise it can’t manage states and so on, isn’t it?
[22:17] <MalCurtis> Randyman5775 not sure what you mean, if you mean can you get that data, sure – if a service has an API available via JS (i.e. supports Cross Origin Resource Sharing) then yeap
[22:17] <MalCurtis> @Good pretty sure AngularJS recommending Ember.js is like Toyota recommending you buy a Ford
[22:17] <BradBarrow> @Good I’ve not heard of that before. The Angular UI team has a great solution to state driven development including nested views
[22:17] <phil> @MacCurtis – that sounds worth a try. If you’re not experiencing similar issues then I’ll work on it. Thanks
[22:18] <MalCurtis> I back what BradBarrow says about ui-router. It’s excellent, and solves all the routing / state problems you may run into
[22:18] <MalCurtis> supports nested views , ala ember, and also has multiple siblings views etc.
[22:18] <Randyman5775> Yes, I’m looking to incorporate aggregated content based on keywords for daily updated content
[22:18] <MalCurtis> Runs via state rather than routes, which is excellent
[22:19] <MalCurtis> Randyman5775 Yea, if you can get the data via JS you’ll have no issues getting it into Angular.
[22:19] <BradBarrow> @bloopjs I really liked the use of angular in the web directions south site here
[22:19] <BradBarrow> @bloopjs there were some great directives used for things like touch events to make it mobile accessible
[22:19] <MalCurtis> If you’ve not used Angular before, you should know that Directives are what makes it powerful
[22:20] <MalCurtis> You can define new tags (or classes etc) that encapsulate entire chunks of functionality
[22:20] <Good> ok, nice link, it’s true that all info moves to “json document” format and there are more and more nosql db with documents which angularjs can handle both in client and server side…
[22:20] <MalCurtis> Making reuse very easy, as well as testing etc.
[22:20] <BradBarrow> To add to that, dependency injection means you can create resources that are accessible throughout your app. This promotes decoupling which as we saw earlier makes testing much easier
[22:21] <MalCurtis> ‘dependency injection’ = easily get access to your classes etc without worrying about how to access them or polluting the global scope
[22:22] <HAWK> Welcome if you’ve recently joined. Feel free to jump in with a question at any point.
[22:22] <BradBarrow> Randyman5775 if you’re interested in consuming RESTful API’s, is a great little module that provides some helpful tools to do so
[22:22] <MalCurtis> i.e. when you create a controller, you can create a function: function(MyClass, MyOtherClass){ … } and based on the parameter names, Angular will supply those classes (as long as they’re registered) to your controller
[22:23] <Randyman5775> Tanks BradBarrow – I’ll check into that.
[22:23] <Good> Good point, now that you bring up the global scope. Any advices on realizing when it’s time to not include any more variables into $scope … or how big can it big (how many KB/MB can it handle?)
[22:24] <MalCurtis> @Good It should be very obvious when to put something in $scope or not
[22:24] <MalCurtis> If you need a variable only in your controller, it’s not required in $scope
[22:24] <MalCurtis> If you need it in a template, you need it in $scope
[22:24] <BradBarrow> @Good there is a google chrome developer extension called the Angular Batarang, it helps you inspect the footprint of angular in the browser. It can be helpful for debugging and keeping track of stray variables that could be refactored
[22:25] <Good> Ok, as the scope is the glue between views and models… but what if we need to move lots of data into the view? Has scope ever gave you any size problems in real-time?
[22:25] <Good> BradBarrow, thanks I’ll have a look on it, I’ve written it down in the TOREAD list
[22:25] <MalCurtis> Interesting question. I don’t believe there’s any more ‘weight’ in having things in scope than out of scope, except when angular has to deal with changes
[22:26] <MalCurtis> If you’re putting A LOT of changing data into the scope that doesn’t need to be, then you might be causing processing overhead, but not ‘memory’ footprint
[22:26] <BradBarrow> @Good I recently created an API endpoint and an Angular factory to consume it. It pulled down a json structure with nearly 2000 records each with about 40 properties. These went straight onto a scope variable and angular was able to sort/filter the collection in real time without a problem
[22:26] <phil> How do you all see Angular developing in the next couple of years. It already seems incredibly powerful and there are big libraries of widgets built on top of the directive capability. What are your thoughts?
[22:26] <MalCurtis> i.e. Angular knows when things changes, but it has to do that by observing function values and scope variables, so if you’re changing those values a lot, then it needs tocheck more often
[22:26] <BradBarrow> That said, it was a prototype and I recommend using a paginated approach when dealing with large data sets
[22:26] <MalCurtis> if you can move preprocessing into the controller, and just the output into the scope, then that will reduce processing
[22:27] <nanda> When would you use Angular and when wouldn’t you use it?
[22:27] <Good> BradBarrow ok, I understand, thank you for sharing that experience, now I’m aware of some numbers… thank you
[22:27] <MalCurtis> @phil I wouldn’t be surprised if we see more of the community projects getting bundled into core, or at least a more modular system – such as ui-router
[22:27] <BradBarrow> @phil I think they’ll move more and more towards a Javascript OOP approach and slightly further away from their own “language” as it’s been referred to. Already you can bind properties to the angular controllers themselves using the ‘this’ keyword rather than $scope meaning that javascript developers will feel more at home with the language.
[22:28] <BradBarrow> (that’s in the unstable release)
[22:28] <Maciek> How would you define AngularJS in comparison to Sencha’s Ext? I mean purpose, scope and features.
[22:28] <phil> @bradbarrow – do you see it moving towards the likes of dart, then?
[22:29] <phil> (for the OO bit, I mean)
[22:29] <MalCurtis> Maciek Angular is more framework, less widget library
[22:29] <MalCurtis> @phil AngularJS core just announced a Dart compatible port of nG
[22:29] <MalCurtis> ng
[22:29] <MalCurtis> Ng
[22:29] <MalCurtis> whatever the abbrev is
[22:30] <MalCurtis>
[22:30] <phil> that answers my question I suppose!
[22:30] <MalCurtis> ;)
[22:30] <MalCurtis>
[22:31] <Good> Any thoughts on compatibility between AngularJS and this other project of Google which is a web development framework? I don’t recall the name but it was something like projector or prototype or something like that
[22:31] <phil> I can sort of see it getting to the stage where the DOM becomes a bit like the assember language of browsers
[22:31] <phil> assembler
[22:31] <BradBarrow> @good you may be thinking of polymer?
[22:31] <MalCurtis> @good Google Web Developer or something like that?
[22:31] <Good> Yeah, that’s it
[22:31] <MalCurtis> s/developer/designer
[22:31] <Good> thank you, polymer
[22:31] <Good> Are they compatible with each other?
[22:32] <BradBarrow> Polymer borrows a lot of angular’s idealogies, but I’d say they’re two separate solutions to one problem.
[22:32] <MalCurtis> Oh, hadn’t seen Polymer. Feel a little bit like that Mozilla one
[22:32] <MalCurtis>
[22:33] <BradBarrow> With the rise of prominence around the Shadow Dom, developers are becoming more comfortable with the likes of Angular’s directives – encapsulated UI components with dynamic behaviour right in the DOM
[22:33] <MalCurtis> this ^
[22:33] <Good> Ok, thank you for your link MalCurtis I didn’t know about Brick, I’ll give it a read
[22:35] <BradBarrow> It’s a move away from the current segregation between javascript application logic and presentation. The old adage of “keep logic out of the view” still stands – but we can certainly benefit from making the view more declaritive thereby saving developer hours and creating more robust applications
[22:35] <MalCurtis> Anyone have any questions that haven’t been answered?
[22:35] <Good> I wish AngularJS helped in unifying browser behaviour… all into Google Chrome or Mozilla Firefox
[22:35] <Good> I mean I hope it does
[22:36] <MalCurtis> In terms of creating a single ‘interface’ that works across all browsers?
[22:36] <MalCurtis> Or making less people use IE and Safari…?
[22:36] <Good> lol
[22:36] <Good> IE …
[22:37] <Good> I hope they catch up with AngularJs … otherwise I don’t know how it’s gonna end up form the IE guys
[22:37] <MalCurtis> I’m ok with IE as of this week
[22:37] <MalCurtis> Current + Last = ok
[22:37] <MalCurtis> AngularJS on 10+ should be fine
[22:37] <Good> Ok.
[22:37] <BradBarrow> @Good Google has just dropped support for IE9 with regards to their Docs platform and a few others. They’re trend setters so we can look forward to using IE10+ which is actually ok
[22:37] <MalCurtis> 10 was the first IE which finally just accepted standards across almost all of the places you use them
[22:37] <MalCurtis> including CORS etc.
[22:38] <BradBarrow> If anyone is looking to get started quickly with Angular I’d strongly suggest taking a look at the AngularJS Yeoman Generator maintained by Brian Ford:
[22:40] <BradBarrow> It helps you get set up with a static site, AngularJS and a snappy development environment in minutes. I use it to rapid prototype Angular apps rather than things like JSfiddle/CodePen
[22:40] <HAWK> If anyone has a question that hasn’t been answered, now would be a good time to ask it.
[22:41] <HAWK> Welcome to those of you that have just joined :)
[22:41] <RogerC> hello
[22:41] <Mikef> Hi
[22:41] <Jayfang> Howdy
[22:42] <BradBarrow> Hi folks, have any of you used AngularJS before? What’s your experience/opinions so far? Have any questions for us?
[22:42] <Good> Ok, thank you. What would you say AngularJS can’t beat or can’t develop easily than the others. Many people don’t want to move away from LAMP when I thing the MEAN profile is gonna be the future… or it seems like it, but I’d like to know if there are any drawbacks with AngularJS that Misjo is not telling us :D
[22:42] <Good> I think there aren’t.
[22:43] <MalCurtis> @Good You don’t need to move away from LAMP to run Ng
[22:43] <MalCurtis> LAMP is your backend however.
[22:43] <MalCurtis> Angular’s biggest
[22:43] <Good> ah, sorry
[22:43] <MalCurtis> ‘problem’ – is that it’s got a steep learning curve
[22:44] <MalCurtis> So it’s hard to beat the ‘simplicity’ of jquery
[22:44] <BradBarrow> @Good I think it’ll always depend on the application itself. Mongo vs Mysql – they’re incredibly different solutions. Node vs Apache..again one specialises in real time server behaviour. It’s about choosing the right tool for the right application.
[22:45] <phil> What do you think of a MEAN stack as an alternative to LAMP. Or are you thinking of them as similar?
[22:45] <Good> Ok. And… regarding Promises and the use of them in AngularJS. Do you think it’s worthwhile for me to learn to apply promises to my backend code instead of having the dreadful identation piramid?
[22:45] <BradBarrow> We have to remember that developers will flock to the latest and greatest so MEAN is certainly popular…but that doesn’t mean you can’t integrate Angular into an existing stack that you’re comfortable with RoR/LAMP
[22:46] <MalCurtis> @Good that assumes your backend code is in a callback soup language, e.g. JS
[22:46] <Good> I read some article of the Q library developer saying why node should use them or something like that… I don’t recall precisely… sorry
[22:46] <Good> ok
[22:47] <Mikef> Hi I am doing some stuff with canvas via fabric.js running inside Angular, so far it has been smooth running, which is good news as I am not a JS expert. I need to start sharing data between views and was wondering whether parameters or shared service was the way to go.
[22:47] <BradBarrow> @phil I think a MEAN stack is great for smaller snappier and highly interactive applications. It makes the use of Socket.IO and the like much smoother making applications such as this chat app we’re using right now a breeze to build (right Mal?). LAMP and RoR stacks on the other hand are tried and test…convention over configuartion and are know t
[22:47] <BradBarrow> o be reliable with high traffic loads.
[22:47] <MalCurtis> @mikef Where is the data, and where are the views?
[22:48] <MalCurtis> Generally a view has a controller attached, which uses the $scope to bind them together
[22:48] <Mikef> At the moment the data is in local storage and the views are partials in their own files being switched by a router module.
[22:48] <BradBarrow> @Good personally I think promises are one of the best developments in recent years when it comes to asynchronous languages and I find that they’re more versatile, readable and powerful than callbacks. Any opportunity to use them I’d jump on it
[22:49] <MalCurtis> Ok, so you need to have a controller which does some massaging there
[22:49] <Good> Thank you BradBarrow
[22:49] <MalCurtis> In your views you can access anything you add to the $scope of the attached controller
[22:49] <MalCurtis> So your controller might grab stuff from localstorage, then shove it in $scope.myData
[22:49] <MalCurtis> and your view might iterate on myData (it doesn’t need the scope bit)
[22:50] <MalCurtis> such as <ul><li ng-repeat=”data in myData”>{{data.someProperty}}</li></ul>
[22:50] <MalCurtis> Angular knows when the data changes, so you don’t need to worry about telling it when your call for data is complete
[22:51] <BradBarrow> A nifty module for working with local/session storage:
[22:53] <HAWK> We have about 5 minutes left in the session. Does anyone have any last questions?
[22:53] <MalCurtis> BradBarrow Just saw your comment, yea it was total breeze to build this app. No swearing involved…
[22:53] <MalCurtis> /sarcasm
[22:54] <BradBarrow> There are some great videos in this channel around Javascript development including Node’s asynchronous nature, promises and REST apis for those of you who are interested (@Good)
[22:54] <Good> I just wanted to thank you for your sharing your knowledge. Know that I’ll be sending good karma/positive karme to some stars here in Spain so that get to you in the US! :D
[22:54] <Mikef> Thanks guys for the advice :0)
[22:55] <MalCurtis> I’m in NZ ;) Brad’s in AU
[22:55] <MalCurtis> Brad*
[22:55] <BradBarrow> No problem! The more people who use Angular the more supportive the community will become :)
[22:55] <Good> Sorry ’bout that. So to NZ and AU they go!
[22:55] <MalCurtis> :D
[22:55] <Jayfang> Thanks, I’ll definitely grab the transcript learnt stuff even in the last 10 minutes! :)
[22:55] <HAWK> Cool. I’ll put the transcript up later today.
[22:56] <BradBarrow> I highly recommend keeping an eye on AngularJS’s google+ page:
[22:56] <MalCurtis> If anyone came here wondering if they should ‘try’ angular, the answer is flat out – yes: Give it a shot. Remember that it has a bit of alearning curve though so persist.
[22:56] <BradBarrow> Youtube channel:
[22:56] <HAWK> Any last questions before I cut our experts loose?
[22:56] <BradBarrow> And google groups:!forum/angular
[22:56] <MalCurtis> A good first tutorial is Alex’s one @ Sitepoint:
[22:57] <Jayfang> MalCurtis 100% agree, used after emberjs – harder to learn but far “superior”
[22:57] <BradBarrow> \m/
[22:57] <HAWK> Awesome. Well thanks heaps for your time this morning MalCurtis and BradBarrow
[22:58] <BradBarrow> No problem – it’s been fun :)
[22:58] <MalCurtis> np
[22:58] <Good> Applauses
[22:58] <HAWK> And thanks to everyone that joined and asked questions. Have a great day/night.
[22:59] <Good> You too, thank you
[22:59] <BradBarrow> Bye!

Frequently Asked Questions about AngularJS

What is AngularJS and why is it important in web development?

AngularJS is a powerful JavaScript-based open-source front-end web application framework. It is maintained by Google and is designed to make both the development and testing of such applications easier. AngularJS is built on the concept of directives, reusable components, and modular design, which makes it a great tool for building single-page applications. It also supports two-way data binding, dependency injection, and separation of concerns, which are all important in modern web development.

How does AngularJS differ from other JavaScript frameworks?

AngularJS stands out from other JavaScript frameworks due to its data binding capability. It uses two-way data binding which means that any changes in the user interface instantly influence the application objects and vice versa. Another unique feature is dependency injection which makes the application easier to develop, understand, and test.

What are the prerequisites for learning AngularJS?

Before diving into AngularJS, it’s recommended to have a basic understanding of HTML, CSS, and JavaScript. Knowledge of MVC (Model View Controller) concepts and Document Object Model (DOM) can also be beneficial.

What are directives in AngularJS?

Directives are markers on a DOM element (such as an attribute, element name, comment or CSS class) that tell AngularJS’s HTML compiler to attach a specified behavior to that DOM element or even transform the DOM element and its children.

How can I hire an AngularJS expert?

Hiring an AngularJS expert can be done through various online platforms like Upwork, Toptal, and Codementor. These platforms have a pool of experts with a wide range of experience in AngularJS development. You can view their profiles, check their experience, and choose the one that fits your project needs.

What are the benefits of using AngularJS for my project?

AngularJS offers many benefits. It allows you to create single-page applications that offer a more seamless user experience. The two-way data binding simplifies the programming process. Moreover, it’s maintained by Google, which assures you of its reliability and regular updates.

Can I use AngularJS for mobile application development?

Yes, AngularJS can be used for mobile application development. However, it’s worth noting that AngularJS was primarily designed for web app development. For mobile app development, Angular or Ionic might be better options.

What is the future of AngularJS?

While AngularJS is still widely used, its popularity has been overshadowed by its successor, Angular. Angular offers more advanced features and is more suited to the demands of modern web development. However, AngularJS will continue to be relevant for maintaining existing applications built with it.

What are some common challenges in AngularJS development?

Some common challenges include dealing with the complex syntax, understanding the concept of directives, managing scopes, and dealing with performance issues in large-scale applications. However, these challenges can be overcome with proper understanding and experience.

How can I learn AngularJS?

There are many resources available to learn AngularJS. Online tutorials, guides, and courses are a great way to start. Websites like SitePoint, Ultimate Courses, and Turing offer comprehensive guides and discussions on AngularJS.

Sarah HawkSarah Hawk
View Author

Formerly a developer in the corporate world, HAWK (known as Sarah by her mother) said goodbye to the code and succumbed to the lure of social media to become the Community Manager for the SitePoint network. Now Hawk is working with Discourse to build their product and community.

angularjstalk with the expertsTWTE
Share this article
Read Next
Get the freshest news and resources for developers, designers and digital creators in your inbox each week
Loading form