DESOSA 2022

Expressjs

Figure: Express logo.

Express.js is a fast, minimalist and flexible backend framework for Node.js that provides a myriad of features for web and mobile application development. Express.js is released as free and open-source software under the MIT License. Being a Node.js module, it is entirely written in Javascript and is part of the “Javascript everywhere” philosophy that aims to unify backend and frontend of web development with a single programming language. There are several popular javascript frameworks built on top of Express such as Kraken, LoopBack, Sails, etc.

Authors

Deniz Yıldırım

Born and raised in Istanbul, Turkey. I did my BSc Computer Engineering at the University of Illinois at Urbana-Champaign. Currently doing MSc in Embedded Systems and backend developer at bunq. Interested in Robotics, AI/ML, VR, and Tactile Internet.

Nick Yu

Born in the Netherlands but lived in Paramaribo, Suriname. I did my BSc in Computer Science and Engineering at TU Delft and am currently doing my MSc in Computer Science and working as a full-stack developer at a small startup based in Amsterdam. I am interested in Embedded Systems, Robotics and Programming Languages research.

Roberta Gismondi

Born in Italy, I moved to the Netherlands after my high school graduation to study Computer Science and Engineering at TU Delft. I am now continuing my studies in Computer Science and following the Software Technology MSc track. I work as a junior software engineer and full-stack developer at an IT company in Amsterdam. My interests are in Machine Learning and Artificial Intelligence research

Tommaso Tofacchi

Born in Milan, Italy and raised there until the end of high school. I then moved to the Netherlands to pursue my Bachelor in Computer Science and Engineering at TU Delft, which I enjoyed to the point of deciding to continue my studies with a Master's in Computer Science at the same university. I am curious about the vast realm of Machine Learning and Artificial Intelligence real-world applications, as that is the field of specialization I chose for my MSc.

Express.js - Scalability

So far we have discussed many aspects of Express including its goal, its design and architecture, and we have analysed the software’s component along with its key quality attributes and the quality culture of the project. The resulting picture is one of a robust and solid framework for web application, qualities that indeed earned Express its popularity amongst the web developers community. Nonetheless, we want to conclude this series of essays with a detailed report on Express performance and the framework’s scalability and prospects.

Express.js - Architecture of Express.js

The Layered Architecture of Express.js Express.js is a standalone web application framework for Node.js that provides its users with a robust and complete set of features for web and mobile applications along with HTTP utility methods and middleware for API development. As stated by the team itself, Express’s mission is to guarantee a pleasant web development experience and to do that by means of an abstract layer of fundamental web application features that are accessible and easy to use.

Express.js - Product Vision and Problem Analysis

Aims Express.js - or simply, Express - is the leading backend framework on Node.js. It aims to be the backend side of the “Javascript everywhere” idea that became a reality with Node. Express aims to be a very minimalist and unopinionated framework. While many backend frameworks force a certain backend structure such as MVC (model-view-controller), Express leaves this choice to the developer. This approach allows other backend frameworks such as Sails to build on top of Express, so one might say another aim of Express is to be the skeleton for more opinionated and complex backend frameworks.
Expressjs
February 28, 2022

Contributions

Add root option support for res.download()

expressjs/express

This pull request addresses the following issue concerning the correct functioning of download() in the Response objects when being passed a root parameter in the options.

Previously, the root would simply be prepended to an absolute path, resulting in a meaningless filepath (this due to the download() implementation being based off Response’s deprecated sendfile() function).]

With this pull request, when a root is provided download() prepends it to the given filename without resolving it to an absolute filepath; it only resolves the filename to an absolute filepath when root is not provided in the options.

open
Open PR

Expand benchmark

expressjs/express

This PR expands the existing benchmark in the Express repository to also check for varying amounts of connections, and to also show the average latency instead of just requests per second.

For a framework that claims to be fast, it is important to have an accurate and up-to-date benchmark. The Express repository was lacking in this regard by having a single benchmark checking for performance with varying amounts of middleware, which was added 8 years ago and was kept unchanged for the last years. While small, our change should hopefully be a good start to provide an accurate view of the performance of Express.

open
Open PR