1. 在App中引入腳本的原因:
如何處理UI變化
如何處理邏輯變化
如何解決數據源不靈活的問題
Objective-C語言的問題是其是編譯執行的
2. 為什么選的是Lua
設計目標:嵌入到應用程序中(嵌入式腳本)
體積小:100-200K
最快的腳本語言(非JIT)
API簡潔
動態語言
3. 使用Lua開發應用的模式:
A. Lua作為配置文件, 為宿主語言應用提供參數(有點像數據源?);
B. 宿主語言作為底層庫,Lua作為邏輯描述。
4. 什么是Lua
Lua屬腳本編程語言,於1994年由巴西里約熱內盧天主教大學的研究人員設計開發,"Lua"為葡萄牙語單詞"月亮"
與PHP、Perl、JavaScript不同,Lua被稱為嵌入式腳本語言 , 最著名的應用是在網絡游戲《魔獸世界》中
最引入注目的特點:以極小體積和簡單的語法提供相對全面的功能;以簡潔的API實現與宿主語言最方便的接口。
5. 為什么稱為"嵌入式"?
最典型用法,作為一個庫,嵌入到其他大型語言(稱之為宿主語言)的應用程序之中,為應用程序提供參數配置或邏輯描述等功能,帶來前所未有的靈活性。
Lua常見宿主語言有:C/C++, Java, .NET, 甚至其它腳本語言如PHP, Ruby等。
6. Lua工作流程:
Step 1 : 宿主語言建立Lua解釋器對象。
Step 2 : 將宿主語言實現的Lua擴展(若有),如函數等,注冊到Lua解釋器中,供其使用。
Step 3 : 讀入Lua source code或者預先編譯后的Lua程序(可以從文件、字符串、網絡等任意來源)。
Step 4 : 執行讀入的Lua程序。
7. Wax框架及其本身的一些問題
https://github.com/probablycorey/wax/
設計目標:使用Lua開發應用
Objective為Lua提供庫
只提供單向的輔助函數: Objective-C -> Lua
只提供一個lua_State
對Wax做了部分修改
其他的一些庫:
Lua-Objective-C-Bridge
LuaCocoa
大量應用商店使用Lua語言