Hacker News new | past | comments | ask | show | jobs | submit login
Batman.js vs Knockout.js (erlware.org)
52 points by jwilberding on Aug 28, 2011 | hide | past | favorite | 6 comments



Yes, knockoutjs doesn't have it's own validation rules. Yes knockoutjs doesn't have routing. Yes, knockoutjs doesn't have ajax helpers.

In all these frameworks that add those features, they forgot to copy two that I personally love to death. data bind attributes can contain arbitrary javascript, and creating new types of data bindings is insanely trivial.


sorry for being a n00b but what's the goal of the "class @User" syntax? I have a cursory knowledge of CS and I'd assume that gets desugared to something like

    this.User = ...
but what use does it have?


By default, CS compiles with a closure per file to prevent local variables from leaking to the global scope. So the purpose is to ensure the class is exported. If you put the following in a user.coffee file:

  class User
it would compile to:

  (function() {
    User = (function() {
      function User() {}
      return User;
    })();
  }).call(this);
while

  class @User
would compile to:

  (function() {
    this.User = (function() {
      function User() {}
      return User;
    })();
  }).call(this);
ensuring that User is available from any file (since the top-level this === window in the browser).


CoffeeScript wraps its output in an anonymous function, so to create a global var you have to explicitly assign it as "window.varname" or, at the top level, "this.varname".


ah that's interesting thanks for the explanation


I have the same question!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: