[译]参照TypeScript来学习Rust-S1

对于前端,笔者比较认可Rust作为前端开发技术栈投资的,本文系列翻译旨在分享、学习Rust这门语言。

Rust常常被认为是TypeScript的继任者,我们可以通过《Rust Book》来加深学习Rust的印象。

先决条件

Rust和TypeScript项目都是依赖GIT的版本控制。

安装Rust

Rust是通过全局二进制指令安装的,安装完成之后会有rustccargo

安装TypeScript

TypeScript是依赖JavaScript的Node.js运行时环境,首先需要安装Node.js。安装完成之后就会有npm指令,借助npm来安装TypeScript。

创建Rust项目

Rust时通过cargo指令来创建一个项目的:

cargo new r00_hello_world

这个项目同时会初始化一个包含.gitignore文件的git仓库。该仓库会包含一个示例的源文件src/main.rs:

fn main() {
    println!("Hello, world!");
}

创建TypeScript项目

TypeScript项目首次创建可以通过npm指令:

mkdir t00_hello_world
cd t00_hello_world
npm init --yes

然后通过如下指令来初始化git仓库:

git init

然后创建一个.gitignore文件:

node_modules/
dist/

然后再来安装TypeScript依赖:

npm install -D typescript

接着可以创建TypeScript的配置文件tsconfig.json

{
  "compileOnSave": true,
  "compilerOptions": {
    "target": "ES2017",
    "module": "commonjs",
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "inlineSourceMap":true,
    "noImplicitThis": true,
    "noUnusedLocals": true,
    "stripInternal": true,
    "pretty": true,
    "declaration": true,
    "outDir": "dist",
    "lib": ["es2017", "dom"],
    "jsx": "react",
    "sourceMap": false
  },
  "exclude": [
    "app/public",
    "app/views",
    "dist",
    "node_modules",
    "test",
    "logs"
  ]
}

更新下package.json里的script,添加start & build:

{
  "name": "t00_hello_world",
  "version": "1.0.0",
  "description": "",
  "main": "dist/index.js",
  "scripts": {
    "start": "node dist/index.js",
    "build": "tsc",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "typescript": "^3.6.4"
  }
}

最后我们创建一个源文件src/index.ts

console.log('Hello World!');

构建Rust

项目开发阶段,我们用如下指令来构建Rust项目:

cargo build

该指令执行后会生成系统可执行文件target/debug/r00_hello_world. 如果是为了发布或者优化,我们可以用如下指令:

cargo build --release

该指令执行后会生成系统可执行文件target/release/r00_hello_world.

TypeScript构建

我们可以通过如下指令来构建TypeScript项目:

npm run build

执行该命令之后会生成js文件dist/index.js.

执行Rust

我们可以简单的通过运行可执行文件:

./target/debug/r00_hello_world

也或者同时构建并运行:

cargo run

执行TypeScript

我们可以通过npm script执行转换后的js文件

npm start

或者我们直接运行js文件:

node dist/index.js

无论哪种情况,我们都将在JavaScript运行时之上执行项目。