βWeβve been busy,β says Cloudflare which recently announced itβs bringing Node.js HTTP server support to its Workers function platform. This post goes deep into the technicalities, covering what areas of the standard library is supported, how the file system works (Workers doesnβt have a typical file system), how input/output streams work, and more. And you can use all of this now.
James M Snell (Cloudflare)
Please open Telegram to view this post
VIEW IN TELEGRAM
β€7π₯3π1
CHALLENGE
function processData() {
try {
console.log('processing');
return 'success';
} catch (error) {
console.log('error caught');
return 'failed';
} finally {
console.log('cleanup');
}
}
const result = processData();
console.log('result:', result);
π₯1
What is the output?
Anonymous Quiz
13%
error caught cleanup result: failed
50%
processing cleanup result: success
20%
processing cleanup result: undefined
17%
processing result: success cleanup
β€3π2
Please open Telegram to view this post
VIEW IN TELEGRAM
π€£11β€4π1
CHALLENGE
class EventEmitter {
constructor() { this.events = {}; }
on(event, fn) { (this.events[event] ||= []).push(fn); }
emit(event, data) { this.events[event]?.forEach(fn => fn(data)); }
}
class Logger {
log(msg) { console.log(`LOG: ${msg}`); }
}
class Counter {
constructor() { this.count = 0; }
increment() { this.count++; console.log(this.count); }
}
function withLogging(target) {
const logger = new Logger();
return new Proxy(target, {
get(obj, prop) {
if (typeof obj[prop] === 'function') {
return function(...args) {
logger.log(`calling ${prop}`);
return obj[prop].apply(obj, args);
};
}
return obj[prop];
}
});
}
const emitter = withLogging(new EventEmitter());
const counter = new Counter();
emitter.on('tick', () => counter.increment());
emitter.emit('tick');
emitter.emit('tick');
π€5
What is the output?
Anonymous Quiz
17%
LOG: on LOG: emit 1 LOG: emit 2
49%
LOG: calling on 1 2 LOG: calling emit LOG: calling emit
21%
calling on calling emit 1 calling emit 2
13%
LOG: calling on LOG: calling emit 1 LOG: calling emit 2
π₯2β€1π1
CHALLENGE
class Animal {
constructor(name) {
this.name = name;
}
speak() {
return `${this.name} makes a sound`;
}
}
class Dog extends Animal {
speak() {
return super.speak() + ' and barks';
}
}
const pet = new Dog('Rex');
console.log(pet.speak());
console.log(pet instanceof Animal);
console.log(pet.constructor.name);
β€2
What is the output?
Anonymous Quiz
48%
Rex makes a sound and barks true Dog
20%
Rex barks false Dog
22%
Rex makes a sound and barks true Animal
10%
Rex makes a sound true Dog
π8π€1
Each year, Devographics runs an epic survey of as many JavaScript community members as it can and turns the results into an interesting report on the state of the ecosystem β hereβs the results from 2024. If you have the time, fill it in, especially as they format it in a way where you can actually learn about stuff as you go.
Devographics
Please open Telegram to view this post
VIEW IN TELEGRAM
π€2β€1π₯1
CHALLENGE
class DataProcessor {
constructor(value) {
this.value = value;
}
transform(fn) {
return new DataProcessor(fn(this.value));
}
getValue() {
return this.value;
}
}
const multiply = x => x * 2;
const add = x => x + 10;
const square = x => x * x;
const result = new DataProcessor(5)
.transform(multiply)
.transform(add)
.transform(square)
.getValue();
console.log(result);
β€1
β€4π2π₯1