Rumah  >  Artikel  >  hujung hadapan web  >  Panduan penggunaan Inertia.js: Gambaran keseluruhan, contoh dan alternatif

Panduan penggunaan Inertia.js: Gambaran keseluruhan, contoh dan alternatif

Patricia Arquette
Patricia Arquetteasal
2024-10-24 05:34:02513semak imbas

Ditulis oleh Rahul Chhodde✏️

Rangka kerja bahagian hadapan moden berpasangan dengan baik dengan rangka kerja tindanan penuh khusus mereka — seperti React with Next.js, Vue dengan Nuxt.js dan Svelte dengan SvelteKit. Tetapi kemudahan penggunaan yang sama dan sokongan luar biasa nampaknya mustahil apabila memasangkan penyelesaian bahagian hadapan moden seperti React dengan rangka kerja bahagian belakang tradisional atau bahagian pelayan seperti Laravel.

Jurang kebolehsuaian antara penyelesaian bahagian hadapan JavaScript dan rangka kerja hujung belakang tradisional ini diisi oleh Inertia.js. Dalam panduan penggunaan ini, kita akan mempelajari cara menggunakan Inertia untuk membina apl satu halaman (SPA) dengan rangka kerja hujung belakang tradisional dan bahagian hadapan JavaScript moden sambil mengekalkan penghalaan sebelah pelayan.

Apakah Inertia.js?

Inertia.js ialah alat yang membolehkan pembangun membina SPA moden dengan rangka kerja bahagian hadapan dan belakang yang popular tanpa memerlukan API di antaranya. Dicipta pada 2019 oleh Jonathan Reinink, idea utama di sebalik Inertia adalah untuk memudahkan proses membina SPA moden sambil memanfaatkan rangka kerja sisi pelayan sedia ada.

Dalam perkataan yang lebih mudah, Inertia berfungsi sebagai gam yang menyatukan rangka kerja bahagian pelayan dan bahagian pelanggan anda, memastikan komunikasi yang cekap antara bahagian belakang dan bahagian hadapan. Dengan Inersia, daripada mengekalkan dua pangkalan kod berbeza untuk bahagian hadapan dan bahagian belakang atau bahagian pelayan, anda membangunkan keseluruhan apl dalam satu pangkalan kod seperti monolit.

Bagaimanakah Inertia.js berubah dari semasa ke semasa?

Pada mulanya, Inertia hanya menyokong Vue dan Laravel. Dengan keluarannya yang kemudian, ia berkembang dan melanjutkan sokongannya untuk lebih banyak rangka kerja.

Monolit Inersia moden menyediakan ciri penting seperti pemaparan sisi pelayan (SSR), versi aset automatik, pemuatan malas untuk komponen halaman, sokongan TypeScript dan banyak lagi. Kami akan meneroka sokongan rangka kerjanya kemudian sambil membincangkan penyepaduan rangka kerja.

Cara Inertia.js berfungsi

Inersia berfungsi seperti penyesuai antara bahagian hadapan dan hujung belakang. Ia berbeza daripada SPA biasa dalam aspek berikut:

  • Mengekalkan penghalaan sebelah pelayan sambil memberikan pengalaman seperti SPA
  • Menggantikan muat semula halaman penuh dengan permintaan pengambilan kecil
  • Menerima data JSON sebagai balasan daripada pelayan
  • Memerlukan lebih sedikit JavaScript untuk penghidratan

Apabila permintaan dibuat daripada penyemak imbas menggunakan apl berkuasa Inertia, permintaan itu sampai ke hujung belakang dahulu. Akibatnya, respons Inertia dibuat, mengembalikan dokumen HTML penuh terlebih dahulu dengan perpustakaan JavaScript Inertia kepada penyemak imbas melalui klien Inertia.

Untuk navigasi seterusnya, klien Inertia membuat permintaan pengambilan dan menerima data JSON sebagai balasan daripada pelayan. Menggunakan data yang diterima ini, pelanggan kemudian mengemas kini bahagian hadapan dan perubahan ditunjukkan pada apl tanpa muat semula halaman penuh.

Berikut ialah carta alir yang menerangkan keseluruhan proses itu dalam cara visual:
Inertia.js adoption guide: Overview, examples, and alternatives

Bacaan lanjut:

  • Pengenalan kepada Inertia.js

Mengapa memilih Inertia.js?

Jika anda berada dalam situasi di mana anda mesti menggunakan rangka kerja hujung belakang tradisional untuk SPA anda, tetapi mempunyai kebebasan untuk mengendalikan bahagian hadapan mengikut kemahuan anda, anda harus mempertimbangkan untuk menggunakan Inertia atau alat yang serupa.

Inertia dibuat khusus untuk Laravel dan memberikan kestabilan yang lebih besar dalam projek Laravel. Jika anda seorang pembangun Laravel dan ingin melakukan lebih daripada apa yang ditawarkan oleh templat Blade secara lalai, Inertia ialah sesuatu yang anda mungkin mahu cuba.

Anda boleh meneroka beberapa lagi kes penggunaan di mana Inertia boleh menjadi rakan anda. Dua bahagian seterusnya merangkumi beberapa kebaikan dan keburukan menggunakan Inertia, yang akan membantu anda membuat keputusan termaklum tentang memilihnya untuk pembangunan apl anda.

Keburukan Inertia.js

Terdapat beberapa kelemahan SPA yang diketahui secara umum yang tidak akan kami bincangkan di sini. Sebaliknya, kami akan menyentuh tentang kelemahan Inersia sebagai utiliti pembangunan.

Kurang fleksibel

Dengan Inersia, anda mengekalkan bahagian hadapan dan hujung belakang apl anda dalam satu pangkalan kod. Gandingan yang ketat ini menjadikan Inertia tidak sesuai untuk projek yang menuntut pengekalan bahagian hadapan dan belakang secara berasingan untuk kebolehselenggaraan yang lebih baik, pengasingan kebimbangan, kebolehskalaan, pembangunan bebas, fleksibiliti tindanan teknologi dan sebab-sebab lain.

Pengalaman pembangun

Menggunakan alat seperti Inertia menambah satu lagi utiliti pada timbunan anda untuk meneroka dan belajar. Memahami corak dan konvensyen khusus Inersia mempunyai keluk pembelajaran yang sederhana, yang boleh menjadi sedikit menjengkelkan dan memakan masa.

Memandangkan menyesuaikan diri dengan alatan seperti Inertia untuk bahagian hadapan dan bahagian belakang belum lagi menjadi arus perdana, tiada cara standard untuk melakukan sesuatu dengannya. Oleh itu, beralih daripada Inersia akan memerlukan pemfaktoran semula yang ketara, terutamanya pada bahagian hadapan.

Selain itu, kerumitan ujian, terutamanya untuk ujian API dan unit, pasti akan meningkat kerana sempadan antara bahagian hadapan dan bahagian belakang bertepatan dalam monolit.

Komuniti kecil

Inertia mempunyai lebih 6,000 bintang di GitHub dan lebih 85 penyumbang. Penyesuai Laravelnya mempunyai lebih 2,000 bintang. Semua statistik ini digabungkan jauh lebih rendah daripada alatan dalam kategori yang sama yang tidak menawarkan banyak ciri dan sokongan rangka kerja seperti Inertia.

Jadi mungkin terdapat keadaan apabila anda ingin membina sesuatu yang khusus dengannya dan tidak dapat mencari rujukan serta panduan yang mencukupi untuk diikuti.

Lihat jadual di bawah untuk perbandingan langsung antara Inertia.js dan beberapa pesaingnya seperti Livewire.

Bacaan lanjut:

  • Livewire lwn. Inertia.js: Membandingkan bahagian hadapan Laravel

Pertimbangan teknikal

Membuat apl anda di luar talian dahulu boleh menjadi rumit dengan Inersia, kerana mewujudkan strategi caching yang wajar tidak mudah dengan alat ini. Anda juga harus ingat bahawa Inertia, secara lalai, menghantar komponen halaman penuh pada setiap permintaan, meningkatkan saiz muatan, yang boleh diselesaikan dengan muat semula separa.

Kelebihan Inertia.js

Inersia mempunyai beberapa kelebihan umum berbanding SPA tradisional yang diberikan oleh pihak pelanggan. Mari kita bincangkan beberapa kekuatan utamanya satu demi satu.

Penyepaduan yang lancar

Inertia disepadukan dengan sempurna dengan rangka kerja bahagian hadapan dan belakang yang popular, serta menyediakan sokongan tangan pertama untuk Vue dalam binaan demonya. Rangka kerja dan perpustakaan yang disokong, kedua-dua bahagian hadapan dan bahagian belakang digabungkan, termasuk Laravel, Rails, Phoenix, Django, React, Vue dan Svelte.

Laravel membolehkan anda membina aset anda dengan Vite, memberikan anda pengalaman pembangunan yang lebih pantas dan lebih produktif daripada Laravel Mix berasaskan Webpack. Himpunan aset berasaskan Vite sesuai dengan bil dengan sempurna jika matlamat anda adalah untuk melaksanakan bahagian hadapan berasaskan JavaScript.

Bacaan lanjut:

  • Bermula dengan Inertia.js, Vue.js dan AdonisJs
  • Mencipta apl satu halaman dengan Laravel dan Vue

Pembangunan yang dipermudahkan

Walaupun pengalaman pembangun yang sedikit lemah seperti yang diterangkan di atas, Inertia menawarkan penyepaduan yang dipermudahkan, menghapuskan keperluan untuk API yang berasingan agar bahagian hadapan dan bahagian belakang berfungsi bersama. Inersia membolehkan anda menggunakan kit pemula dan menyediakan panduan pemasangan manual untuk menyediakan kedua-dua sisi klien dan persekitaran sisi pelayan untuk pembangunan.

Prestasi

Daripada menghantar HTML yang diberikan pelayan sepenuhnya dengan himpunan JavaScript yang besar kepada pelanggan, apl Inertia menerima cangkerang HTML minimum dengan data JSON awal yang menghasilkan secara perbandingan lebih pantas pada klien.

Ini menjadikan apl berasaskan Inertia lebih baik sedikit dalam prestasi awal tanpa kerumitan tambahan daripada SPA yang diberikan oleh pihak pelanggan biasa. Ia juga menambah UX kualiti yang lebih baik secara keseluruhan dan menambah baik Cat Kandungan Pertama, metrik Teras Web Vital yang penting.

Bacaan lanjut:

  • Amalan terbaik Core Web Vitals untuk SPA

mesra SEO

Apl berasaskan inersia menggunakan penghalaan sisi pelayan, yang menghasilkan URL yang lebih kemas dan mudah dirangkak. Ini menjadikan pengendalian metadata untuk setiap halaman cukup mudah. Selain itu, seperti yang dibincangkan dalam perkara terakhir, apl ini berkemungkinan mempunyai skor FCP yang lebih baik disebabkan oleh jumlah kecil data awal yang dihantar kepada pelanggan.

Kedua-dua ciri ini digabungkan menghasilkan SEO yang lebih baik dan memberikan apl Inertia.js kelebihan berbanding SPA tradisional.

Petua: Jika pemaparan sisi klien (CSR) memberi kesan negatif terhadap metrik FCP, anda boleh memilih apl yang diberikan pelayan sepenuhnya dengan pemalam SSR Inertia.js untuk meningkatkan skor.

Saiz bundle

Memandangkan Inertia.js bertindak sebagai penyesuai antara bahagian hadapan dan bahagian belakang, ia sangat padat (seperti yang sepatutnya), dengan berat hanya kira-kira 15kB dikecilkan dan dizipkan.

Dokumentasi

Dokumentasi inersia membolehkan anda bermula dengan segera, terutamanya apabila menggunakan Laravel sebagai rangka kerja bahagian belakang anda. Ia juga mempunyai panduan naik taraf untuk versi dan sampul lama daripada konsep umum kepada lanjutan semuanya di satu tempat.

Bermula dengan Inertia.js

Mari kita pelajari cara menyediakan Inertia dengan dua penyelesaian bahagian hadapan dan bahagian belakang yang paling popular: hujung belakang berasaskan Laravel dengan bahagian hadapan berkuasa React. Anda mungkin mendapati semua kod yang diliputi dalam tutorial ini dalam repositori GitHub ini.

Perhatikan bahawa persediaan ini tidak melibatkan penggunaan TypeScript demi kesederhanaan.

Pemasangan sisi pelayan

Dengan mengandaikan anda telah memasang Laravel pada mesin anda, mari buat projek Laravel baharu dengan menggunakan arahan pemasang Laravel:

laravel new

Anda sepatutnya melihat sesuatu seperti di bawah dalam terminal pembangun anda:
Inertia.js adoption guide: Overview, examples, and alternatives
Selepas melaksanakan arahan itu dalam terminal dan memberikan nama untuk projek anda, pemasang akan meminta anda memilih kit permulaan dan rangka kerja ujian, memulakan repo Git dan melalui logistik persediaan lain.

Kit permulaan seperti Breeze atau Jetstream menyediakan beberapa perancah berasaskan Inertia.js siap pakai dengan apl tunjuk cara, tetapi kami tidak mahu perkara itu. Kami akan menetapkan perkara dari awal.

Bacaan lanjut:

  • Timbunan Inertia-React Laravel Breeze lwn. Next.js dan Gatsby
  • Laravel lwn AdonisJs: Mana yang patut anda gunakan?

Menjelang akhir langkah pemasangan, anda akan digesa untuk memilih pangkalan data. Saya telah memilih pgsql kerana saya menggunakan PostgreSQL untuk menerangkan artikel ini. Pilih milik anda mengikut keutamaan pangkalan data anda.

Seterusnya, kita harus memasang integrasi Inertia.js untuk Laravel dengan menjalankan arahan komposer berikut dalam terminal:

composer require inertiajs/inertia-laravel

Arahan di atas akan memasang penyesuai Laravel untuk Inertia dan kebergantungannya. Ia juga akan menetapkan asas untuk Laravel dan Inertia untuk bekerjasama.

Selepas itu, mari tambahkan perisian tengah Inertia untuk mengendalikan permintaan Inersia dalam Laravel. Gunakan perintah artisan berikut untuk melakukannya:

laravel new

Pemasangan sisi pelanggan

Daripada templat Blade lalai Laravel, kami akan menggunakan React untuk mengendalikan halaman dan komponen kami. Mari cd ke dalam folder projek kami dan pasang React and React DOM menggunakan arahan berikut. Gunakan pengurus pakej Node pilihan anda untuk melakukannya:

composer require inertiajs/inertia-laravel

Mari pasang pemalam Vite's React sebagai pergantungan pembangunan, kerana kami akan menggunakan Vite sebagai pengurus aset kami sepanjang projek:

php artisan inertia:middleware

Akhir sekali, tambahkan sokongan Inersia untuk React menggunakan arahan di bawah:

pnpm add react react-dom

Saya juga menggunakan CSS Tailwind dengan persediaan ini, yang sepenuhnya pilihan. Jika anda juga ingin memasang Tailwind CSS, ia melibatkan langkah yang sama yang anda ikuti semasa memasang Tailwind CSS dengan apl React atau Vue.

Konfigurasi

Pertama sekali, cari fail app.js dalam direktori resources/js, namakan semula kepada app.jsx dan gantikan kandungannya dengan yang berikut:

pnpm add --save-dev @vitejs/plugin-react

Perubahan di atas akan membantu Inertia mengenal pasti halaman kami dan memautkannya ke laluan yang betul.

Seterusnya, mari namakan semula fail welcome.blade.php dalam direktori resources/view kepada app.blade.php dan gantikan kandungannya dengan yang berikut:

pnpm add @inertiajs/react

Perhatikan bahawa dalam struktur HTML asas untuk halaman web, fail ini mengandungi beberapa arahan Inertia dan Vite yang diperlukan untuk menyuntik skrip tertentu untuk menjalankan muat semula, menambah skrip dan banyak lagi.

Seterusnya, tambahkan middleware yang diperlukan dalam fail bootstrap/app.php untuk mengendalikan permintaan khusus Inersia:

import { createInertiaApp } from "@inertiajs/react";
import { createRoot } from "react-dom/client";
import "../css/app.css";

createInertiaApp({
  resolve: (name) => {
    const pages = import.meta.glob("./Pages/**/*.jsx", { eager: true });
    return pages[`./Pages/${name}.jsx`];
  },
  setup({ el, App, props }) {
    createRoot(el).render(<App {...props} />);
  },
});

Mari kita konfigurasikan pemalam React untuk berfungsi dengan Vite untuk menikmati faedah yang diberikannya:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  @viteReactRefresh
  @vite('resources/js/app.jsx')
  @inertiaHead
</head>
<body>
  @inertia
  <div id="app"></div>
</body>
</html>

Akhir sekali, mari jalankan Laravel dan React kedua-duanya menggunakan arahan berikut:

<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use App\Http\Middleware\HandleInertiaRequests;

return Application::configure(basePath: dirname(__DIR__))
  ->withRouting(
    web: __DIR__.'/../routes/web.php',
    commands: __DIR__.'/../routes/console.php',
    health: '/up',
  )
  ->withMiddleware(function (Middleware $middleware) {
    $middleware->web(append: [
        HandleInertiaRequests::class,
    ]);
  })
  ->withExceptions(function (Exceptions $exceptions) {
    //
  })->create();

Kita boleh menulis skrip Shell untuk menjalankan arahan ini bersama-sama dalam tetingkap terminal tunggal, tetapi untuk memastikan perkara itu mudah dan mudah, mari jalankan arahan ini dalam dua terminal berasingan buat masa ini.

Selepas arahan ini berjaya dilaksanakan, anda boleh melihat dua URL tempatan. Jalankan Laravel untuk melihat rupa apl Laravel anda. Dan dengan itu, anda telah berjaya menyediakan apl asas dengan Inertia!

Ciri utama Inertia.js

Anda boleh melakukan banyak perkara dengan apl Inersia anda. Mari lihat beberapa ciri menonjol yang perlu anda ketahui.

Halaman dan susun atur

Untuk mengatur reka letak dan halaman yang berbeza dengan lebih baik, buat dua subdirektori dalam direktori sumber/js. Anda juga boleh mengurus komponen anda dalam direktori berasingan di sini dan menggunakannya dalam halaman anda sesuka hati.

Berikut ialah contoh ringkas reka letak utama kami:

import { defineConfig } from "vite";
import laravel from "laravel-vite-plugin";
import react from "@vitejs/plugin-react";

export default defineConfig({
  plugins: [
    laravel({
      input: "resources/js/app.jsx",
      refresh: true,
    }),
    react(),
  ],
  resolve: {
    alias: {
      "@": "/resources/js",
    },
  },
});

Ini pada asasnya adalah komponen yang berfungsi sebagai susun atur asas dan oleh itu diletakkan dalam folder susun atur khusus. MainLayout kini boleh digunakan sebagai komponen dalam halaman kami seperti yang ditunjukkan dalam kod berikut:

laravel new

Berikut ialah gambaran bagaimana MainLayout.jsx dan About.jsx boleh bersama-sama membentuk halaman kerja dengan gaya yang disediakan oleh Tailwind CSS:
Inertia.js adoption guide: Overview, examples, and alternatives

Pautan dan penghalaan

Dengan penghalaan Laravel tradisional, mudah untuk mencipta laluan baharu dan menyambung ke halaman yang kami pelajari dalam segmen terakhir. Walaupun ia bukan berasaskan fail, penghalaan agak mudah untuk diuruskan. Jika anda telah bekerja dengan rangka kerja belakang berasaskan JavaScript seperti Express dan Fastify, anda sudah biasa dengan cara penghalaan berfungsi dalam Laravel.

Navigasi ke fail route/web.php, tambah laluan baharu dan paparkan halaman berkaitan menggunakan kaedah render Inertia seperti yang ditunjukkan dalam kod di bawah:

composer require inertiajs/inertia-laravel

Pautan dinamik dalam Inersia adalah serupa dengan React dan Next, dan boleh dilakukan menggunakan komponen Pautan Inertia seperti yang ditunjukkan di bawah:

php artisan inertia:middleware

Tangkapan skrin di bawah menunjukkan tingkah laku dinamik seperti SPA bagi navigasi yang baru kami pelajari mencipta dalam blok kod di atas:
Inertia.js adoption guide: Overview, examples, and alternatives

Permintaan HTTP (permintaan GET/POST/non-GET)

Inersia menyediakan cangkuk useForm untuk berfungsi dengan permintaan GET dan POST untuk mengendalikan keadaan dan penyerahan borang. Ia juga menyediakan cangkuk usePage, yang membolehkan anda mengakses data kongsi yang dihantar daripada pelayan kepada pelanggan, seperti mesej kejayaan atau kegagalan.

Berikut ialah contoh mudah yang membuat permintaan GET dan POST untuk memuatkan dan menghantar data pengguna. Ambil perhatian bahawa permintaan GET dikendalikan secara tersirat oleh Inertia, sementara kami membuat permintaan POST dengan kaedah siaran daripada cangkuk useForm untuk menghantar data ke pelayan:

pnpm add react react-dom

Menggunakan pendekatan ini, kita boleh menyusun halaman untuk mendapatkan senarai data daripada pangkalan data, menunjukkannya dalam jadual HTML dan juga menambah lebih banyak data ini pada pangkalan data menggunakan borang seperti yang ditunjukkan di bawah:
Inertia.js adoption guide: Overview, examples, and alternatives

Penunjuk kemajuan

Inertia.js menyediakan petunjuk kemajuan berasaskan NProgress. Anda boleh mendayakan ini semasa menubuhkan fail App.jsx dan menyediakan tetapan konfigurasi di sana untuk penunjuk kemajuan:

pnpm add --save-dev @vitejs/plugin-react

Jika anda tidak biasa dengan rupa animasi pemuatan NProgress, berikut adalah sedikit pandangan mengenainya:
Inertia.js adoption guide: Overview, examples, and alternatives

Penyepaduan pangkalan data

Jika anda bekerja dengan Laravel dengan kerap, anda tidak memerlukan banyak masa untuk menyepadukan dan menggunakan pangkalan data ke dalam persediaan Inersia anda. Cuma tambah bukti kelayakan pangkalan data yang diperlukan dalam fail .env, pastikan anda menggunakan pemacu pangkalan data yang betul, semak fail config/database.php dan anda boleh pergi.

Dengan pangkalan data sedia ada, anda boleh menggunakan sistem migrasi Laravel untuk menentukan skema pangkalan data yang diperlukan. Saya tidak mempunyai pangkalan data, jadi saya mencipta satu dan mengisinya dengan beberapa data pengguna palsu menggunakan mekanisme Laravel Seeder untuk dipaparkan pada bahagian hadapan. Berikut adalah beberapa langkah yang saya ikuti selepas itu:

  • Mencipta model untuk data pengguna saya dalam direktori aplikasi dan juga mencipta pengawal HTTP untuk mengendalikan permintaan pangkalan data mengenai data ini
  • Mencipta halaman Pengguna dalam direktori sumber/js/Halaman dan menyediakannya dengan prop yang mengambil tatasusunan pengguna. Tatasusunan pengguna ini mendapat data yang diperlukan melalui permintaan GET yang dibuat secara intrinsik dengan Inertia. Kami juga boleh membuat permintaan POST untuk menambah data pada pangkalan data
  • Menentukan laluan pengguna dalam fail route/web.php dan memautkan pengawal HTTP kami kepadanya

Bagi seseorang yang baharu dalam ekosistem Laravel atau yang tidak kerap menggunakan pangkalan data dengan Laravel, ini mungkin mengambil masa lebih sedikit daripada itu apabila memindahkan dan mengisi pangkalan data. Dalam kes sedemikian, mengosongkan cache konfigurasi mungkin sangat membantu untuk menyingkirkan ralat yang disebabkan oleh pilihan konfigurasi cache.

Kes penggunaan Inertia.js

Aplikasi berpotensi untuk Inersia adalah banyak dan pelbagai. Memadankan Laravel dengan bahagian hadapan JavaScript moden menggunakan Inertia memudahkan pembangunan tindanan penuh untuk apl monolitik dengan ciri bahagian belakang yang mantap.

Walaupun ia tidak sesuai untuk setiap pasukan atau situasi, berikut ialah beberapa kes penggunaan di mana anda mungkin mendapati Inertia sebagai pilihan yang baik:

  • Apl yang tidak mahu bergantung pada Blade untuk templat dan mahukan penyelesaian yang mantap untuk mengendalikan fungsi bahagian pelanggan
  • Apl lama yang menggunakan Laravel sebagai bahagian belakangnya tetapi ingin memanfaatkan perpustakaan moden yang kebanyakannya dibuat dan diselenggara untuk rangka kerja bahagian hadapan berasaskan JavaScript
  • Apl moden yang merancang untuk beralih ke bahagian belakang berasaskan Laravel untuk menikmati leverage yang ditawarkan oleh teknologi pelayan tradisional dan bukannya tanpa pelayan
  • SPA yang mahukan keterlihatan yang lebih baik pada enjin carian dan juga faedah prestasi SSR
  • Bagi mereka yang suka dan ingin bekerja dengan kedua-dua PHP dan JavaScript

Inertia.js lwn. Livewire lwn. Hybridly

Inersia bukan satu-satunya penyelesaian untuk merapatkan rangka kerja dan perpustakaan bahagian pelayan dan pihak pelanggan. Livewire dan Hybridly ialah dua alat popular lain dengan set faedah dan kelemahan mereka sendiri. Apabila membandingkan pilihan anda, anda mungkin ingin mempertimbangkan:

  • Komuniti — Inertia.js mempunyai komuniti yang agak kecil berbanding Livewire tetapi mempunyai komuniti yang lebih baik daripada Hybridly.
  • Ciri — Livewire dan Hybridly tidak menyediakan sokongan untuk melaksanakan rangka kerja bahagian hadapan, manakala Inertia.js terkenal dengan sokongannya untuk penyelesaian bahagian hadapan berasaskan JavaScript utama.
  • Prestasi — Kebanyakannya bergantung pada pelaksanaan, tetapi SPA berasaskan Inertia.js boleh memberikan persepsi prestasi yang lebih baik manakala apl yang diberikan pelayan menggunakan Livewire dan Hybridly boleh menjadi lebih baik kerana kebanyakan halaman dipaparkan oleh pelayan .
  • Dokumentasi — Livewire dan Inertia.js mempunyai dokumentasi yang baik berbanding Hybridly, yang agak baharu dan mempunyai skop untuk dipertingkatkan lagi.

Jadual ini menyediakan gambaran berguna tentang perbandingan ketiga-tiga ini untuk memaklumkan keputusan anda dengan lebih lanjut:

Feature Inertia.js Livewire Hybridly
Server-side framework Laravel, Rails Laravel only Laravel only
Client-side framework Vue.js, React, Svelte None (PHP-based) Vue.js
SPA-like experience Yes Yes Yes
Server-side rendering (SSR) Optional Yes Yes
Real-time updates No (needs additional setup) Yes Yes
Full-page reloads No No No
Learning curve Moderate Low Moderate
Component-based architecture Yes Yes Yes
State management Client-side Server-side Both
SEO-friendly Good Excellent Excellent
Backend-driven UI Partial Full Full
Progressive enhancement Limited Yes Yes
File uploads Supported Native support Supported
Pagination Supported Native support Supported
Form handling Client-side Server-side Both
Authentication Supported Native support Supported
Authorization Supported Native support Supported
Testing Both client & server Server Both client and server
Ecosystem/Community Small Large Small (newer)
Performance Very good Good Very good
Bundle size Larger (due to JS framework) Smaller Moderate
Offline support Possible Limited Possible
Mobile app development Possible Not ideal Possible

Kesimpulan

Dalam panduan penggunaan ini, kami mempelajari apa itu Inertia.js dan cara ia digunakan untuk mencipta aplikasi hibrid menggunakan rangka kerja hujung belakang tradisional seperti Laravel dan perpustakaan bahagian hadapan moden seperti React.

Kami belajar tentang kebaikan dan keburukan menggunakan Inertia, beberapa aplikasi praktikalnya dan contoh untuk menyediakannya dengan Laravel. Jika anda terperangkap semasa mengikuti panduan, pertimbangkan untuk mengkloning repositori GitHub ini untuk projek yang kami bincangkan, atau berikan ulasan dan saya berbesar hati untuk membantu anda.


Adakah anda menambah perpustakaan JS baharu untuk membina ciri baharu atau meningkatkan prestasi? Bagaimana jika mereka melakukan sebaliknya?

Tidak syak lagi bahawa bahagian hadapan semakin kompleks. Semasa anda menambahkan perpustakaan JavaScript baharu dan kebergantungan lain pada apl anda, anda memerlukan lebih keterlihatan untuk memastikan pengguna anda tidak menghadapi isu yang tidak diketahui.

LogRocket ialah penyelesaian pemantauan aplikasi bahagian hadapan yang membolehkan anda memainkan semula ralat JavaScript seolah-olah ia berlaku dalam penyemak imbas anda sendiri supaya anda boleh bertindak balas terhadap pepijat dengan lebih berkesan.

Inertia.js adoption guide: Overview, examples, and alternatives

LogRocket berfungsi dengan sempurna dengan mana-mana apl, tanpa mengira rangka kerja dan mempunyai pemalam untuk log konteks tambahan daripada Redux, Vuex dan @ngrx/store. Daripada meneka mengapa masalah berlaku, anda boleh mengagregat dan melaporkan tentang keadaan permohonan anda semasa isu berlaku. LogRocket juga memantau prestasi apl anda, melaporkan metrik seperti beban CPU pelanggan, penggunaan memori pelanggan dan banyak lagi.

Bina dengan yakin — mulakan pemantauan secara percuma.

Atas ialah kandungan terperinci Panduan penggunaan Inertia.js: Gambaran keseluruhan, contoh dan alternatif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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