27
Articles
9月12日 23:01
Last updated
No Image

Learning web development: Implementing web servers

In this chapter, we’ll write our own web server: It will serve files and manage the data for a browser app.

2ality
api tool
No Image

Learning web development: Frontend frameworks

In this chapter, we’ll take a look at frontend frameworks – libraries that help with programming web user interfaces (“frontend” means “browser”, “backend” means “server”). We’ll use the frontend framework Preact to implement the frontend part of a todo list app – whose backend part we’ll implement in a future chapter.

2ality
framework library ui
No Image

Learning web development: Installing npm packages and bundling

In this chapter we develop a small web app in the same way that large professional web apps are developed: We use libraries that we install via npm. We write tests for some of the functionality. We combine all JavaScript code into a single file before we serve the web app. That is called bundling. (Why we do that it explained later.)

2ality
library tool
No Image

Learning web development: Asynchronous JavaScript – Promises and async functions

In this chapter, we learn how to handle tasks that take a long time to complete – think downloading a file. The mechanisms for doing that, Promises and async functions are an important foundation of JavaScript and enable us to do a variety of interesting things.

2ality
tool
No Image

Learning web development: JSON and processing files in Node.js

In this chapter, we explore the popular data format JSON. And we implement shell commands via Node.js that read and write files.

2ality
library tool
No Image

Learning web development: JavaScript Maps

In this chapter, we’ll explore the data structure Map (a class) which lets us translate (“map”) from an input value to an output value. We’ll use a Map to display text upside-down in a terminal!

2ality
library tool
No Image

Learning web development: JavaScript exceptions

In this chapter, we look at exceptions in JavaScript. They are a way of handling errors. We’ll need them for the next chapter.

2ality
tool
No Image

JavaScript’s trademark problem

In this blog post, we discuss Oracle’s trademark of the word “JavaScript”: What are the problems caused by that trademark? How can we fix those problems?

2ality
api framework tool
No Image

Learning web development: Plain objects in JavaScript

In this chapter, we learn how to create plain objects with properties. We use them to create a simple flash card app.

2ality
library tool
No Image

Learning web development: Modules and testing in JavaScript

So far, all of our JavaScript code resided in a single file – be it an .html file or a .js file. In this chapter, we learn how to split it up into multiple files. And how to automatically test if the code we write is correct.

2ality
library tool
No Image

Learning web development: Web servers

In this chapter, we run a web server on our own computer and use it to serve a web app.

2ality
api tool
No Image

Learning web development: Shells and Node.js

In this chapter we explore two topics: A shell is like browser console, but for the operating system instead of for JavaScript. It helps us with programming by running the tools (programs) we need to get things done. Node.js is a program that lets us run JavaScript code outside browsers – which we can use for a variety of things.

2ality
tool
No Image

Learning web development: Loops in JavaScript

In this chapter, we learn how to do things repeatedly in JavaScript.

2ality
library tool
No Image

Learning web development: Booleans, comparisons and <code>if</code> statements

In this chapter, we learn about tools for only running a piece of code if a condition is met: truth values (booleans), comparisons and if statements.

2ality
library tool
No Image

Learning web development: Arrays in JavaScript

In this chapter we look at one way of storing more than one value in a variable: arrays.

2ality
library tool
No Image

Learning web development: strings and methods in JavaScript

In the last chapter, we worked with numbers. In this chapter, we’ll work with text and write our first applications.

2ality
tool ui
No Image

Learning web development: numbers, variables, functions in JavaScript

In this chapter, we take the very first steps with JavaScript and learn about numbers, variables and functions.

2ality
library tool
No Image

New series of blog posts: learning web development

This blog post provides an overview of my new series of blog posts called “Learning web development”.

2ality
framework tool
No Image

Ecma International approves ECMAScript 2025: What’s new?

On 25 June 2025, the 129th Ecma General Assembly approved the ECMAScript 2025 language specification (press release), which means that it’s officially a standard now. This blog post explains what’s new.

2ality
library tool
No Image

Tips for making regular expressions easier to use in JavaScript

In this blog post, we explore ways in which we can make regular expressions easier to use.

2ality
tool
No Image

TypeScript: checking Map keys and Array indices

JavaScript has two common patterns: Maps: We check the existence of a key via .has() before retrieving the associated value via .get(). Arrays: We check the length of an Array before performing an indexed access. These patterns don’t work as well in TypeScript. This blog post explains why and presents alternatives.

2ality
library tool
No Image

TypeScript: supporting the new class <code>Iterator</code> at the type level

In ECMAScript 2025, JavaScript gets a class Iterator with iterator helper methods. This class conflicts with TypeScript’s existing types for iterators. In this blog post, we explore why that is and how TypeScript solves that conflict.

2ality
library tool
No Image

Styling console text in Node.js

In this blog post, we explore how we can style text that we log to the console in Node.js. Some of the examples use a Unix shell but most of the code should also work on Windows.

2ality
api library tool
No Image

Converting values to strings in JavaScript has pitfalls

Converting values to strings in JavaScript is more complicated than it might seem: Most approaches have values they can’t handle. We don’t always see all of the data.

2ality
No Image

Deploying TypeScript: recent advances and possible future directions

In this blog post we look at: The current best practice for deploying library packages: .js, .js.map, .d.ts, .d.ts.map, .ts Recent new developments in compiling and deploying TypeScript: type stripping, isolated declarations, JSR, etc. What the future of deploying TypeScript might look like: type stripping in browsers, etc.

2ality
No Image

Ideas for making TypeScript better at testing types

In this blog post, we examine how we can test types in TypeScript: First, we look at the library asserttt and the CLI tool ts-expect-error. Then, we consider which functionality could be built into TypeScript.

2ality
No Image

Could JavaScript have synchronous <code>await</code>?

In JavaScript, code has color: It is either synchronous or asynchronous. In this blog post, we explore: The problems caused by that How to fix them via synchronous await The two downsides that prevent synchronous await from being practical

2ality