【最新版】從零開始在 macOS 上配置 Lua 開發(fā)環(huán)境

腳本語(yǔ)言,你可能更需要的是 Lua

不同的腳本語(yǔ)言有不同的特性,第一接觸的腳本語(yǔ)言,可能會(huì)影響自己對(duì)整個(gè)腳本語(yǔ)言的理解和認(rèn)知。我以前接觸最多的腳本語(yǔ)言是 JavaScript。后果就是:我一度以為腳本語(yǔ)言都是必須和宿主語(yǔ)言運(yùn)行在不同的進(jìn)程;腳本本身的語(yǔ)法受環(huán)境的影響很大,很難做到統(tǒng)一;如果想統(tǒng)一寫法,都需要在應(yīng)用體積上做出非常大的妥協(xié)(嵌入一個(gè)通用的 JS 解釋器,會(huì)使應(yīng)用體積增大十幾 M)。

我在試著做一些努力,去改進(jìn)因大量使用 JavaScript 引起的一些特定的技術(shù)問(wèn)題。但是偶然間又想起了 Lua。最開始是從玩 WOW 的室友那里聽說(shuō) Lua 的。因?yàn)樗f(shuō)寫WOW插件很賺錢,所以曾經(jīng)認(rèn)真地搜索過(guò) Lua,現(xiàn)在腦海中有一些殘留的片段。

我突然意識(shí)到,可能 JavaScript 的大部分限制,在 Lua 或其他腳本語(yǔ)言中并不存在。想要解決那些因?yàn)槭褂?JavaScript 引起的各種問(wèn)題,可能只需要換一門腳本語(yǔ)言。

當(dāng)然,此處不考慮通常意義上的使用難度,學(xué)習(xí)難度,推廣成本一類的因素;畢竟我是純自嗨。但假如,Lua 真的能很好解決我目前遇到的腳本語(yǔ)言無(wú)法和宿主語(yǔ)言靈活通信的問(wèn)題,必將給自己的整體知識(shí)體系帶來(lái)一個(gè)新的提升,也必將在自己的日常實(shí)踐中創(chuàng)造出許多新的可能。

所涉及的各個(gè)工具的版本

  • 編程語(yǔ)言: Lua 5.3.4

  • Lua 模塊管理工具:LuaRocks 2.3.0

  • 編輯器:IntelliJ IDEA CE (社區(qū)版)

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

  • 調(diào)試插件:EmmyLua 1.2.0

  • 操作系統(tǒng):macOS 10.13.1

  • macOS 專用模塊管理工具: Homebrew 1.3.6

以下討論,均以 macOS 為主,其他系統(tǒng)平臺(tái)僅供參考。

安裝 Lua

打開 macOS 終端,輸入以下指令:

brew tap homebrew/versions
brew install lua53

Lua 的安裝有多種方式,這是較為簡(jiǎn)化高效的一種。需要注意的是,以此種方式安裝,Lua 的調(diào)用命令,將變?yōu)?lua5.3

Lua 安裝成功

安裝 Lua 模塊管理工具:LuaRocks

打開 macOS 終端,輸入以下指令:

brew tap mesca/luarocks
brew install luarocks53

LuaRocks 的安裝也有多種方式,這是較為簡(jiǎn)化高效的一種。需要注意的是,以此種方式安裝,LuaRocks 的調(diào)用命令,將變?yōu)?luarocks-5.3

LuaRocks 安裝成功

選擇一個(gè)合適的 Lua 編輯器: IntelliJ IDEA CE

Lua 日常編碼,推薦使用 IntelliJ IDEA CE(社區(qū)免費(fèi)版),下載地址:https://www.jetbrains.com/idea/download/

主要是從配置難度,語(yǔ)法高亮,代碼提示,代碼調(diào)試等方面權(quán)衡。

IntelliJ IDEA CE 預(yù)覽

使用 EmmyLua 插件配置調(diào)試環(huán)境

安裝 EmmyLua

Lua 的調(diào)試和高亮,主要得益于 EmmyLua。在 IntelliJ IDEA CE 的 Plugins 中,直接搜索安裝即可。記得,要先安裝此插件,然后再新建工程。安裝此插件后,工程模板,會(huì)多一個(gè) Lua 模板選項(xiàng)。從 Lua 模板新建工程,會(huì)簡(jiǎn)化許多 Lua 相關(guān)的配置。

安裝 EmmyLua

安裝 luasocket

在安裝 EmmyLua 插件之后,還需要安裝一個(gè) Lua 庫(kù) luasocket,才能進(jìn)行調(diào)試。

打開終端,輸入以下指令:

sudo luarocks-5.3 install luasocket  

修改 lua 路徑配置

Lua 的配置路徑要從默認(rèn)的 lua,改為 lua5.3 的真實(shí)路徑,一般是 /usr/local/bin/lua5.3

配置 Lua

開始調(diào)試

在 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 = 42
print(fact(a))

在編輯區(qū)左側(cè),打上幾個(gè)斷點(diǎn),然后文件編輯區(qū)右鍵,選擇 Debug 'hello.lua':

debug 右鍵菜單

一起簡(jiǎn)單看下 Debug 斷點(diǎn)調(diào)試的效果:

debug 效果演示

注意事項(xiàng)

  • 一定是要在配置好 EmmyLua 插件后,直接基于新出現(xiàn)的 Lua 模板新建工程;否則在修改項(xiàng)目配置上,可能會(huì)花費(fèi)許多時(shí)間。

  • 只有 Lua 5.3 以后的版本才支持 UTF-8,有大量中文處理需求的童鞋可能會(huì)需要這個(gè)信息。

  • 調(diào)試時(shí)報(bào)錯(cuò) **module 'socket' not found **,是因?yàn)闆](méi)有安裝 luasocket。

  • Lua 基于MIT 開源,如果哪天想自己定義某種新語(yǔ)言來(lái)實(shí)現(xiàn)特定的產(chǎn)品特性,可以考慮基于 Lua 定制。

  • 借助于 LuaJIT,Lua 的執(zhí)行效率可以進(jìn)一步提升幾十倍。

  • Lua 支持各種低級(jí)硬件嵌入式開發(fā),可移植性非常好,物聯(lián)網(wǎng)時(shí)代可能會(huì)有新的可能和增長(zhǎng)潛力。

  • 如果感覺(jué) lua5.3 沒(méi)有 lua 寫著方便,可以試著在 .profile 中配置 alias 命令別名,詳見:https://stackoverflow.com/a/8967864

alias lua="/usr/local/bin/lua5.3"
alias luarocks="/usr/local/bin/luarocks-5.3"
  • 命令別名,不能 sudo 執(zhí)行,如安裝 luasocket 時(shí),還是需要 sudo 原始命令:

sudo luarocks-5.3 install luasocket

小結(jié)

以上介紹了 macOS 平臺(tái),Lua 從安裝到配置調(diào)試環(huán)境的完整過(guò)程。接下來(lái),就可以根據(jù)自己的節(jié)奏和需要,好好領(lǐng)略 Lua 之美了~

參考文檔:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容