AngularJS
/whois Dean Sofer
- ProLoser on Github and Freenode
 - UI Engineer at Paxata
 - Founded AngularUI Organization
 - Past CakePHP enthusiast
 - Minimalist
 
I make Things
- Github Omnibox -
 
Why Client-Side?
- Performance!
 - Browsers are Powerful
 - Server becomes API
 
Why Not?
- SEO Unfriendly
 
How did it start?
- Joined Jobvite
 - Built a Facebook App
 - Made a mess
 
We needed a Framework
- Found TodoMVC
 - Built prototypes
 - Settled on AngularJS
 
What is AngularJS?
- jQuery Powered
 - MVWhatever
 - Future HTML today
 - Backed by Google
 - In use today
 
Why AngularjS?
- Smallest Code Footprint
 - POJOs, not Classes
 - Testability++
 - Dependency Injection
 
This is your code on drugs
Javascript:
    Really?
jQuery:
$('input:checkbox').keypress(function(){
  App.getTodo($(this).attr('id')), function(i, val){
    val.completed = !val.completed
  })
  App.render()
})AngularJS:function Todo($scope){
  $scope.val = {
    completed: false
  };
}
<input type="checkbox" ng-model="val.completed">
vs Backbone.js
app.Todo = Backbone.Model.extend({defaults: {title: '',completed: false},toggle: function () {this.save({completed: !this.get('completed')});}});
app.TodoView = Backbone.View.extend({tagName: 'li',events: {'click .toggle': 'toggleCompleted'},initialize: function () {this.listenTo(this.model, 'change', this.render);this.listenTo(this.model, 'destroy', this.remove);this.listenTo(this.model, 'visible', this.toggleVisible);},render: function () {this.$el.html(this.template(this.model.toJSON()));this.$el.toggleClass('completed', this.model.get('completed'));this.toggleVisible();this.$input = this.$('.edit');return this;},toggleCompleted: function () {this.model.toggle();} });
- Widgets only
 - 
            String vs DOM templates
            
 
vs Knockout.js
<p>Send me spam: <input type="checkbox" data-bind="checked: wantsSpam" /></p>
<script type="text/javascript">
    var viewModel = {
        wantsSpam: ko.observable(true) // Initially checked
    };
         // ... then later ...
    viewModel.wantsSpam(false); // The checkbox becomes unchecked
</script>- Complex API
 
Tools
- Thriving community
 - irc.freenode.net/angularjs
 - AngularUI
 - 
"Mastering Web Application
Development with AngularJS"
by Pawel Kozlowski and Pete Bacon Darwin
 
feen
Wield AngularJS Like a Pro
By Dean Sofer
Wield AngularJS Like a Pro
PHP Undiscovered Talk on AngularJS
- 3,314