Včera vyšla nová verzia javascriptovej runtime platformy Bun 1.1. Najdôležitejšou novinkou je pridaná podpora pre Windows. Zlepšil sa výkon a boli pridané nové API.
Okrem výkonu, ktorý má byť niekedy rádovo vyšší ako konkurenčný Node alebo Deno, má Bun viacero zaujímavých vlastností. Ide o all-in-one toolkit pre vývoj aplikácií v jazykoch JavaScript a TypeScript.
Bun má viacero predností:
- priamo spúšťa TypeScript kód
- je výkonným balíčkovým manažérom
- má zabudovaný test runner kompatibilný s jest
- podporuje JSX syntax
- má multiplatformovú podporu pre shell scripty
- kompiluje JS/TS kód do binárok
- má zabudovanú podporu pre Web APIs
> powershell -c "irm bun.sh/install.ps1 | iex"
Inštalácia na Windows je jednoduchá, stačí spustiť tento Powershell script.
import { Database } from "bun:sqlite"; const sql = ` CREATE TABLE cars(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255), price INT); INSERT INTO cars(name, price) VALUES('Audi', 52642); INSERT INTO cars(name, price) VALUES('Mercedes', 57127); INSERT INTO cars(name, price) VALUES('Skoda', 9000); INSERT INTO cars(name, price) VALUES('Volvo', 29000); INSERT INTO cars(name, price) VALUES('Bentley', 350000); INSERT INTO cars(name, price) VALUES('Citroen', 21000); INSERT INTO cars(name, price) VALUES('Hummer', 41400); INSERT INTO cars(name, price) VALUES('Volkswagen', 21600); ` const db = new Database(":memory:"); db.run(sql); const query = db.query('SELECT MAX(price) AS max_price FROM cars'); const res = query.get(); console.log(res.max_price); query.finalize();
Bun priamo podporuje prácu s databázou SQLite. Tento script vytvorí tabuľku v pamäti a získa z nej maximálnu hodnotu ceny stĺpca price.
const response = await fetch("https://webcode.me"); const html = await response.text(); console.log(html);
Bun priamo spúšťa fetch funkciu z Web API bez potreby dodatočnej inštalácie externej knižnice.
import { load } from 'cheerio'; const url = 'https://root.cz'; const response = await fetch(url); const body = await response.text(); let $ = load(body); let title = $('title'); console.log(title.text());
Vývojári tvrdia, že Bun podporuje väčšinu Node knižníc. Potom čo si stiahneme knižnicu cheerio bun add cheerio
môžeme príklad priamo spustiť pomocou bun get_title.js
.
> bun build get_title.js --compile --outfile gettitle > gettitle Root.cz - informace nejen ze světa Linuxu
Kód môžme tiež skompilovať do binárky.
Bun je zároveň test runnerom. API je kompatibilné s modulom jest.
// arith.js const add = (a, b) => a + b; const mul = (a, b) => a * b; const sub = (a, b) => a - b; const div = (a, b) => a / b; // export default { add, mul, sub, div }; module.exports = { add, mul, sub, div };
V module bun:test
máme funkcie pre testovanie.
// arith_test.js import { add, mul, sub, div } from './arith'; import { expect, test } from "bun:test"; test('2 + 3 = 5', () => { expect(add(2, 3)).toBe(5); }); test('3 * 4 = 12', () => { expect(mul(3, 4)).toBe(12); }); test('5 - 6 = -1', () => { expect(sub(5, 6)).toBe(-1); }); test('8 / 4 = 2', () => { expect(div(8, 4)).toBe(2); });
Testy spustíme pomocou príkazu bun test
.
Plugin pre VS Code je zatiaľ veľmi rudimentárny. Pre lepšiu podporu Bunu pre editory si budeme ešte musieť nejaký čas počkať.