User Tools

Site Tools


radar:javascript

JavaScript Radar

Inspired by ThoughtWorks, this is our technology radar for JavaScript-related technologies.

We use JavaScript client-side, and for processing some server-side assets. We don't use any JavaScript server-side frameworks, though. While we understand the potential for sharing code between the client and server, none of the server-side frameworks are compelling. Plus, it's sometimes good to make a distinction between the 2 sides.

We also use JavaScript for most of our mobile applications. We find that the Cordova (PhoneGap) framework provides an experience close enough to native apps, while spending significantly less time and money. We're also able to leverage our HTML/JavaScript/CSS knowledge and tools.

Client-Side MVC

We've used a few client-side frameworks (Backbone and Spine most extensively). But we're not really happy with any that we've used. Ember and Angular seem to have the most momentum – we'll likely look at them next.

Testing

  • Karma (test runner)
    • Works with server or client side code.
    • Integrates with Jasmine, QUnit, PhantomJS, Jenkins, etc.
  • Jasmine (testing framework)
    • Syntax similar to RSpec, especially if using CoffeeScript.
  • Istanbul (code coverage)
  • FuncUnit (acceptance testing automation)
    • Similar to Selenium, but in-process.
    • Assertions based on jQuery queries.
      • They work as getters that poll/wait, and on raise an exception on timeout.
      • Don't look enough like assertions though:
        • F('.foo').visible();
        • F('.bar').text('text that should be there');
        • F('.baz').css('color', 'red').hasClass('warning');
    • Actions: click, type, drag.
      • F('textarea').click().type('Hello World');

Concurrency

  • Functional Reactive Programming (programming style)
    • Works with streams of events.
    • Makes it easy to query, filter, transform, and compose.
    • RxJS (Microsoft)

Linting

Components

We've not tried any of these yet, but we're looking into them.

  • Web Components standard
    • Not yet implemented widely enough to use.
      • Only really in Chrome, and has to be explicitly turned on.
    • Several pieces:
      • Shadow DOM
      • Content templates
      • Custom element types
      • HTML includes
  • Polymer (Google)
    • Still a moving target - not ready for production code.
    • Uses polyfills to work with a larger number of browsers.
    • Tries to follow Web Components standards.
    • Also adds some higher-level functionality on top of Web Components.
  • X-Tags (Mozilla)
radar/javascript.txt · Last modified: 2013/11/27 16:11 by Admin