Lua require 相对路径
生活随笔
收集整理的這篇文章主要介紹了
Lua require 相对路径
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
lua require 加載方式與我們現在熟知的路徑系統不太一樣,想要知道lua require 方法的工作原理也很簡單 隨便寫一個錯誤的require 代碼即可: 1 require("lala");
1 print(package.path);
?
這樣運行會得到一個報錯: 1 1>F:\Git\luatest\metaTest.lua:(56): module 'lala' not found: 2 no field package.preload['lala'] 3 no file '.\lala.lua' 4 no file 'D:\Program Files (x86)\LuaStudio\lua\lala.lua' 5 no file 'D:\Program Files (x86)\LuaStudio\lua\lala\init.lua' 6 no file 'D:\Program Files (x86)\LuaStudio\lala.lua' 7 no file 'D:\Program Files (x86)\LuaStudio\lala\init.lua' 8 no file 'C:\Program Files\Lua\5.1\lua\lala.luac' 9 no file 'F:\Git\luatest\lala.lua' 10 no file '.\lala.dll' 11 no file 'D:\Program Files (x86)\LuaStudio\lala.dll' 12 no file 'D:\Program Files (x86)\LuaStudio\loadall.dll' 13 Stack Traceback: 14 [C]: in function 'require' 15 F:\Git\luatest\metaTest.lua:56: in main chunk?
這里可以很清晰的看見lua require方法搜索一個模塊或者文件的流程會依次搜索文件名為lala.lua的文件或者dll 那么這些帶有路徑的lala.lua文件怎么來的的?很簡單lua的模塊路徑是存在一個全局table package的path和cpath字段里的: 打印一下1 print(package.path);
?
運行得到 1 ;.\?.lua; 2 D:\Program Files (x86)\LuaStudio\lua\?.lua; 3 D:\Program Files (x86)\LuaStudio\lua\?\init.lua 4 ;D:\Program Files (x86)\LuaStudio\?.lua; 5 D:\Program Files (x86)\LuaStudio\?\init.lua; 6 C:\Program Files\Lua\5.1\lua\?.luac; 7 F:\Git\luatest\?.lua?
1 print(package.cpath); .\?.dll; D:\Program Files (x86)\LuaStudio\?.dll; D:\Program Files (x86)\LuaStudio\loadall.dll?
是不是很眼熟,是的當require的時候lua解釋器會按照path 和cpath里存儲的路徑替換“?”去查詢是否存在該文件,有則加載腳本或者模塊亦或是C庫。 了解了加載機制我們就可以很方便的去加載任何我們當前腳本依賴的外部模塊: 'require("requiretest.loader");' 但是又一個問題,當我們想要加載當前腳本的上級目錄或者其他目錄的怎么辦,這時候就需要自己去修改或者是添加相對路徑,由于require的查詢路徑都是 存儲在package.path中的這樣我們就可以自行添加: 1 package.path = package.path ..';..\\?.lua';?
測試下:在目錄requiretest目錄下新建loader.lua,在根目錄下新建requiretest2目錄并新建loader2.lua: loader.lua: 1 require("requiretest2.loader2");?
loader2.lua: 1 print("requiretest2.loader2");?
運行: 1 requiretest2.loader2在項目實際運用時可以根據需求加入相對目錄。
?
?
些許淺薄認識 如有不妥之處望請斧正!!!!!
轉載于:https://www.cnblogs.com/smallboat/p/5552407.html
總結
以上是生活随笔為你收集整理的Lua require 相对路径的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery 中 fn.apply(th
- 下一篇: 十四周进度报告