През април 2022 г. беше издадена версия на NodeJS Node v18. Актуализацията на Node v18 беше една от най-очакваните актуализации след Node v14, която добави асинхронен локален API за съхранение, системен интерфейс за уеб асемблиране (WASI) и поддръжка за модули ECMAScript.
Надстройката v18 добавя различни подобрения към NodeJS, включително глобално активиран API за извличане по подразбиране, поддръжка на API за уеб поток и основен модул за тестване. Тук обхващаме повечето от значителните промени в NodeJS във v18.
1. API за извличане
API за извличане предоставя интерфейс за достъп и манипулиране на HTTP заявки и отговори. Преди NodeJS v18 HTTP заявките, направени с NodeJS, изискваха библиотеки на трети страни като axios и извличане на възел или сложното http или https пакет.
NodeJS v18 прави API за извличане достъпен в глобалния обхват по подразбиране. Глобалният API за извличане елиминира необходимостта от библиотеки на трети страни като axios и подробния код, свързан с https пакет при извличане на ресурси асинхронно в мрежа.
Ето пример за използването на API:
const getData = асинхроннофункция () {
опитвам {
const res = чакам извличане ("https://example.com/users");
const данни = чакам res.json();
конзола.log (данни);
} улов (грешка) {
конзола.log(`Нещо се обърка, ${error}`);
}
};
getData();
В getData функцията по-горе изпраща a ВЗЕМЕТЕ заявка за извличане на ресурсите от " https://example.com/users". API за извличане също приема незадължителен втори параметър, обект с опции. Обектите с опции трябва да съдържат подробности за заявката. Например:
const потребителски данни = {
име: "Джон Сноу",
възраст: 25,
пол: "М",
};
const postData = асинхроннофункция (данни) {
опитвам {
const res = чакам извличане ("https://example.com/users", {
метод: "ПУБЛИКАЦИЯ",
тяло: JSON.stringify (данни),
});
const responseData = чакам res.json();
конзола.log(
„Заявката беше успешна, Ето подробностите: ${responseData}`
);
} улов (грешка) {
конзола.log(„Заявката беше неуспешна, Ето подробностите: ${error}`);
}
};
postData (userData);
Въпреки че API за извличане все още е експериментален, трябва да работи добре за повечето потребители.
2. Поддръжка за API за уеб потоци
Помислете за мултимедийни приложения или приложения в реално време; това е основен случай на използване на API за уеб потоци. API за уеб потоци е набор от интерфейси, които позволяват програмното разбиване на голям ресурс, получен през мрежа, на малки парчета, след което го обработва малко по малко.
Пример за поток е тялото на отговора, върнато от успешно извличам искане. Тялото на отговора е от този тип ReadableStream.
NodeJS v18 разкрива an експериментален внедряване на API за уеб потоци. С тази актуализация API за уеб потоци вече са налични както в клиента, така и в сървъра, което прави разработката по-лесна.
Можете да намерите списък с поддържаните в момента потоци в официални бележки за изданието.
3. Модулът Test Runner
В по-ранните версии на NodeJS тестването без библиотеки на трети страни беше извършено с вградената твърдят библиотека.
В твърдят библиотеката улесни писането на прости тестове, но имаше значителни ограничения, които затрудниха работата с множество тестови пакета. Тези ограничения насърчиха необходимостта от библиотеки на трети страни като Jest да изпълняват по-усъвършенствани тестове.
NodeJS v18 елиминира необходимостта от библиотеки на трети страни с въвеждането на собствения основен модул за тестване на NodeJS. Тестовата програма поддържа функции като подтестове, пропускане на тестове, тестове за обратно извикване и т.н., подобно на Jest.
За да използвате тестовата програма, трябва да импортирате твърдят от твърдят и тест от възел: тест. Забележете "възел:" префикс; това е новият протокол на Node, който разграничава основните пакети на възела от пакетите, създадени от потребителя.
constтвърдят = изисквам("твърдят");
const тест = изискват("възел: тест");
Ето пример за прост тест с помощта на модула за тестване:
тест("Проверете дали низовете са еднакви", (t) => {
assert.strictEqual("тест", "тест");
});
Резултатите от теста, показани от участника, ще бъдат включени TAP (Test Anything Protocol) формат. Имайте предвид, че тази функция все още е експериментална и може да се промени по всяко време.
4. Други надстройки и поправки
Актуализацията на Node v18 също включва актуализация на двигателя v8 до версия 10.1. Двигателят v8 е времето за изпълнение на JavaScript, използвано от NodeJS за изпълнение на JavaScript.
Актуализацията v8 прави методи на масивиfindLast и findLastIndex наличен в NodeJS и подобрява производителността на полетата на класа и методите на частния клас.
NodeJS също така излага следните API в глобалния обхват в надстройката на Node v18:
- Blob
- BrodcastChannel
Надстройка до Node v18
Използвайки Node v18, можете да тествате цяло приложение без външни библиотеки, да извличате ресурси асинхронно без външни библиотеки и да имате активирани уеб потоци във вашия сървър.
Въпреки това си струва да се отбележи, че тези функции са все още експериментални и могат да се променят по всяко време. Можете да надстроите до NodeJS v18 с помощта на официална връзка за изтегляне.