Membina EventPress Bahagian 1

Barbara Streisand
Lepaskan: 2024-11-19 16:53:02
asal
503 orang telah melayarinya

Hei! Sekadar nota sebelum anda bermula... sudah lama saya tidak menulis. Saya telah mengancam untuk berbuat demikian selama berabad-abad, dan akhirnya saya fikir ini adalah topik yang baik untuk dimulakan seperti mana-mana topik. Saya agak berkarat tetapi akan cuba teruskan dan semoga bertambah baik.

Building EventPress  Part 1

EventPress mungkin perkara terbesar yang saya usahakan. Saya telah terlibat sejak awal lagi dan apl itu telah berkembang pesat melalui 3 versi utama sejak 10 tahun yang lalu. Versi 4 kini berada di atas meja dan terdapat beberapa perubahan yang ingin saya ubah semasa kami berusaha melaluinya.

Pertama, sedikit sejarah. EventPress dimiliki oleh HotPress Media dan telah dimulakan kerana pelanggan meminta penyelesaian mudah untuk mengurus RSVP acara yang boleh menggantikan hamparan Excel mereka. Versi pertama EventPress itu adalah hodoh. Tidak ada spesifikasi, kami menjalankan projek tanpa rancangan yang betul dan berakhir dengan semangkuk spageti gergasi. Tetapi ia berkesan, dan ia membantu untuk masuk ke pintu dengan salah satu syarikat terbesar di Afrika Selatan.

Versi 2 merupakan satu lonjakan besar. Kami tidak banyak berubah dalam cara Antara Muka, tetapi rangka kerja asas telah melalui perubahan besar. EventPress telah dipindahkan ke Laravel (versi 5 pada masa itu), dan walaupun banyak kod dari versi 1 ditemui kepada versi 2, strukturnya jauh lebih baik dan kami menghadapi masalah yang jauh lebih sedikit. Kami masih tidak mempunyai apa-apa jenis suite ujian pada masa itu dan kami pada asasnya menguji bahan berdasarkan "ia berfungsi pada mesin saya". Tidak hebat.

Building EventPress  Part 1

Indeks acara versi 2

Versi 3 membawa baik pulih lengkap pada UI, dan Tailwind menjadi rangka kerja CSS pilihan. Banyak kod telah ditukar, walaupun masih terdapat sejumlah besar kod versi 1 yang bersembunyi di sudut gelap. Perubahan besar kepada versi 3 ialah sistem pengedaran serba baharu. Kami belajar banyak tentang menghantar mel besar-besaran semasa peralihan itu.

Sebilangan besar orang ramai yang menghadapi UI adalah salinan langsung daripada versi 2. Malah sekarang, kebanyakan daripada apa yang dilihat oleh peserta masih merupakan kod versi 2. Sebaliknya, versi 3 membawa lebih banyak struktur kepada asas kod. Terdapat logik tertentu yang mula muncul ke hadapan. Kami menulis pengawal nipis dan bersandar berat pada bekas perkhidmatan. Versi 3 juga merupakan versi pertama EventPress yang menggunakan suite ujian.

Building EventPress  Part 1

Indeks acara versi 3

Saya telah lama menulis kod PHP, tetapi saya belajar sendiri. EventPress bagaikan dihumban ke hujung yang dalam tanpa arah untuk berenang. Ia adalah keluk pembelajaran yang besar, tetapi ia membawa saya ke tahap saya sekarang. Saya membina sendiri perkara ini dengan sedikit input daripada pembangun lain.

Kali ini, saya akan menulis blog melalui pembangunan EventPress 4. Bukan sebab nak cari kelulusan, tapi sebab nak rakam kali ni. Dan mungkin penyelesaian saya boleh membantu pemaju solo yang lain. Saya telah belajar banyak tentang membina dan menjalankan aplikasi PHP yang besar.

EventPress 4 akan menjadi penulisan semula yang besar. Walaupun banyak kod EventPress 3 akan berakhir dalam versi 4, ia bukan sekadar salin dan tampal. Saya rasa sudah tiba masanya untuk akhirnya menyingkirkan semua bit lapuk yang melekat sejak versi 1; Saya mahukan suite ujian yang lebih mantap; dan saya ingin memanfaatkan beberapa teknologi yang lebih baharu.

Rancangan saya adalah untuk menulis sesuatu sekurang-kurangnya sebulan sekali semasa saya menyelesaikannya. Saya akan cuba memaksa diri saya untuk mengekalkannya.

Jadi pergi dahulu, ke dalam pergaduhan...

Di mana untuk bermula.

EventPress 4 tidak akan mendapat UI baharu. Kami akan menggunakan hampir semua antara muka dari versi 3, dan mungkin hanya beberapa perubahan kecil di sana sini. UI EventPress dibina menggunakan Vue 3 dan Tailwind dan Inertia ialah gam pilihan kami.

EventPress 4 akan menjadi salinan ciri 1 berbanding 1 versi 3. Ini bermakna apabila versi 3 berkembang dalam beberapa bulan akan datang, maka versi 4 perlu dikembangkan bersamanya. Buat masa ini, ia hanya sedikit perancangan.

sebagai permulaan, saya melihat di mana Versi 3 masih bergelut dan membuat beberapa nota tentang cara elemen tersebut boleh dipertingkatkan dalam versi 4. Saya telah membina idea tentang cara saya ingin mendekati membina versi ini EventPress. Terdapat beberapa kebiasaan dan beberapa perkara baharu:

  • Laravel 11
  • Vue 3
  • InertiaJS 2
  • Laravel Octane pada FrankenPHP
  • PHP 8.4
  • MySQL (Dan SQLSRV untuk Pelanggan Perusahaan)
  • Caddy

Ada beberapa pilihan menarik di sana, saya tahu. Octane adalah yang besar untuk kami kerana kami tidak pernah menggunakan sesuatu seperti itu sebelum ini. Octane ialah pakej pihak pertama untuk Laravel yang membantu menjalankan apl anda pada pelayan aplikasi PHP. Swoole, RoadRunner dan FrankenPHP disokong. Kami melihat ketiga-tiga pilihan dan memutuskan FrankenPHP buat masa ini. Ia lebih baharu daripada dua yang lain, tetapi menawarkan prestasi yang sangat baik. Tawaran Swoole mempunyai pekerja serentak, yang bagus, tetapi bukan sesuatu yang kami rasa kami perlukan. Walau bagaimanapun, pemutus perjanjian adalah bahawa ia memerlukan sambungan Swoole dipasang. Itu bukan sesuatu yang kami boleh jangkakan pelanggan perusahaan kami lakukan. Saya juga mempunyai sedikit pengalaman dengan FrankenPHP, jadi itu masuk akal.

Kami telah menggunakan Nginx selama bertahun-tahun. Ia hebat dan saya tidak boleh mengesyorkannya cukup. Walau bagaimanapun, FrankenPHP datang dengan pelayan Caddynya sendiri, jadi kami sedang bereksperimen dengan ini juga. Kami mungkin tidak berpegang kepada Caddy, tetapi buat masa ini, ia berada dalam senarai.

PHP 8.4 belum dikeluarkan lagi, tetapi memandangkan EventPress 4 tidak akan keluar untuk sementara waktu, masuk akal untuk memulakan pada versi terkini yang kami boleh. Sehingga berita ini ditulis, PHP 8.4 tinggal kira-kira sebulan lagi daripada keluaran, jadi kami menggunakan calon keluaran terbaharu.

InertiaJS 2 adalah cerita yang sama. Ia juga dalam BETA, tetapi memandangkan kami masih jauh dari keluaran, ia mungkin akan dikeluarkan lama sebelum EventPress dikeluarkan. Selain itu, kami menjalankan InertiaJS 1 dalam BETA untuk usia tanpa masalah.

Analisis Statik

Saya seorang penukar analisis statik baru-baru ini. Yang paling saya gunakan ialah bahan yang PHPStorm berikan kepada saya sebagai kod saya. Untuk EventPress 4, kami telah memutuskan untuk menggunakan sepenuhnya dan membawa PHPStan ke dalam campuran. PHPStan ialah penganalisis statik pihak ketiga untuk PHP. Ia sangat mudah untuk dikonfigurasikan dan telah membantu saya menghapuskan beberapa pepijat dalam beberapa projek lain.

Berdasarkan saiz EventPress, ia juga masuk akal di sini. Untuk membuat ini berfungsi, saya telah menambahkan skrip Komposer test:types yang boleh saya jalankan bila-bila masa saya mahu dan ditambahkan pada skrip CI.

Kod Linting

Saya tidak pernah menjalankan linter kod PHP. Saya telah menggunakan PHP Mess Detector beberapa kali, tetapi tidak pernah benar-benar terjebak ke dalamnya. Untuk EventPress 4, kami telah memutuskan bahawa linter akan membantu memastikan kod kemas dan konsisten. Kami telah memilih untuk "Pint" Laravel sendiri yang sebenarnya hanya pembalut sekitar PHP-CS-Fixer dan menyediakan cara yang sangat mudah untuk memastikan kod kami kemas. Sekali lagi, saya telah menambah lint dan test:lint skrip Komposer untuk memudahkannya dijalankan.

Persekitaran Dev

Saya bekerja pada kedua-dua mesin Mac dan Linux semasa pembangunan. Saya mempunyai M1 Max di atas meja saya yang telah saya miliki selama beberapa tahun, dan beberapa mesin Linux tersebar di sekeliling pejabat. Pemacu utama saya ialah Mac dan saya melakukan kebanyakan kerja pembangunan saya di sana, tetapi semua kod saya dijalankan pada mesin Linux. Biasanya Pelayan Ubuntu.

EventPress 4 menambah beberapa bahagian baharu pada teka-teki, tetapi saya rasa sebahagian besarnya saya boleh terus membangunkan cara yang saya lakukan sekarang. Saya menggunakan Homebrew untuk memasang kebanyakan alatan dan Laravel Valet untuk menjalankan persekitaran dev tempatan. Saya bukan pengguna Laravel Herd (Ia bagus, tetapi saya lebih menyukai pengguna Herd Pro dan saya tidak boleh mewajarkan membelanjakan $99 setahun untuk alat yang melakukan semua yang saya boleh lakukan, hanya sedikit lebih cepat dan lengkap. UI yang bagus).

Jadi rancangan saya ialah mempunyai domain eventpress4.test yang dijalankan dengan pangkalan data MySQL pada mesin tempatan saya. Saya akan menggunakan keadaan ini untuk seketika semasa pembangunan awal dan hanya melakukan beberapa ujian dengan Octane setiap beberapa hari atau lebih. Sebaik sahaja kami melalui bahagian awal, kami akan memulakan pembangunan menggunakan Octane dengan lebih kerap. Kami akan mengehoskan pelayan ujian yang menjalankan apl itu kerana kami berhasrat untuk menjalankannya dalam pengeluaran.

Bekas

EventPress tidak pernah disimpan dalam bekas. Walau bagaimanapun, EventPress 4 mungkin akan berjalan seperti itu. Kami masih bereksperimen dengan beberapa perkara tetapi kami telah berbual dengan beberapa pelanggan perusahaan kami dan kami merasakan bahawa ini akan membantu menjadikan proses penempatan lebih mudah untuk mereka. Kami mempunyai beberapa ujian awal yang menjalankan EventPress 3 dalam bekas Docker, dan kami rasa ini akan menjadi langkah yang tepat untuk semua keluaran EventPress pada masa hadapan.

GIT

Selama bertahun-tahun, kami telah banyak bergantung pada GitLab sebagai perkhidmatan CI/CD pilihan kami. GitLab menjalankan beberapa saluran paip CI yang kompleks dan melakukan penempatan untuk hampir setiap projek yang saya kerjakan.

Walau bagaimanapun, saya juga telah menjadi pengguna GitHub selama bertahun-tahun. Saya telah menggunakannya terutamanya untuk kerja sumber terbuka saya, tetapi baru-baru ini mula memindahkan beberapa projek yang lebih kecil ke akaun GitHub berbayar dan saya sangat kagum. Terdapat beberapa perkara yang berfungsi dengan sangat berbeza dengan GitLab, tetapi dalam kebanyakan aspek saya sangat gembira.

Jadi kod EventPress 4 akan dihoskan di GitHub dan kami akan menggunakan Actions for atau saluran paip CI dan semua penempatan.

Bersedia, pergi!

Saya rasa itu sahaja untuk siaran ini. Masih terdapat beberapa perancangan untuk dilalui, tetapi saya telah mula meletakkan beberapa kod dan menulis beberapa ujian. Saya sudah mempunyai lapisan pengesahan asas (Terima kasih Laravel), walaupun kebanyakannya sama dengan EventPress 3. Saya akan menunjukkan beberapa kod dalam yang seterusnya. Janji!

Building EventPress  Part 1

Log masuk versi 4 awal

Atas ialah kandungan terperinci Membina EventPress Bahagian 1. 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