# 編譯到Neko格式
* * * * *
要編譯到 Neko 格式,打開` HelloWorld.hxml` 文件,然后修改代碼如下:
~~~
-neko helloworld.n
-main HelloWorld
~~~
你會看到,`.hxml` 文件中需要改變的僅僅是原來的 `-swf `開關變為 `-neko` 開關,輸出文件的擴展名從 `.swf` 改變為 `.n `。
如果現在像前面的例子一樣去編譯它,Haxe 編譯工具會創建一個文件,名為 `helloworld.n`,保存在你的應用目錄。如果沒有生成,先確定是否在 `.hxml` 文件中使用了其它的開關。許多開關在根據不同的目標平臺格式進行編譯時并不被完全支持,所以必須確保提供了正確的數據才能成功編譯。
# 運行Neko示例
* * * * *
Neko 是一個非常靈活的平臺,因此,有許多方法來運行 Neko 應用。第一種方式是使用 `neko` 命令,后面跟隨執行文件的路徑。在命令行中,導航到工作目錄然后輸入:
~~~
neko helloworld.n
~~~
如果文件正確執行,命令行窗口會顯示和 Flash 例子中所輸出的相同的字符串。
如果你喜歡,你可以用這種方式運行所有的 Neko 應用,雖然這個方法的確會有一些弊端。
例如,為了運行應用,你需要打開一個命令行窗口或者批處理文件來處理 `neko` 命令的執行。而且,調用 `neko` 命令需要進行環境變量的設置,才能使操作系統可以找到 Neko 可執行程序。
如果你計劃發布你的應用,這種運行方式的確不是一個好主意。
幸運的是,Neko 帶有一個實用工具集,可以轉換你的 Neko 應用成為一個可執行文件,所以你的用戶可以直接雙擊程序圖標來執行你的應用,或者通過在命令行輸入可執行文件的名稱。
要實現這個,你需要在命令行輸入如下的內容:
~~~
nekotools boot helloworld.n
~~~
如果正確執行,在Window平臺上會生成一個名為 `helloworld.exe` 的可執行程序;而在Mac OS 和 Linux 上,則生成一個簡單的 `helloworld`文件,保存在你的應用目錄。
# 作為一個Web應用運行
* * * * *
在桌面運行你的 Neko 應用只是執行代碼的一種方式,然而,Haxe 和 Neko 的組合提供的工具庫主要是面向 Web 開發者的。而桌面應用開發只是一個次要的功能,你可能非常清楚的希望使用 Neko 來開發基于瀏覽器的 Haxe 應用。
要部署一個使用 Neko 的站點到服務器,需要安裝 `mod_neko.ndll` 或者 `mod_neko2.ndll` 模塊到一個 `Apache Web` 服務器。在本書后面將會學習這方面的知識,但是現在,你需要使用 NekoTools 實用工具的另外一個功能 : `NekoTools web` 服務器。
NekoTools web 服務器是一個強大的工具用于構建和測試基于 Web 的 Haxe 應用。雖然它不足以用作一個生產環境的 Web 服務器,但是無疑,它提供了測試 Neko 應用的所有需要的功能。
NekoTools web 服務器可以節省你設置文件上傳或者停止/啟動一個 Apache 的 安裝所耗費的時間。服務器不需要任何前置的設置,只需要你把 Haxe 和 Neko 在開發機上正確的安裝即可。
要開始 NekoTools web 服務器,在命令行輸入下面內容:
~~~
nekotools server -p <port> -h <hostname> -d <directory>
~~~
這里,`<port>` 必須是一個未被占用的端口號,`<hostname>` 是測試站點的主機名,`<directory>` 是你的 Neko 應用的位置。默認端口是 `2000`,主機名是 `localhost`,這適用于大多數情況。
同樣,如果你的當前目錄就是應用目錄,那么你也不需要指定目錄開關。這意味著,在多數情況下,你也許只要導航到你的應用目錄然后通過輸入下面的命令開啟服務:
~~~
nekotools server
~~~
現在,打開瀏覽器并導航至 [http://localhost:2000/helloworld.n](http://localhost:2000/helloworld.n) 。 如果你提供了和默認的不同的值,則輸入對應的地址。
如果成功啟動了 NekoTools web 服務器,你會看到正常的 Hello World! 問候,和前面的示例一樣:
> HelloWorld.hx:5: Hello world!
然而,如果你沒有看到這個結果,或者你的 web 瀏覽器提示找不到指定的頁面,可能是訪問該 URL 沒有設置正確的目錄。不要擔心這個情況,因為你可以在任何時間修改 NekoTools web 服務器的根目錄。只要到 [http://localhost:2000/server:config](http://localhost:2000/server:config) ,然后就可以看到改變目錄的選項配置:

這對于同時測試多個程序大有裨益。
- 本書目錄
- 第一章:Haxe介紹
- 互聯網開發的一個問題
- Haxe是什么,為什么產生
- Haxe編譯工具
- Haxe語言
- Haxe如何工作
- 那么Neko是什么
- Haxe和Neko的必須條件
- 本章摘要
- 第二章:安裝、使用Haxe和Neko
- 安裝Haxe
- 使用Haxe安裝程序
- 在Windows上手動安裝Haxe
- Linux上手動安裝Haxe
- 安裝Neko
- Windows上手動安裝Neko
- 在Linux上安裝Neko
- Hello world! 一式三份
- 編譯你的第一個Haxe應用
- 你的程序如何編譯
- HXML編譯文件
- 編譯到Neko
- 編譯為JavaScript
- 程序結構
- 編譯工具開關
- 本章摘要
- 第三章:基礎知識學習
- Haxe層級結構
- 標準數據類型
- 變量
- 類型推斷
- 常數變量
- 簡單的值類型
- 浮點類型
- 整型
- 選擇數值類型
- 布爾類型
- 字符串類型
- 抽象類型
- Void 和 Null
- 動態類型
- unknown類型
- 使用untyped繞過靜態類型
- 注釋代碼
- 轉換數據類型
- Haxe數組
- Array
- List
- Map
- Haxe中使用日期時間
- 創建一個時間對象
- Date組件
- DateTools類
- 操作數據
- 操作符
- Math類
- 使用String函數
- 本章摘要
- 第四章:信息流控制
- 數據存放之外
- 條件語句
- if語句
- switch語句
- 從條件語句返回值
- 循環
- while循環
- for循環
- 循環集合
- Break和Continue
- 函數
- 類的函數
- 局部函數
- Lambda類
- 本章摘要
- 第五章:深入面向對象編程
- 類和對象
- 實例字段
- 靜態字段
- 理解繼承
- Super
- 函數重載
- 構造器重載
- toString()
- 抽象類和抽象方法
- 靜態字段,實例變量和繼承
- 繼承規則
- 使用接口
- 高級類和對象特性
- 類的實現
- 類型參數
- 匿名對象
- 實現動態
- Typedef
- 擴展
- 枚舉
- 構造器參數
- 本章摘要
- 第六章:組織你的代碼
- 編寫可重用代碼
- 使用包
- 聲明一個包
- 隱式導入
- 顯式導入
- 枚舉和包
- 類型查找順序
- 導入一個完整的包
- 導入庫
- Haxe標準庫
- Haxelib庫
- 其他項目中的庫
- 外部庫
- 使用資源
- 文檔化代碼
- 離線文檔
- 在線文檔
- 單元測試
- haxe.unit包
- 編寫測試
- 本章摘要
- 第七章:錯誤調試
- trace函數
- trace輸出
- haxe的trace和ActionScript的trace
- 異常
- 異常處理
- CallStack和ExceptionStack
- 異常管理類
- 創建完全的異常處理類
- 異常類代碼
- 本章摘要
- 第八章:跨平臺工具
- XML
- XML剖析
- Haxe XML API
- 正則表達式
- EReg類
- 模式
- 定時器
- 延遲動作
- 隊列動作
- MD5
- 本章摘要
- 第九章:使用Haxe構建網站
- Web開發介紹
- Web 服務器
- 使用Web服務器發布內容
- HTML速成課程
- Haxe和HTML的區別
- NekoTools Web Server
- Apache安裝mod_neko
- Windows安裝Apache和mod_neko
- Linux安裝Apache和Mod_Neko
- 第一個Haxe網站
- 使用Neko作為網頁Controller
- neko.Web類
- Neko作為前端控制器
- 本章摘要
- 第十章:使用模板進行分離式設計
- 什么是模板
- Template類
- Template語法
- 使用資產
- 何時在模板中使用代碼
- 服務器端模板的Templo
- 安裝Templo
- 使用Templo
- haxe.Template和mtwin.Templo表達式上的區別
- Attr表達式
- Raw表達式
- 邏輯表達式
- 循環表達式
- set, fill, 和 use表達式
- Templo中使用宏
- 手動編譯模版
- 第十一章:執行服務端技巧
- 第十二章:使用Flash構建交互內容
- 第十三章:使用IDE
- 第十四章:通過JavaScript制作更多交互內容
- 第十五章:通過Haxe遠程通信連接所學
- 第十六章:Haxe高級話題
- 第十七章:Neko開發桌面應用
- 第十八章:用SWHX開發桌面Flash
- 第十九章:多媒體和Neko
- 第二十章:使用C/C++擴展Haxe
- 附加部分