对Haxe编程语言、编译器、标准库和其他必要的知识点进行介绍。
一.对Haxe工具集的介绍:
Haxe Toolkit
是一个强大的开源工具集,会帮助将你的开发更进一步。如果想要开发应用程序、游戏或框架的话,你不必为每个平台(比如Windows、Mac OS、Linux、IOS、Android等)都开发一种优化的软件版本,相反,你可以利用Haxe将你的工程直接编译成你想要的编程语言代码或者目标平台。
Haxe允许你将目标对准于大多数的主流平台,它不仅仅可以增加你开发过程的灵活性,还会为你节省宝贵时间和资源。
为了帮助你做到这些,工具集包含了三个主要的组件:
- Haxe Language:一个现代的、高级的、严格类型检查的编程语言
- Haxe Standard Library :一个完整的、跨平台的标准库
- Haxe Compiler:一个异常快的混合编译器
除了这些特点外,Haxe工具集也为你提供了一系列工具,能够让你使用Haxe更加高效。
二.对Haxe编程语言的介绍
Haxe是一个现代、高级的编程语言,它是严格类型检查的,如果你已经对Java
、C++
、PHP
、AS3
或者其他面向对象编程语言熟悉的话,就很容易学习Haxe。
因为Haxe编程语言是特地为Haxe
工具集设计的,我们额外注意了它的灵活性。Haxe很容易让你的应用适应于不同平台的本地行为,这样,你就能进行高效的跨平台开发,从而节省时间和资源。
写一个Hello,World
程序
Haxe设计得简单但是很强大,它的语法很大程度上是跟随于ECMAScript
,但是必要的地方又有所不同。以下是Haxe写的Hello,World
程序:
class HelloWorld {
static public function main() {
trace("Hello World");
}
}
安装了Haxe
后,将上面的程序保存在一个文件中,命名于HelloWorld.hx
,我们可以在命令行中编译这个程序,
- 编译成
JavaScript
程序:
haxe -main HelloWorld -js HelloWorld.js
- 编译成
Java
程序:
haxe -main HelloWorld -java path/to/java/out
大多数的Haxe代码都是以classes(类)
和functions(方法)
方式组织的,让Haxe成为一种面向对象的编程语言。Haxe富有表现力,以可读性性的语法,成为了一种强大的编程语言。
三.Haxe编程语言介绍
- Abstract types
- Anonymous structures
- Array Comprehension
- Classes, interfaces and inheritance
- Conditional compilation
- (Generalized) Algebraic Data Types
- Inlined calls
- Iterators
- Local functions and closures
- Metadata
- Static Extensions
- String Interpolation
- Partial function application
- Pattern Matching
- Properties
- Type Parameters, Constraints and Variance
四.Haxe标准库的介绍
Haxe标准库提供了常见的用途工具,而不是想成为一个数据结构和算术的详尽集合。Haxe带有一个std
目录,里面包含了Haxe标准库,内容是这样分类的:
- General purpose(一般用途):
std
目录包含了一些顶级的类,例如,Array
、Map
或者String
,它们可以被用在所有的平台上。下面的haxe
子目录提供了额外的数据结构,输入/输出API和更多的工具。 - System(系统):
sys
子目录包含了与文件系统和数据库相关的API。此外,Sys
顶级类允许与操作系统的各种各样的交互。只有当这些类被编译到sys
类别目标平台上的时候才能够获得。 - Target specific(特定目标平台):每个Haxe目标平台都有一个不同的子目录,里面包含了特定目标平台的API。只有编译到给定平台的时候才能够使用到。
1.General purpose API:
所有目标平台上都可以使用
顶级:
- Array
- Date,DateTools
- EReg
- Lambda
- Map
- Math
- Reflect
- Std
- String
- StringBuf
- StringTools
- Type
- Xml
haxe
包
- haxe.Http
- haxe.Json
- haxe.Resource
- haxe.Serializer
- haxe.Template
- haxe.Timer
- haxe.Unserializer
- haxe.Utf8
- haxe.crypto
- haxe.macro
- haxe.remoting
- haxe.rtti
- haxe.unit
- haxe.web
- haxe.xml
- haxe.zip
have.ds
包
- haxe.ds.ArraySort
- haxe.ds.BalancedTree
- haxe.ds.EnumValueMap
- haxe.ds.GenericStack
- haxe.ds.IntMap
- haxe.ds.ObjectMap
- haxe.ds.StringMap
- haxe.ds.Vector
have.io
包
- haxe.io.Bytes
- haxe.io.BytesBuffer
- haxe.io.Path
2.系统API
在C++
、C#
、Java
、Neko
和PHP
。
- Sys
- sys.FileSystem
- sys.db
- sys.io.File
- sys.io.Process
3.特定目标平台的API
<1>cpp :
- cpp.Lib
- cpp.net
- cpp.vm
- cpp.zip
<2>cs:C#
平台上的API
<3>flash :
- flash
- flash.Lib
- flash.Memory
- flash.Vector
<4>flash8 :
- flash8
<5>java
<6>js :
- js.Browser
- js.Cookie
- js.jQuery
- js.Lib
- js.html
<7>neko
- neko.Lib
- neko.Web
- neko.net
- neko.vm
- neko.zip
<8>php
- php.Lib
- php.Session
- php.Web
- php.db.PDO
五.编译器目标平台
以下的表给出了Haxe的目标平台:
六.编辑器与集成开发工具
流行的编辑器:
- FlashDevelop
- Sublime Text
- IntelliJ IDEA
- VIM
- Atom
- HIDE(正在开发中)
官方提供了使用这些编辑器开发使用的插件编辑器与集成开发工具
七.构建Haxe开发环境
1.获取资源
Haxe编译器资源放在Github
的 HaxeFoundation account。Haxe repository有几个字模块,所以克隆它可以使用标识--recursive
。
git clone --recursive git://github.com/HaxeFoundation/haxe.git
或者,我们也可以从 GitHub Haxe release overview获得.zip
资源或者二进制文件。
2.在Mac OS
上配置
依赖项(dependencies)可以很容易地通过Homebrew
来安装。实际上,如果你只想要使用Haxe最新的开发版本的话,而不修改资源,只需运行:
brew install haxe --HEAD
在将来可以使用命令brew reinstall haxe --HEAD
来更新Haxe。
如果你想要获取Haxe编译器的话,最好手动克隆,然后使用Makefile:
- 安装XQuartz(OCaml需要)
- 安装OCaml
- 安装Camlp4
- 进入到Haxe资源所在的目录,然后使用make来构建Haxe
make
make install
其他平台的安装,请看官网Building Haxe from source
通过Homebrew
来安装的话,会自动帮我们安装依赖项,手动安装的话,需要分别安装依赖项。
八.编译器用法
Haxe编译器可以从命令行中激活,命令要包含几个参数,这些参数会回到这几个问题:
- 应该编译什么
- 输出应该是什么
为了回答第一个问题,我们只需使用-cp path
参数来提供类的路径,还有使用-main dot_path
参数来编译主类。Haxe编译器然后会分析主类,开始编译。
第二个问题的答案要提供一个参数来声明预期的目标。每个Haxe的目标都有一个命令,例如,-js file_name
为了JavaScript这个目标,-php directory
为了PHP这个目标。取决于目标,参数值要么是一个文件名(-js
,-swf
和neko
),要么是一个目录路径。
常见的参数
Input(输入):
-cp path
:增加一个类路径,.hx
源文件或包(子目录)可以在这个路径下发现。-lib library_name
:增加一个Haxelib
库。-main dot_path
:设置主类
Output(输出):
-js file_name
:在特定的文件总产生一个JavaScript
源代码。-as3 directory
:在特定的文件中产生一个ActioinScript 3
源代码。-swf file_name
:产生特定的文件.swf
,FLASH类型。-neko file_name
:产生Neko
二进制文件。-php directory
:在特定的目录中产生PHP
源代码。-cpp directory
:在特定的目录中,使用本地的C++编译器产生C++
源代码。-cs directory
:在特定的目录中产生C#
源代码。-java directory
:在特定的目录中,使用Java编译器编译成java
源代码。-python file_name
:在特定的文件中产生Python
源代码
。