# ets_frontend组件
- [ets_frontend组件](#ets_frontend组件)
- [简介](#简介)
- [目录](#目录)
- [编译构建](#编译构建)
- [使用说明](#使用说明)
- [相关仓](#相关仓)
## 简介
ets_frontend组件是方舟运行时子系统的前端工具,结合ace-ets2bundle组件,支持将ets文件转换为方舟字节码文件。
更多信息请参考:[方舟运行时子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/ARK-Runtime-Subsystem-zh.md)
**ets_frontend组件架构图**
![](/figures/zh-cn_image_ets_frontend_arch.png)
## 目录
```
/arkcompiler/ets_frontend/
├── test262 # test262测试配置和运行脚本
├── testTs # 系统测试目录
├── es2panda
├── aot # 逻辑入口
├── binder # 信息绑定
├── compiler # 编译逻辑
├── ir # 字节码生成
├── lexer # 词法分析
├── parser # 语法解析,ast生成
├── scripts # 脚本目录
├── test # 测试目录
├── typescript # typescript支持
└── util # 工具目录
├── ts2panda
├── doc # 文档
├── scripts # 依赖的脚本
├── src # 源码存放目录
├── templates # ruby模板文件
├── tests # UT单元测试目录
├── tools # ts2abc提供的工具
└── ts2abc # abc文件生成相关
```
## 编译构建
ets_frontend组件采用命令行交互方式,支持将JavaScript代码转换为方舟字节码文件,使其能够在方舟运行时上运行。支持Windows/Linux/MacOS平台。方舟前端工具在linux平台上可通过全量编译或指定编译前端工具链获取。
```
$ ./build.sh --product-name hispark_taurus_standard --build-target ets_frontend_build
```
### 使用说明
#### es2panda使用方式 ####
使用ets_frontend组件下的es2abc可执行文件将JavaScript文件转换为方舟字节码文件
```
$ cd out/hispark_taurus/clang_x64/arkcompiler/ets_frontend/
$ ./es2abc [options] file.js
```
当不输入任何option参数时,默认生成方舟二进制文件。
选项
|
描述
|
取值范围
|
默认值
|
--debug-info
|
携带debug信息
|
-
|
-
|
--debugger-evaluate-expression
|
debugger下对输入的base64形式的表达式求值
|
-
|
-
|
--dump-assembly
|
输出为汇编文件
|
-
|
-
|
--dump-ast
|
打印解析得到的ast(抽象语法树)
|
-
|
-
|
--dump-debug-info
|
打印debug信息
|
-
|
-
|
--dump-literal-buffer
|
打印literal buffer内容
|
-
|
-
|
--dump-size-stat
|
显示字节码相关的统计信息
|
-
|
-
|
--extension
|
指定输入类型
|
['js', 'ts', 'as']
|
-
|
--help
|
帮助提示
|
-
|
-
|
--module
|
按照ESM模式编译
|
-
|
-
|
--opt-level
|
指定编译优化等级
|
['0', '1', '2']
|
0
|
--output
|
输出文件路径
|
-
|
-
|
--parse-only
|
只对输入文件做解析动作
|
-
|
-
|
--thread
|
指定生成字节码时所用的线程数目
|
0-机器支持的线程数目
|
0
|
#### ts2panda使用方式 ####
安装`node`和`npm`
使用ets_frontend组件将JavaScript文件转换为方舟字节码文件
```
$ cd out/hispark_taurus/clang_x64/arkcompiler/ets_frontend/build
$ npm install
$ node --expose-gc src/index.js [options] file.js
```
当不输入任何option参数时,默认生成方舟二进制文件。
选项
|
缩写
|
描述
|
取值范围
|
默认值
|
--commonjs
|
-c
|
按照commonjs模式编译
|
-
|
-
|
--modules
|
-m
|
按照ESM模式编译
|
-
|
-
|
--debug-log
|
-l
|
使能log信息
|
-
|
-
|
--dump-assembly
|
-a
|
输出为汇编文件
|
-
|
-
|
--debug
|
-d
|
携带debug信息
|
-
|
-
|
--show-statistics
|
-s
|
显示字节码相关的统计信息
|
-
|
-
|
--output
|
-o
|
输出文件路径
|
-
|
-
|
--timeout
|
-t
|
超时门限
|
-
|
-
|
--opt-log-level
|
-
|
指定编译优化log等级
|
['debug', 'info', 'error', 'fatal']
|
error
|
--opt-level
|
-
|
指定编译优化等级
|
-
|
1
|
--help
|
-h
|
帮助提示
|
-
|
-
|
--bc-version
|
-v
|
输出当前字节码版本
|
-
|
-
|
--bc-min-version
|
-
|
输出当前支持的最低字节码版本
|
-
|
-
|
--included-files
|
-i
|
编译依赖的文件列表
|
-
|
-
|
--record-type
|
-p
|
是否记录类型信息
|
-
|
true
|
--dts-type-record
|
-q
|
记录.d.ts文件的类型信息
|
-
|
false
|
--debug-type
|
-g
|
打印记录的类型信息
|
-
|
false
|
--output-type
|
-
|
设置输出类型
|
-
|
false
|
更多使用说明请参考:[方舟运行时使用指南](https://gitee.com/openharmony/arkcompiler_ets_runtime/blob/master/docs/README_zh.md)
## 相关仓
[arkcompiler\_runtime\_core](https://gitee.com/openharmony/arkcompiler_runtime_core)
[arkcompiler\_ets\_runtime](https://gitee.com/openharmony/arkcompiler_ets_runtime)
**[arkcompiler\_ets\_frontend](https://gitee.com/openharmony/arkcompiler_ets_frontend)**