diff --git a/translated/tech/20200121 13 of the best React JavaScript frameworks.md b/translated/tech/20200121 13 of the best React JavaScript frameworks.md index c76a969d11..b7be204e81 100644 --- a/translated/tech/20200121 13 of the best React JavaScript frameworks.md +++ b/translated/tech/20200121 13 of the best React JavaScript frameworks.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) +[#]: translator: (zpl1025) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (13 of the best React JavaScript frameworks) @@ -9,70 +9,67 @@ 13 个最好的 React JavaScript 框架 ====== -如果你正在用 React.js 或 React Native 来开发用户界面的话,试试这些框架。 -![Javascript code close-up with neon graphic overlay][1] -React.js 和 React Native 都是用来开发用户界面(UI)的很受欢迎的开源平台。在 StackOverflow 2019 年度开发者调查里,两个框架的可取性和实用性都排名靠前。React.js 是 Facebook 在 2011 年开发的一个 JavaScript 库,来实现跨平台,动态以及高性能的 UI 设计需求;而 React Native 则是 Facebook 在 2015 年发布的框架,目的是使用 JavaScript 构建原生应用。 +> 如果你正在用 React.js 或 React Native 来开发用户界面的话,试试这些框架。 -下面介绍 13 个最好的 React JavaScript 框架,都是开源项目。前 11 个(和 React 一样)都使用 MIT 协议授权,后面两个使用 Apache 2.0 协议。 +![](https://img.linux.net.cn/data/attachment/album/202109/18/095748k48eskmjpzuhyzuj.jpg) -### 1\. Create React App +React.js 和 React Native 都是用来开发用户界面(UI)的很受欢迎的开源平台。在 StackOverflow 2019 年度开发者调查里,两个框架的可取性和使用情况都排名靠前。React.js 是 Facebook 在 2011 年开发的一个 JavaScript 库,来实现跨平台,动态以及高性能的 UI 设计需求;而 React Native 则是 Facebook 在 2015 年发布的框架,目的是使用 JavaScript 构建原生应用。 + +下面介绍 13 个最好的 React JavaScript 框架,都是开源项目。前 11 个(和 React 一样)都使用 MIT 许可证授权,后面两个使用 Apache 2.0 许可证。 + +### 1、Create React App 这个 Facebook 开发的命令行工具是 React Native 项目一定要用的。因为 [Create React App][2] 使用很简单,还可以避免你自己手动设定和配置应用,因此能节省大量的时间和精力。仅仅使用给一个简单的命令,就可以为你准备好创建 React 原生项目所需的一切。你可以用它来创建分类和文件,而且该框架还自带了工具用来构建,测试和启动应用。 - ``` # 安装软件包 $ npm install -g create-react-native-web-app -# 运行 create-react-native-web-app <项目目录> +# 运行 create-react-native-web-app <项目目录> $ create-react-native-web-app myApp -# 切换到创建的<项目目录> +# 切换到创建的 <项目目录> $ cd myApp # 运行 Web/Ios/Android 调试 # Web $ npm run web -# IOS (模拟器) +# IOS(模拟) $ npm run ios -# Android (实际连接的设备) +# Android(实际连接的设备) $ npm run android ``` #### 为什么选择 Create React App - 1. 支持配置,转换,以及测试运行的一流工具 + 1. 使用配置包、转码器,以及测试运行器进行开发的一流工具 2. 在应用架构里不需要配置以及没有额外文件 3. 确定的开发栈 4. 高效快速的开发工具 +### 2、Material Kit React - -### 2\. Material Kit React - -[Material Kit React][3] 是受谷歌的 Material Design 系统启发开发的, 很适合用来创建 React UI 组件。这个库最大的优点是提供了大量的组件,可以互相搭配做出非常好的效果。有超过一千个完全编码的组件,每一个都有用文件夹组织起来的独立图层。这样你就可以有上千个选项可以选择。同时也包含一些示例页面,方便你从中寻找灵感,或者向别人分享你的点子或创意。 +[Material Kit React][3] 是受谷歌的 Material Design 系统启发开发的,很适合用来创建 React UI 组件。这个库最大的优点是提供了大量的组件,可以互相搭配做出非常好的效果。有超过一千个完全编码的组件,每一个都有用文件夹组织起来的独立层。这样你就可以有上千个选项可以选择。它同时也包含一些示例页面,方便你从中寻找灵感,或者向别人分享你的点子或创意。 #### 安装 Material Kit - ``` -` $ npm install @material-ui/core` +$ npm install @material-ui/core ``` #### 使用 - ``` import React from 'react'; import Button from '@material-ui/core/Button'; -const App = () => ( - <Button variant="contained" color="primary"> +const App = () => ( + ); ``` @@ -82,15 +79,14 @@ Material-UI 组件不需要其他额外设置,也不会干扰全局变量空 这个 React 组件支持简易快速的网页开发。你可以用它创建自己的设计系统,或者直接开始 Material Design。 -### 3\. Shards React +### 3、Shards React -这个现代的 React UI 工具为了追求高效率,是从最底层开始构建的。它拥有现代的设计系统,可以让你按自己的想法任意定制。甚至可以下载源文件,然后从代码级别定制。另外,它用来设计样式的 SCSS 语法提高了开发体验。 +这个现代的 React UI 工具为了追求高效率,是从最底层开始构建的。它拥有现代的设计系统,可以让你按自己的想法任意定制。你甚至可以下载源文件,然后从代码级别定制。另外,它用来设计样式的 SCSS 语法提高了开发体验。 -[Shards React][4] 基于 Shards,使用了 React Datepicker,React Popper(一个定位引擎),和 noUISlider。还带有非常优秀的 Material Design 图标。还有很多设计好的版本,可以帮你寻找灵感或上手。 +[Shards React][4] 基于 Shards,使用了 React Datepicker、React Popper(一个定位引擎)和 noUISlider。还带有非常优秀的 Material Design 图标。还有很多设计好的版本,可以帮你寻找灵感或上手。 #### 用 Yarn 或 NPM 安装 Shards - ``` # Yarn yarn add shards-react @@ -105,22 +101,18 @@ npm i shards-react 2. Shards 默认支持响应式,图层可以适配任意大小屏幕 3. Shards 有完整的文档,可以快速开始构建漂亮的界面 - - -### 4\. Styled Components +### 4、Styled Components 这个高效的 CSS 工具可以用来为应用的可视界面创建小型可重用的组件。使用传统的 CSS,你可能会不小心覆盖掉网站其他位置的选择器,但 [Styled Components][5] 通过使用直接内嵌到组件里的 CSS 语法,可以完全避免这个问题。 #### 安装 - ``` -`npm install --save styled-components` +npm install --save styled-components ``` #### 使用 - ``` const Button = styled.button` background: background_type; @@ -128,7 +120,7 @@ const Button = styled.button` border: abc; color: name_of_color; Margin: margin_value; - padding: value; + padding: value`; ``` #### 优点 @@ -137,17 +129,14 @@ const Button = styled.button` 2. 组件样式依赖 JavaScript 3. 创建定制 CSS 组件 4. 内嵌样式 - 5. 简单地调用 styled() 可以将组件甚至是自定义组件转换成样式组件 + 5. 简单地调用 `styled()` 可以将组件甚至是自定义组件转换成样式组件 - - -### 5\. Redux +### 5、Redux [Redux][6] 是一个为 JavaScript 应用提供状态管理的方案。常用于 React.js,也可以用在其他类 React 框架里。 #### 安装 - ``` sudo npm install redux sudo npm install react-redux @@ -155,7 +144,6 @@ sudo npm install react-redux #### 使用 - ``` import { createStore } from "redux"; import rotateReducer from "reducers/rotateReducer"; @@ -173,22 +161,18 @@ export default configureStore; 2. 逻辑上测试更简单,使用 reducer 函数进行时间旅行调试也更容易 3. 统一管理状态 - - -### 6\. React Virtualized +### 6、React Virtualized 这个 React Native JavaScript 框架帮助渲染 large-list 和 tabular-data。使用 [React Virtualized][7],你可以限制请求和文档对象模型(DOM)元素的数量,从而提高 React 应用的性能。 #### 安装 - ``` -`npm install react-virtualized` +npm install react-virtualized ``` #### 使用 - ``` import 'react-virtualized/styles.css' import { Column, Table } from 'react-virtualized' @@ -198,7 +182,7 @@ import List from 'react-virtualized/dist/commonjs/List' alias: { 'react-virtualized/List': 'react-virtualized/dist/es/List', }, - ...rest + ...等等 } ``` @@ -208,71 +192,62 @@ import List from 'react-virtualized/dist/commonjs/List' 2. 渲染超大数据集 3. 使用一系列组件实现虚拟渲染 +### 7、React DnD - -### 7\. React DnD - -[ReactDnD][8] 用来创建复杂的拖放界面。拖放控件库有很多,选用 React DnD 是因为它是基于 HTML5 的拖放 API 的,创建界面更简单。 +[React DnD][8] 用来创建复杂的拖放界面。拖放控件库有很多,选用 React DnD 是因为它是基于 HTML5 的拖放 API 的,创建界面更简单。 #### 安装 - ``` -`npm install react-dnd-preview` +npm install react-dnd-preview ``` #### 使用 - ``` - import Preview from 'react-dnd-preview'; +import Preview from 'react-dnd-preview'; - const generatePreview = ({itemType, item, style}) => { - return <div class="item-list" style={style}>{itemType}</div>; - }; - - class App extends React.Component { - ... - - render() { - return ( - <DndProvider backend={MyBackend}> - <ItemList /> - <Preview generator={generatePreview} /> - // or - <Preview>{generatePreview}</Preview> - </DndProvider> - ); - } +const generatePreview = ({itemType, item, style}) => { + return