Lua 中引入一個模塊,能夠採用兩種方式:import 和 require 方式,具體的區別在於:app
載入一個模塊函數
import() 與 require() 功能相同,但具備必定程度的自動化特性。ui
假設咱們有以下的目錄結構:lua
~~~開發
app/
app/classes/
app/classes/MyClass.lua
app/classes/MyClassBase.lua
app/classes/data/Data1.lua
app/classes/data/Data2.lua自動化
~~~class
MyClass 中須要載入 MyClassBase 和 MyClassData。若是用 require(),MyClass 內的代碼以下:import
~~~ luarequire
local MyClassBase = require("app.classes.MyClassBase")
local MyClass = class("MyClass", MyClassBase)im
local Data1 = require("app.classes.data.Data1")
local Data2 = require("app.classes.data.Data2")
~~~
假如咱們將 MyClass 及其相關文件換一個目錄存放,那麼就必須修改 MyClass 中的 require() 命令,不然將找不到模塊文件。
而使用 import(),咱們只須要以下寫:
~~~ lua
local MyClassBase = import(".MyClassBase")
local MyClass = class("MyClass", MyClassBase)
local Data1 = import(".data.Data1")
local Data2 = import(".data.Data2")
~~~
當在模塊名前面有一個"." 時,import() 會從當前模塊所在目錄中查找其餘模塊。所以 MyClass 及其相關文件無論存放到什麼目錄裏,咱們都再也不須要修改 MyClass 中的 import() 命令。這在開發一些重複使用的功能組件時,會很是方便。
咱們能夠在模塊名前添加多個"." ,這樣 import() 會從更上層的目錄開始查找模塊。
~
不過 import() 只有在模塊級別調用(也就是沒有將 import() 寫在任何函數中)時,纔可以自動獲得當前模塊名。