Por lo que entiendo, require
se usa para cargar grandes fragmentos de código (algo así como módulos) aunque también puede cargar funciones individuales.
La carga automática en el otro lado, solo registra funciones y difiere la carga al tiempo de ejecución.
Recientemente leí un artículo que aboga por el uso autoload
exclusivo.
¿Es mejor autoload
que que require
? ¿Cuáles son algunos casos de uso típicos para cada uno de estos?
autoload
yrequire
de esta pregunta. Agregar etiquetalibraries
estaba bien, pero ahora cualquiera que busque, use etiquetas, para preguntas sobreautoload
orequire
no encontrará esta. Ambas son funciones importantes de Emacs-Lisp que las personas buscarán. Demasiado. Y piense cuán útilelisp
ylibraries
(especialmenteelisp
) será realmente en la práctica para un sitio de Emacs: me temo que no distinguen mucho en Emacsland. (Pero no, no estoy en contra de tenerlos y usarlos.)autoload
yrequire
creo que esas etiquetas están justificadas. De hecho, etiquetar esta pregunta [solo] conlibraries
es demasiado generalizante. Por mi parte, pararequire
activar la carga de "my-foobar-cfg", que, como su nombre indica, solo contiene mi configuración, no una biblioteca.Respuestas:
autoload
no es un sustituto derequire
. Normalmenterequire
se usa para asegurarse de que se carga un determinado archivo.autoload
por otro lado, le da a Emacs una pista sobre en qué archivo encontrar una función determinada sin cargar el archivo de inmediato. Solo cuando se llama a la función de carga automática se carga el archivo correspondiente.Básicamente con
autoload
usted puede retrasar la carga de un archivo completo hasta el momento en que realmente lo necesite. Esta es la razón por la cual los paquetes (especialmente grandes) generalmente definen sus funciones de entrada comoautoload
s.Si desea hacer personalizaciones pesadas para un paquete, generalmente no tiene suerte
autoload
. Si todavía desea evitarrequire
, puede diferir sus personalizaciones hasta después de que el archivo se haya cargado utilizandoeval-after-load
.El manual de Emacs cubre este tema en las siguientes secciones:
fuente
autoload
trata (más o menos) de proporcionar definiciones de comandos, por lo que puede usar esos comandos.require
se trata de hacer que todo en una biblioteca (y en las bibliotecas que la biblioteca requiere, de forma recursiva) esté disponible. Hay más en Emacs que comandos. (Pero sí, por supuesto, una vez que se invoca un comando autocargado, se carga toda su biblioteca).En términos de inicialización de Emacs, no haga ninguna elección. El usuario de GitHub jwiegley tiene la excelente macro de declaración de paquete de uso , que requerirá o cargará automáticamente un paquete según lo determine la necesidad. Se utiliza mejor para diferir la carga de paquetes que se pueden cargar a pedido.
fuente
Si desea que una determinada característica se cargue y esté disponible directamente cuando su Emacs se haya iniciado, use require, de lo contrario use la carga automática. Personalmente valoro mucho el tiempo de inicio (en realidad reinicio Emacs un par de veces por semana, a veces varias veces por día), por lo que acepto que tomará un poco de tiempo cuando Emacs carga automáticamente una determinada función cuando la necesito. Entonces, piense en lo que desea que esté disponible directamente después de que se inicie Emacs y qué se puede cargar cuando sea necesario.
fuente