Relay.js 项目教程
1. 项目的目录结构及介绍
Relay.js 项目的目录结构如下:
relay.js/
├── src/
│ ├── components/
│ ├── containers/
│ ├── mutations/
│ ├── queries/
│ ├── routes/
│ ├── App.js
│ └── index.js
├── public/
│ ├── index.html
│ └── favicon.ico
├── .gitignore
├── .eslintrc.js
├── .babelrc
├── package.json
├── README.md
└── yarn.lock
目录介绍
src/
:包含项目的源代码。components/
:存放 React 组件。containers/
:存放 Relay 容器组件。mutations/
:存放 GraphQL 突变文件。queries/
:存放 GraphQL 查询文件。routes/
:存放路由配置文件。App.js
:主应用组件。index.js
:入口文件。
public/
:包含公共资源文件。index.html
:HTML 模板文件。favicon.ico
:网站图标。
.gitignore
:Git 忽略文件配置。.eslintrc.js
:ESLint 配置文件。.babelrc
:Babel 配置文件。package.json
:项目依赖和脚本配置。README.md
:项目说明文档。yarn.lock
:Yarn 锁定文件。
2. 项目的启动文件介绍
项目的启动文件是 src/index.js
,其主要功能是渲染 React 应用到 HTML 模板中。
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
serviceWorker.unregister();
启动文件介绍
ReactDOM.render
:将App
组件渲染到index.html
中的root
元素。serviceWorker
:用于 PWA(渐进式 Web 应用)的配置。
3. 项目的配置文件介绍
.gitignore
.gitignore
文件用于指定 Git 忽略的文件和目录。
node_modules/
build/
.env
.eslintrc.js
.eslintrc.js
文件用于配置 ESLint,确保代码风格一致。
module.exports = {
env: {
browser: true,
es6: true,
},
extends: [
'eslint:recommended',
'plugin:react/recommended',
],
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 2018,
sourceType: 'module',
},
plugins: [
'react',
],
rules: {
// 自定义规则
},
};
.babelrc
.babelrc
文件用于配置 Babel,支持现代 JavaScript 语法。
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
package.json
package.json
文件包含项目的依赖和脚本配置。
{
"name": "relay.js",
"version": "1.0.0",
"description": "Relay.js project",
"main": "src/index.js",
"scripts": {
"start": "react-scripts start",
"build": "react-scripts