Rumah > hujung hadapan web > tutorial js > Hono.js: Rangka Kerja Node.js Generasi Seterusnya

Hono.js: Rangka Kerja Node.js Generasi Seterusnya

Barbara Streisand
Lepaskan: 2025-01-06 22:33:42
asal
320 orang telah melayarinya

Hono.js: The Next-Gen Node.js Framework

Mengapa Belajar Hono

Hono.js: The Next-Gen Node.js Framework

Sudah ada banyak perpustakaan dan rangka kerja bahagian belakang untuk Node.js di pasaran. Saya telah menggunakan Nest.js untuk beberapa projek kecil sebelum ini. Ia mempunyai fungsi yang komprehensif dan membolehkan pelaksanaan projek yang cepat. Walau bagaimanapun, untuk projek kecil saya, banyak cirinya benar-benar berlebihan, dan ia mempunyai tahap enkapsulasi yang tinggi, meninggalkan sedikit kebebasan semasa menulis kod.

Kebetulan saya terjumpa Hono dalam talian. Selepas membaca dokumentasinya:

  • Ultra-pantas ? - Penghala RegExpRouter benar-benar pantas. Ia tidak menggunakan gelung linear. Cepat sahaja.
  • Ringan ? - Pratetap honor/tiny kurang daripada 12 kB. Hono mempunyai kebergantungan sifar dan hanya menggunakan API standard Web.
  • Multi-runtime ? - Ia berfungsi untuk Cloudflare Workers, Fastly Compute@Edge, Deno, Bun, Lagon, AWS Lambda atau Node.js. Kod yang sama dijalankan pada semua platform.
  • Mampu ? - Hono datang dengan perisian tengah terbina dalam, perisian tengah tersuai, perisian tengah pihak ketiga dan pembantu. Ia merangkumi semua.
  • DX yang Menyenangkan ?️ - Ia mempunyai API yang sangat bersih dan sokongan TypeScript yang sangat baik. Kini, kami mempunyai "jenis".

Kes Penggunaan

Hono ialah rangka kerja aplikasi web yang ringkas, serupa dengan Express, tetapi tanpa bahagian hadapan. Ia membolehkan anda membina aplikasi yang lebih besar apabila digabungkan dengan perisian tengah. Berikut ialah beberapa contoh kes penggunaan:

  • Membina antara muka web
  • Proksi pelayan belakang
  • Halaman hadapan CDN
  • Aplikasi tepi
  • Pelayan asas untuk perpustakaan
  • Aplikasi tindanan penuh

Bagus, mari kita mula mempelajarinya.

Hello Dunia

https://hono.dev/docs/getting-started/basic

Anda boleh mengubah suai port dengan menetapkan port.

import { Hono } from 'hono';

const app = new Hono();

app.get('/', (c) => {
    return c.text('Hello Hono!');
});

export default app;
Salin selepas log masuk
Salin selepas log masuk

Untuk melaksanakan:

npm run dev
Salin selepas log masuk
Salin selepas log masuk

Untuk mengakses: http://localhost:8787

Laluan

Kaedah HTTP

app.get('/', (c) => c.text('GET /'));
app.post('/', (c) => c.text('POST /'));
app.put('/', (c) => c.text('PUT /'));
app.delete('/', (c) => c.text('DELETE /'));
Salin selepas log masuk

Laluan Hierarki

const apiRoutes = app
   .basePath("/api")
   .route("/expenses", route1)
   .route("/", route2);
Salin selepas log masuk

BasePath("/api") sebelumnya menambahkan awalan /api pada semua laluan.

export const route1 = new Hono()
   .post("/", async (c) => {
        return c.json({ });
    });
Salin selepas log masuk

Anda boleh mengakses laluan di atas melalui http://localhost:8787/api/expenses.

Permintaan

Dapatkan Param Permintaan dan Pertanyaan

app.get('/posts/:id', (c) => {
    const page = c.req.query('page');
    const id = c.req.param('id');
    return c.text(`You want see ${page} of ${id}`);
});
Salin selepas log masuk

Lihat hasilnya: http://localhost:8787/posts/1?page=12

Dapatkan Kandungan Badan Permintaan

app.put("/posts/:id{[0-9]+}", async (c) => {
    const data = await c.req.json();
    return c.json(data);
});
Salin selepas log masuk

Jawapan

Selain text(), terdapat banyak kaedah seperti json(), html(), notFound(), redirect(), dll., untuk membuat permintaan mengembalikan jenis data yang berbeza. html() boleh terus mengembalikan JSX.

JSX

import { Hono } from 'hono';

const app = new Hono();

app.get('/', (c) => {
    return c.text('Hello Hono!');
});

export default app;
Salin selepas log masuk
Salin selepas log masuk

Hanya tukar sambungan fail kepada .tsx dan anda boleh terus menulis JSX, sangat seperti React.

Pengesah

Pengesah dilaksanakan melalui zod dan @hono/zod-validator untuk menyemak sama ada permintaan yang dihantar daripada pelanggan mematuhi format data yang ditentukan.
Pemasangan: benang tambah zod @hono/zod-validator
Contohnya, jika kami perlu mengesahkan bahawa dalam permintaan, format data yang dihantar oleh pelanggan mestilah:
akaun: rentetan; kata laluan: rentetan

npm run dev
Salin selepas log masuk
Salin selepas log masuk

Ketahui lebih lanjut daripada dokumentasi zod. Dan IDE boleh terus menunjukkan petunjuk jenis untuk pengguna.

Leapcell: Platform Tanpa Pelayan Termaju untuk Pengehosan Nodejs

Hono.js: The Next-Gen Node.js Framework

Akhir sekali, izinkan saya memperkenalkan platform yang sangat sesuai untuk menggunakan aplikasi Hono: Leapcell.

Leapcell ialah platform tanpa pelayan dengan ciri-ciri berikut:

  1. Sokongan Berbilang Bahasa
    • Bangun dengan JavaScript, Python, Go atau Rust.
  2. Gunakan projek tanpa had secara percuma
    • Bayar hanya untuk penggunaan — tiada permintaan, tiada caj.
  3. Kecekapan Kos Tiada tandingan
    • Bayar semasa anda pergi tanpa caj terbiar.
    • Contoh: $25 menyokong 6.94 juta permintaan pada purata masa tindak balas 60ms.
  4. Pengalaman Pembangun Diperkemas
    • UI intuitif untuk persediaan mudah.
    • Saluran paip CI/CD automatik sepenuhnya dan penyepaduan GitOps.
    • Metrik masa nyata dan pengelogan untuk mendapatkan cerapan yang boleh diambil tindakan.
  5. Kebolehskalaan Mudah dan Prestasi Tinggi
    • Penskalaan automatik untuk mengendalikan konkurensi tinggi dengan mudah.
    • Sifar operasi overhed — hanya fokus pada pembinaan.

Teroka lebih lanjut dalam dokumentasi!

Twitter Leapcell: https://x.com/LeapcellHQ

Atas ialah kandungan terperinci Hono.js: Rangka Kerja Node.js Generasi Seterusnya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan