La diferencia entre lua dofile y require
Loadfile, carga el archivo, lo compila y devuelve una función. Si no se ejecuta, se devolverá una llamada de función compilada al cargar el archivo con loadfile. Solo llamando al método correspondiente se pueden utilizar las funciones del archivo. De lo contrario, las funciones internas no están definidas y no se pueden llamar.
Dofile en realidad envuelve el archivo de carga y lo ejecuta según la función de retorno de Loadfile.
Cuando require carga un archivo, no necesita un directorio. Tiene la propia ruta de Lua para buscar y cargar directorios, y determinará si el archivo se ha cargado. Si ya está cargado, no se cargará. La actualización en caliente se implementa mediante el principio de requerir y los archivos cargados se recargarán. Sin embargo, lo importante aquí es por los datos actualizados. Si se actualiza todo el archivo, se deben evitar los datos LUA en memoria.
Su principio de carga, embalaje. cargado [nombre del módulo requerido] = verdadero, esto registrará si el archivo se ha cargado. Al borrar el archivo, los datos se pueden volver a cargar sin ejecutar. El valor de retorno predeterminado de reqruie es verdadero. Si el archivo tiene su propia devolución, devolverá su propia devolución. Si necesita actualizar un archivo, solo necesita configurar el paquete. cargado[nombre del módulo requerido]=nil, lo necesitará la próxima vez que lo necesite.
Tanto dofile como require ejecutarán el código interno, pero la diferencia es que require solo se carga una vez. Cada vez que se carga dofile, loadfile solo carga el archivo sin ejecutarlo.