前言
這篇文章針對的是基於 LuaJIT 的環境配置。借助於 LuaJIT,Lua 的執行效率可以進一步提升幾十倍。如果你不是很清楚自己是需要 Lua 還是 LuaJIT,那么建議你從 LuaJIT 起步。LuaJIT 對應的是 Lua5.1 的語法,這一點需要注意。
如果你想看基於最新版 Lua 環境的配置文章,請移步:http://yanfeng.life/2017/11/10/Latest-guid-for-lua/
腳本語言,你可能更需要的是 Lua
不同的腳本語言有不同的特性,第一接觸的腳本語言,可能會影響自己對整個腳本語言的理解和認知。我以前接觸最多的腳本語言是 JavaScript。后果就是:我一度以為腳本語言都是必須和宿主語言運行在不同的進程;腳本本身的語法受環境的影響很大,很難做到統一;如果想統一寫法,都需要在應用體積上做出非常大的妥協(嵌入一個通用的 JS 解釋器,會使應用體積增大十幾 M)。
我在試着做一些努力,去改進因大量使用 JavaScript 引起的一些特定的技術問題。但是偶然間又想起了 Lua。最開始是從玩 WOW 的室友那里聽說 Lua 的。因為他說寫WOW插件很賺錢,所以曾經認真地搜索過 Lua,現在腦海中有一些殘留的片段。
我突然意識到,可能 JavaScript 的大部分限制,在 Lua 或其他腳本語言中並不存在。想要解決那些因為使用 JavaScript 引起的各種問題,可能只需要換一門腳本語言。
當然,此處不考慮通常意義上的使用難度,學習難度,推廣成本一類的因素;畢竟我是純自嗨。但假如,Lua 真的能很好解決我目前遇到的腳本語言無法和宿主語言靈活通信的問題,必將給自己的整體知識體系帶來一個新的提升,也必將在自己的日常實踐中創造出許多新的可能。
所涉及的各個工具的版本
-
編程語言: LuaJIT 2.0.5 (對應 Lua 5.1的語法)
-
Lua 模塊管理工具:LuaRocks 2.3.0(LuaJIT版)
-
編輯器:IntelliJ IDEA CE (社區版)
Build #IC-172.4343.14, built on September 26, 2017
JRE: 1.8.0_152-release-915-b12 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.13.1
-
調試插件:EmmyLua 1.2.0
-
操作系統:macOS 10.13.1
-
macOS 專用模塊管理工具: Homebrew 1.3.6
以下討論,均以 macOS 為主,其他系統平台僅供參考。
安裝 LuaJIT
下載 LuaJIT 源碼
下載地址:http://luajit.org/download.html
一般應選擇最新的 Stable 穩定版本。下載后解壓。
編譯 LuaJIT
編譯非常簡單,cd 到 LuaJIT 源碼解壓目錄,然后在終端執行:
make && sudo make install
驗證 LuaJIT 安裝是否成功
打開終端執行:
luajit -v
安裝成功后,應該有以下類似輸出:
LuaJIT 2.0.5 -- Copyright (C) 2005-2017 Mike Pall. http://luajit.org/
安裝 Lua 模塊管理工具:LuaRocks
打開 macOS 終端,輸入以下指令:
brew tap mesca/luarocks
brew install luarocks51 --with-luajit
LuaRocks 的安裝也有多種方式,這是較為簡化高效的一種。需要注意的是,以此種方式安裝,LuaRocks 的調用命令,將變為 luarocks-jit
選擇一個合適的 Lua 編輯器: IntelliJ IDEA CE
Lua 日常編碼,推薦使用 IntelliJ IDEA CE(社區免費版),下載地址:https://www.jetbrains.com/idea/download/
主要是從配置難度,語法高亮,代碼提示,代碼調試等方面權衡。
使用 EmmyLua 插件配置調試環境
安裝 EmmyLua
Lua 的調試和高亮,主要得益於 EmmyLua。在 IntelliJ IDEA CE 的 Plugins 中,直接搜索安裝即可。記得,要先安裝此插件,然后再新建工程。安裝此插件后,工程模板,會多一個 Lua 模板選項。從 Lua 模板新建工程,會簡化許多 Lua 相關的配置。
安裝 luasocket
在安裝 EmmyLua 插件之后,還需要安裝一個 Lua 庫 luasocket,才能進行調試。
打開終端,輸入以下指令:
sudo luarocks-jit install luasocket
修改 Lua 路徑配置
Lua 的配置路徑要從默認的 lua,改為 luajit 命令的真實路徑,一般是 /usr/local/bin/luajit
開始調試
在 IntelliJ IDEA CE 中新建 Lua 工程,然后新建 Lua 文件 hello.lua,輸入代碼:
-- defines a factorial function
function fact (n)
if n == 0 then
return 1
else
return n * fact(n - 1)
end end
a = 6
print(fact(a))
在編輯區左側,打上幾個斷點,然后文件編輯區右鍵,選擇 Debug 'hello.lua':
一起簡單看下 Debug 斷點調試的效果:
配置 LuaCheck 靜態檢查工具
首先在在終端命令行執行:
sudo luarocks-jit install luacheck
然后在設置頁,配置 LuaCheck 的完整路徑: /usr/local/bin/luacheck
現在編輯區右鍵菜單中選擇 “Run LuaCheck”,就可以進行靜態檢查了。不過初次接觸或運行某些示例代碼時,不用過於糾結靜態檢查的警告。
注意事項
-
安裝 LuaJIT ,不需要安裝 Lua 5.1 了
-
一定是要在配置好 EmmyLua 插件后,直接基於新出現的 Lua 模板新建工程;否則在修改項目配置上,可能會花費許多時間。
-
調試時報錯 **module 'socket' not found **,是因為沒有安裝 luasocket。
-
Lua 基於MIT 開源,如果哪天想自己定義某種新語言來實現特定的產品特性,可以考慮基於 Lua 定制。
-
Lua 支持各種低級硬件嵌入式開發,可移植性非常好,物聯網時代可能會有新的可能和增長潛力。
-
如果感覺 luajit 沒有 lua 寫着方便,可以試着在 .profile 中配置 alias 命令別名,詳見:https://stackoverflow.com/a/8967864
alias lua="/usr/local/bin/luajit"
alias luarocks="/usr/local/bin/luarocks-jit"
- 命令別名,不能 sudo 執行,如安裝 luasocket 時,還是需要 sudo 原始命令:
sudo luarocks-jit install luasocket
- 如果已經安裝過 Lua 5.1,可能需要先移除它:
brew unlink lua@5.1
- 編碼時,光標移動到下一行的快捷鍵是:
cmd + shift + enter
小結
以上介紹了 macOS 平台,LuaJIT 從安裝到配置調試環境的完整過程。接下來,就可以根據自己的節奏和需要,好好領略 Lua 之美了~