I am an experienced software engineer, and have built things with JS. I have used a wide range of JS frameworks; but can also write in raw JS. As a full stack in JS, I tend to:

  • All my code is “use strict”. Due to writing in other languages before JS, I rarely hoist;
  • I would like to use ES6 but don't think that there is enough support in browsers (this is improving 1). As of late 2016, I am writing in es5 for code in webbrowers. I still need to import a few polyfill functions for MSIE. Update late 2018: most of ES6 and ES7 works in evergreen browsers, tools to dynamically add compatibility layers for MSIE and Safari are still commercially important;
  • I have some recent commercial experience in Node. In a particular project, I was extending the functionality, the first version was built with Mongoose and Express. Koa would be a better framework, IMO. That project also used handlebars, and the JS templating library;
  • My most recent project uses Vue2. This isn't complete yet, but is likely to be a three month project, I am the sole developer;
  • I worked for over a year on a commercial product using Reactjs (same company);
  • I worked for over a year on a commercial product using Angularjs at lead-engineer;
  • As most people would aggregate UX with client side work, I refer to my most recent UX and more UX.
  • I prefer to write in objects/modules, it makes testing easier and cheaper;
    • I am flexible, but think improved ObjectLiteral is the best form of objects in JS;
  • I unit test, historically using qunit, as it is a really small dependency. This wouldn't scale for CI style use;
    • Update 2018: for new projects, I am mostly using Mocha/Chai, for example.
  • I do functional testing, historically with Selenuim, more recently the same Mocha/Chai;
  • I use closures;
    • My libraries tidily don't pollute the symbolspace anymore than is necessary. I know what the self executing function declarations are;
  • I use JS in a stateful fashion, in reverse chronological order, using localStorage, using AJAJ in preference to AJAH, failing over to a hash on the window object if needed;
  • I have done some demo code with websockets, but as fundamentally its a TCP socket, this is no different to normal POSIX programming. I have written alot of normal TCP and UDP based programming;
  • I currently don't use any JS specific design patterns, other than jQuery patterns; but as an OO engineer, I use the following.
  • Historically I have tested my code for DOM memory leaks; this is necessary for long running JS on MSIE. There are specialised tools for the older versions of MSIE that count references. My scripts are generally quite efficient as I know how computers work;
  • When I need to demonstrate snippets (for stack overflow mostly), I use jsfiddle. I am solving UX problems on my site and publishing this at github.
  • Focussing on reports, I really like datepickers; its removes two days off any isolated platform development. Since I started saying this, browsers now support a richer range of HTML5 form items, secondly for new apps, I normally use a date picker and a clock picker;
  • I have built SPA. For current technology, I would be using a JS templating and content injection tools, for example Vue2 + Vuex.
    • I have engineered page fragment support into most of the web page frameworks that I have built;
    • Specifically ECBM is a publicly visible example, from a while ago;
  • General consensus is that data manipulation should be on the server, so it cant be disabled. I can do data manipulation in JS ~ but aside from Dates ~ historically don't;
  • I have worked in high volume sites, but the server language isn't JS;
  • With regards to UI, I target HTML5, mobile and RWD. I use CSS frameworks where practical. My site is targeting desktop mostly, due to the volume of words; but there is CSS for mobile;
  • The following are JS heavy projects: