什么是 Codegen?
¥What is Codegen?
Codegen 是一种避免编写大量重复代码的工具。使用 Codegen 不是强制性的:你可以手动编写所有生成的代码。但是,Codegen 生成的脚手架代码可以为你节省大量时间。
¥Codegen is a tool to avoid writing a lot of repetitive code. Using Codegen is not mandatory: you can write all the generated code manually. However, Codegen generates scaffolding code that could save you a lot of time.
每次构建 iOS 或 Android 应用时,React Native 都会自动调用 Codegen。有时,你可能希望手动运行 Codegen 脚本以了解实际生成的类型和文件:这是开发 Turbo 原生模块 和 Fabric 原生组件时的常见场景。
¥React Native invokes Codegen automatically every time an iOS or Android app is built. Occasionally, you would like to manually run the Codegen scripts to know which types and files are actually generated: this is a common scenario when developing Turbo Native Modules and Fabric Native Components.
代码生成方式有效
¥How Codegen Works
Codegen 是一个与 React Native 应用紧密耦合的过程。Codegen 脚本位于 react-native
NPM 包中,应用在构建时调用这些脚本。
¥Codegen is a process that is tightly coupled with a React Native app. The Codegen scripts live inside the react-native
NPM package and the apps call those scripts at build time.
Codegen 会从你在 package.json
中指定的目录开始,抓取项目中的文件夹,查找包含自定义模块和组件规范(或多个规范)的特定 JS 文件。Spec 文件是用类型化方言编写的 JS 文件:React Native 目前支持 Flow 和 TypeScript。
¥Codegen crawls the folders in your project, starting from a directory you specify in your package.json
, looking for some specific JS files that contain the specification (or specs) for your custom modules and components. Spec files are JS files written in a typed dialect: React Native currently supports Flow and TypeScript.
每次 Codegen 找到 spec 文件时,它都会生成与其关联的样板代码。Codegen 生成一些 C++ 粘合代码,然后生成特定于平台的代码,Android 使用 Java,iOS 使用 Objective-C++。
¥Every time Codegen finds a spec file, it generates boilerplate code associated with it. Codegen generates some C++ glue-code and then it generates platform-specific code, using Java for Android and Objective-C++ for iOS.