Hlavní navigace

Vyšla javascriptová runtime platforma Bun 1.1

2. 4. 2024

Sdílet

Programátoři programátor firma Autor: Depositphotos

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ť.

Tato zprávička byla zaslána čtenářem serveru Root.cz pomocí formuláře Přidat zprávičku. Děkujeme!

Našli jste v článku chybu?

Autor zprávičky