# 生成js代码

V语言的开发重点在编译器前端，目前主要的编译器后端有4个：C/native/js/go。

js作为事实上的web前端汇编语言，已经有各种语言支持编译生成js代码，而且生成的js代码质量都不错，比如typescript，rescript等。

总感觉V还是集中精力定位在服务端，定位为"better C"就已经很好了，web前端不太可能采用V来生成js。

## 生成js代码

使用-o参数就可以

把当前目录的main.v代码生成main.js代码

最简单的V代码:

```v
module main

fn main() {
	println('from main')
}
```

编译生成js代码:

```shell
v -o main.js ./main.v 
```

生成的js代码可以通过node运行

```shell
node ./main.js
```

## 基本类型对应

V的每一个基本类型都对应一个js同名函数

```js
// builtin type casts
const [i8, i16, int, i64, u8, u16, u32, u64, f32, f64, int_literal, float_literal, size_t, bool, string, map, array] = [
	function(val) { return new builtin.i8(val) },
	function(val) { return new builtin.i16(val) },
	function(val) { return new builtin.int(val) },
	function(val) { return new builtin.i64(val) },
	function(val) { return new builtin.u8(val) },
	function(val) { return new builtin.u16(val) },
	function(val) { return new builtin.u32(val) },
	function(val) { return new builtin.u64(val) },
	function(val) { return new builtin.f32(val) },
	function(val) { return new builtin.f64(val) },
	function(val) { return new builtin.int_literal(val) },
	function(val) { return new builtin.float_literal(val) },
	function(val) { return new builtin.size_t(val) },
	function(val) { return new builtin.bool(val) },
	function(val) { return new builtin.string(val) },
	function(val) { return new builtin.map(val) },
	function(val) { return new builtin.array(val) }
]
```

## 代码对照表

### 常量

### 枚举

### 模块

### 函数

### 数组

### 字符串

### 字典

### 结构体

### 结构体方法

### 结构体访问控制

### 流程控制语句

### 类型定义

### 接口

### 泛型

### 错误处理

### 联合类型

### 运算符重载

### 条件编译


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lydiandylin.gitbook.io/vlang/gen_js.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
