# 编译到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) ,然后就可以看到改变目录的选项配置:
![](https://box.kancloud.cn/2016-07-19_578d00ff8985e.png)
这对于同时测试多个程序大有裨益。
- 本书目录
- 第一章: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
- 附加部分