Dari apa yang saya mengerti require
digunakan untuk memuat potongan kode besar (sesuatu seperti modul) meskipun juga dapat memuat fungsi individu.
Muatan otomatis di sisi lain, hanya mencatat fungsi dan membatalkan pemuatan ke waktu eksekusi.
Saya baru saja membaca sebuah artikel yang menganjurkan penggunaan autoload
secara eksklusif.
Apakah lebih baik autoload
daripada daripada require
? Apa beberapa kasus penggunaan khas untuk masing-masing kasus ini?
autoload
danrequire
dari pertanyaan ini. Menambahkan taglibraries
tidak masalah, tetapi sekarang siapa pun yang mencari, menggunakan tag, untuk pertanyaan tentangautoload
ataurequire
tidak akan menemukan ini. Keduanya adalah fungsi penting Emacs-Lisp yang akan dicari orang. Sangat buruk. Dan pikirkan betapa membantuelisp
danlibraries
(terutamaelisp
) akan benar-benar dalam praktek untuk situs Emacs: mereka tidak banyak berbeda di Emacsland, saya khawatir. (Tetapi tidak, saya tidak menentang memiliki dan menggunakannya.)autoload
danrequire
saya pikir tag tersebut dibenarkan. Faktanya, memberi label pada pertanyaan ini [hanya] denganlibraries
generalisasi berlebihan. Saya menggunakan saturequire
untuk memicu memuat "my-foobar-cfg", yang, seperti namanya, hanya berisi konfigurasi saya, bukan perpustakaan.Jawaban:
autoload
bukan penggantirequire
. Biasanyarequire
digunakan untuk memastikan bahwa file tertentu dimuat.autoload
di sisi lain memberi Emacs petunjuk di mana file menemukan fungsi yang diberikan tanpa memuat file segera. Hanya ketika fungsi autoloaded dipanggil adalah file yang sesuai dimuat.Pada dasarnya dengan
autoload
Anda dapat menunda pemuatan seluruh file saat Anda benar-benar membutuhkannya. Inilah sebabnya mengapa (terutama paket besar) biasanya mendefinisikan fungsi entri sebagaiautoload
s.Jika Anda ingin melakukan kustomisasi berat untuk suatu paket biasanya Anda kurang beruntung
autoload
. Jika Anda masih ingin menghindarirequire
maka Anda dapat menunda kustomisasi Anda sampai setelah file dimuat dengan menggunakaneval-after-load
.Manual Emacs mencakup topik ini di bagian berikut:
sumber
autoload
adalah (kurang lebih) tentang memberikan definisi perintah, sehingga Anda dapat menggunakan perintah itu.require
adalah tentang membuat segala sesuatu di perpustakaan (dan di perpustakaan yang perpustakaan butuhkan , secara rekursif) tersedia. Ada lebih banyak untuk Emacs daripada perintah. (Tapi ya, tentu saja setelah perintah autoloaded dipanggil, seluruh pustaka dimuat.)Dalam hal inisialisasi Emacs, jangan membuat pilihan. Pengguna GitHub jwiegley memiliki makro deklarasi penggunaan-paket yang sangat baik , yang akan membutuhkan atau memuat ulang secara otomatis paket yang ditentukan oleh kebutuhan. Paling baik digunakan untuk menunda pemuatan paket yang dapat dimuat sesuai permintaan.
sumber
Jika Anda ingin fitur tertentu dimuat dan tersedia langsung ketika Emacs Anda sudah mulai, gunakan wajib, kalau tidak gunakan autoload. Saya pribadi sangat menghargai waktu startup (saya sebenarnya me-restart Emacs beberapa kali per minggu, kadang-kadang beberapa kali per hari), jadi saya menerima bahwa itu akan memakan sedikit waktu ketika Emacs secara otomatis memuat fungsi tertentu ketika saya membutuhkannya. Jadi, pikirkan apa yang Anda inginkan tersedia langsung setelah Emacs dimulai dan apa yang dapat dimuat saat dibutuhkan.
sumber