Hampir semua sistem build memilih untuk menggunakan mekanisme arloji untuk menyelesaikan masalah berulang kali menghasilkan file pasca-membangun selama pengembangan. Namun, di bawah mekanisme arloji, kita harus menanggung masalah memodifikasi kode untuk waktu yang lama, dan harus minum seteguk teh setelah menyimpan kode sebelum menyegarkan dan melihat efeknya. Di sini kami mencoba mengeksplorasi mengapa Watch bukan peluru perak dan mencoba menemukan solusi yang lebih baik untuk masalah ini.
Fakta Berdasarkan Watch
Ketika sebuah file dimodifikasi, kita dapat mengetahui modifikasi file yang mungkin disebabkan oleh modifikasinya, jadi hanya membangun kembali file -file ini.
Biasanya, untuk file A, hubungan yang sesuai sangat akurat dalam membangun skenario seperti File B. Tetapi dalam skenario nyata, proses konstruksi seringkali tidak sesederhana itu. Misalnya:
File a + file b (direferensikan oleh file a) -> file c
Dalam skenario ini, ketika file B dimodifikasi, mungkin sulit untuk menemukan file mana yang perlu dikembalikan kembali dengan tugas konstruksi, karena banyak file dapat merujuk ke file B.
Kecuali kita membangun pohon dependensi dan memperbarui pohon ketergantungan setiap kali file diperbarui, dan memicu pembuatan file berdasarkan pohon ketergantungan baru. Tetapi ini mengharuskan setiap plug-in untuk mengimplementasikan mekanisme ini dengan sendirinya dan sangat rentan terhadap kesalahan. Oleh karena itu, pada kenyataannya, mekanisme arloji hanya menjalankan kembali seluruh tugas. Jadi saat proyek menjadi lebih besar, mekanisme arloji akan menjadi lebih lambat dan lebih lambat (karena semakin banyak file yang perlu dijalankan kembali seluruh proses, bahkan jika cache dikurangi dengan mengurangi waktu yang dibutuhkan untuk seluruh proses).
Larutan
SRC tersedia secara langsung
Alloyteam & @LDJKING, cukup letakkan SRC secara langsung dan letakkan tugas pembuatan di sisi browser, atau bahkan tidak membangun sama sekali. Ini tidak hanya dapat memodifikasi dan menyegarkan dalam waktu, tetapi juga mengurangi konsumsi waktu selama proses pengembangan. Konstruksi offline hanya bertanggung jawab untuk masalah optimasi kinerja dan bukan untuk efisiensi pengembangan.
Perwakilan yang khas termasuk lebih sedikit, bereaksi, dll. Tetapi ada beberapa masalah:
Sulit untuk menerapkan metode konstruksi yang elegan di sisi browser, dan sulit untuk memberikan fungsi yang kuat untuk lebih mengurangi biaya pengembangan. Sebagian besar dari mereka hanya dapat memperkenalkan skrip dengan cara yang mirip dengan <style type = "Text/Less"> </tyle> cara.
Urutan eksekusi dalam mode pengembangan tidak selalu sama dengan skenario yang sebenarnya, yang dapat menyebabkan bug yang tidak terlihat. Misalnya, menerapkan inline HTML tidak sinkron, tetapi dalam mode rilis disinkronkan, menghasilkan bug yang tidak dapat dijelaskan.
Kinerja kompilasi browser mengkhawatirkan, seperti versi JS Sass, dan kecepatan kompilasi hampir tak tertahankan.
Penting untuk mempertahankan dua set sistem konstruksi online dan offline, yang meningkatkan biaya pengembangan alat.
Konstruksi dinamis server lokal
Satu fakta adalah: dengan dukungan spesifikasi yang wajar, kami dapat kembali ke file entri yang diminta oleh browser ke file yang dibangun selama file. Dengan cara ini kita dapat secara dinamis memicu proses pembangunan.
Dengan membuat server secara lokal, biarkan server menangkap permintaan dan membangunnya secara dinamis di server. Selama kita kembali ke file entri, kita dapat membuang file entri ke dalam pipa yang terdiri dari plug-in Gulp, dan output adalah file yang diperlukan oleh browser.
Dengan cara ini kita dapat menyelesaikan semua masalah di atas.