JavaScript
31.1K subscribers
963 photos
9 videos
33 files
653 links
A resourceful newsletter featuring the latest and most important news, articles, books and updates in the world of #javascript 🚀 Don't miss our Quizzes!

Let's chat: @nairihar
加入频道
CHALLENGE

class ShoppingCart {
constructor() {
if (ShoppingCart.instance) {
return ShoppingCart.instance;
}

this.items = [];
ShoppingCart.instance = this;
}

addItem(item) {
this.items.push(item);
}

getItems() {
return [...this.items];
}
}

const cart1 = new ShoppingCart();
const cart2 = new ShoppingCart();

cart1.addItem('Book');
cart2.addItem('Laptop');

console.log(cart1.getItems());
🤩 Wake Up, Remix! Everything's Changing..

Big news from the Remix camp this week. About a year ago, Remix and React Router merged together reflecting their shared goals and code, but now it’s all change again. React Router is now basically what Remix originally intended to be, and so ‘Remix’ is rebooting as a model-first, low-dependency, Web API-centric full-stack framework built on Preact. It’ll no longer be a 'React framework' per se.

Michael Jackson and Ryan Florence
Please open Telegram to view this post
VIEW IN TELEGRAM
CHALLENGE

const team = {
lead: { name: 'Alice', projects: ['Alpha', 'Beta'] },
dev: { name: 'Bob', projects: ['Gamma'] },
tester: { name: 'Charlie', projects: [] }
};

const {
lead: { projects: [leadProject] },
dev: { projects: [devProject = 'Delta'] },
tester: { projects: [testerProject = 'Epsilon'] }
} = team;

console.log(`${leadProject}-${devProject}-${testerProject}`);
🟠 Svelte Flow 1.0: Create Node-Based UIs and Diagrams in Svelte

From the creators of the similar React Flow comes a customizable Svelte component for building node-based editors and interactive diagrams. Want examples?

webkid GmbH
Please open Telegram to view this post
VIEW IN TELEGRAM
CHALLENGE

const target = { a: 1, b: 2 };
const handler = {
get(obj, prop) {
return prop in obj ? obj[prop] * 2 : 'not found';
},
set(obj, prop, value) {
if (typeof value !== 'number') {
return false;
}
obj[prop] = value + 10;
return true;
}
};

const proxy = new Proxy(target, handler);
proxy.c = '5';
proxy.d = 5;

console.log(JSON.stringify({
a: proxy.a,
b: proxy.b,
c: proxy.c,
d: target.d,
hasC: Reflect.has(target, 'c')
}));
CHALLENGE

function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) {
return fn.apply(this, args);
}
return function(...moreArgs) {
return curried.apply(this, [...args, ...moreArgs]);
};
};
}

const multiply = curry((a, b, c) => a * b * c);
const double = multiply(2);
const result = double(3)(4);

console.log(result);
What is the output?
Anonymous Quiz
17%
NaN
54%
24
20%
undefined
9%
function
😭 php-node: A New Way to Bring PHP and Node Together

I bet some readers have strong feelings about the idea of mixing PHP and Node.js, but this is a neat project. php-node is a native module for Node that enables the running of PHP apps within the Node environment. Why? For migrating legacy apps, building hybrid PHP/JS apps, or Node apps that simply need to call out to PHP for some reason (WordPress, maybe, as we see in this post).

Matteo Collina et al.
Please open Telegram to view this post
VIEW IN TELEGRAM
CHALLENGE

class EventEmitter {
constructor() {
this.events = {};
}

on(event, listener) {
if (!this.events[event]) {
this.events[event] = [];
}
this.events[event].push(listener);
return () => this.off(event, listener);
}

off(event, listener) {
if (!this.events[event]) return;
this.events[event] = this.events[event].filter(l => l !== listener);
}

emit(event, ...args) {
if (!this.events[event]) return false;
this.events[event].forEach(listener => listener(...args));
return true;
}
}

const emitter = new EventEmitter();
const unsubscribe = emitter.on('message', data => console.log(data));
emitter.emit('message', 'Hello');
emitter.emit('message', 'World');
unsubscribe();
emitter.emit('message', 'Ignored');
console.log(emitter.emit('message', 'Still ignored'));
🫡 qnm: A CLI Tool to Look Into node_modules

If you’ve ever been overwhelmed by what’s in node_modules, this tool lets you dig around with some guidance as to what is what. You can use fuzzy search to find specific things as well as see which modules are using the most space (you can try it right now with `npx qnm doctor`).

Ran Yitzhaki
Please open Telegram to view this post
VIEW IN TELEGRAM
CHALLENGE

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const result = numbers
.filter(num => num % 2 === 0)
.map(num => num * 2)
.reduce((acc, num, index, array) => {
if (index === array.length - 1) {
return (acc + num) / array.length;
}
return acc + num;
}, 0);

console.log(result);
What is the output?
Anonymous Quiz
41%
12
37%
10
14%
8
7%
6
🍊 Google Gen AI SDK for TypeScript and JavaScript v1

Why let Python developers have all the fun? Now you can harness the full power of Google’s Gemini API (and Vertex platform) from Node too. v1.0 landed a few days ago, but today we also get v1.1 which includes CommonJS support. The Gemini docs and examples now use it too (if you select JavaScript).

Google
Please open Telegram to view this post
VIEW IN TELEGRAM
CHALLENGE

const user = {
details: {
name: 'Alex',
contact: null,
preferences: {
theme: 'dark'
}
},
getInfo() {
return this?.details?.contact?.email ||
this?.details?.preferences?.theme ||
this?.details?.name ||
'Unknown';
}
};

console.log(user.getInfo());
What is the output?
Anonymous Quiz
47%
dark
24%
Unknown
20%
Alex
8%
null
🌲 Monorepo: From Hate to Love

A monorepo is like a BMW: it requires constant maintenance and attention. You can’t just set it up once and expect it to work smoothly for the next five years.

nairihar
Please open Telegram to view this post
VIEW IN TELEGRAM