The Challenge
Early last year, we were tasked by one of our customers to propose and prototype a new technology stack for a complex application built using Classic ASP. The existing application uses an Oracle database and the JScript scripting language (essentially, JavaScript). Our research led us to the following proposed technology stack:
In the 15 months that have elapsed since then, we have...
- Successfully prototyped the proposed technology stack
- Received approval to proceed with the modernization effort
- Implemented and deployed to production the modernized application
Here is a quick rundown on the technology stack we used.
Node.js
Node.js is an open-source, cross-platform toolkit for developing web applications using server-side JavaScript. By sticking with JavaScript as our server-side scripting language, we have the potential to re-use a large portion of the existing JavaScript codebase.
Express
Express is a minimal application framework that provides some basic features that any application would need, for example: request routing, middleware and template engines.
Underscore
Underscore is a library of JavaScript utilities. For our prototype, we depend on its template engine. We selected this template engine out of the 20+ engines available because its template syntax is identicalto that used by Classic ASP. That should also allow us to re-use a large portion of the existing set of templates.
Consolidate
Consolidate provides a standardized API to most template engines available for Express. It allows the developer to potentially swap out template engines (the view in a Model-View-Controller architecture) without changing any code in the model or the controller.
Body-parser
Body-parser is middleware for parsing the body of incoming requests. It is typically used to extract form field values in the action script for a form.
SQLite
SQLite is a standalone, zero-configuration, cross-platform relational database engine. During the prototyping phase, it is convenient to be able to run the application without having an Oracle engine available.
Nodemon
Nodemon is a utility for Node.js that will monitor the file system for changes in the source code and automatically restart the server in order to pick up those changes. This proves very useful during the development of a rapidly evolving prototype.