- ReactJS 教程
- ReactJS - 首頁
- ReactJS - 簡介
- ReactJS - 路線圖
- ReactJS - 安裝
- ReactJS - 特性
- ReactJS - 優點與缺點
- ReactJS - 架構
- ReactJS - 建立 React 應用
- ReactJS - JSX
- ReactJS - 元件
- ReactJS - 巢狀元件
- ReactJS - 使用新建立的元件
- ReactJS - 元件集合
- ReactJS - 樣式
- ReactJS - 屬性 (props)
- ReactJS - 使用屬性建立元件
- ReactJS - props 驗證
- ReactJS - 建構函式
- ReactJS - 元件生命週期
- ReactJS - 事件管理
- ReactJS - 建立一個事件感知元件
- ReactJS - 在 Expense Manager 應用中引入事件
- ReactJS - 狀態管理
- ReactJS - 狀態管理 API
- ReactJS - 無狀態元件
- ReactJS - 使用 React Hooks 進行狀態管理
- ReactJS - 使用 React Hooks 進行元件生命週期管理
- ReactJS - 佈局元件
- ReactJS - 分頁
- ReactJS - Material UI
- ReactJS - Http 客戶端程式設計
- ReactJS - 表單程式設計
- ReactJS - 受控元件
- ReactJS - 非受控元件
- ReactJS - Formik
- ReactJS - 條件渲染
- ReactJS - 列表
- ReactJS - Keys
- ReactJS - 路由
- ReactJS - Redux
- ReactJS - 動畫
- ReactJS - Bootstrap
- ReactJS - Map
- ReactJS - 表格
- ReactJS - 使用 Flux 管理狀態
- ReactJS - 測試
- ReactJS - CLI 命令
- ReactJS - 構建和部署
- ReactJS - 示例
- Hooks
- ReactJS - Hooks 簡介
- ReactJS - 使用 useState
- ReactJS - 使用 useEffect
- ReactJS - 使用 useContext
- ReactJS - 使用 useRef
- ReactJS - 使用 useReducer
- ReactJS - 使用 useCallback
- ReactJS - 使用 useMemo
- ReactJS - 自定義 Hooks
- ReactJS 高階
- ReactJS - 可訪問性
- ReactJS - 程式碼分割
- ReactJS - Context
- ReactJS - 錯誤邊界
- ReactJS - 轉發 Refs
- ReactJS - Fragments
- ReactJS - 高階元件
- ReactJS - 與其他庫整合
- ReactJS - 效能最佳化
- ReactJS - Profiler API
- ReactJS - Portals
- ReactJS - 無 ES6 ECMAScript 的 React
- ReactJS - 無 JSX 的 React
- ReactJS - 調和
- ReactJS - Refs 和 DOM
- ReactJS - Render Props
- ReactJS - 靜態型別檢查
- ReactJS - Strict Mode
- ReactJS - Web Components
- 其他概念
- ReactJS - 日期選擇器
- ReactJS - Helmet
- ReactJS - 內聯樣式
- ReactJS - PropTypes
- ReactJS - BrowserRouter
- ReactJS - DOM
- ReactJS - 輪播圖
- ReactJS - 圖示
- ReactJS - 表單元件
- ReactJS - 參考 API
- ReactJS 有用資源
- ReactJS - 快速指南
- ReactJS - 有用資源
- ReactJS - 討論
ReactJS - 建立 React 應用
正如我們之前瞭解到的,React 庫可用於簡單和複雜的應用程式。簡單的應用程式通常在其指令碼部分包含 React 庫。在複雜的應用程式中,開發人員必須將程式碼拆分成多個檔案並將程式碼組織成標準結構。在這裡,React 工具鏈提供預定義的結構來引導應用程式。此外,開發人員可以自由使用他們自己的專案結構來組織程式碼。
讓我們看看如何建立簡單和複雜的 React 應用程式:
使用 Rollup 打包器
Rollup 是一個小型且快速的 JavaScript 打包器。讓我們在本節中學習如何使用 Rollup 打包器。
以下是使用 Rollup 打包器建立應用程式的步驟:
步驟 1 - 開啟終端並進入您的工作區。
cd /go/to/your/workspace
步驟 2 - 接下來,建立一個資料夾 expense-manager-rollup 並移動到新建立的資料夾。同時,在您喜歡的編輯器或 IDE 中開啟該資料夾。
mkdir expense-manager-rollup cd expense-manager-rollup
然後,建立並初始化專案。
npm init -y
步驟 3 - 要安裝 React 庫 (react 和 react-dom),請執行以下命令。
npm install react@^17.0.0 react-dom@^17.0.0 --save
然後使用以下命令安裝 babel 及其預設庫作為開發依賴項。
npm install @babel/preset-env @babel/preset-react @babel/core @babel/plugin-proposal-class-properties -D
接下來,安裝 rollup 及其外掛庫作為開發依賴項。
npm i -D rollup postcss@8.1 @rollup/plugin-babel @rollup/plugin-commonjs @rollup/plugin-node-resolve @rollup/plugin-replace rollup-plugin-livereload rollup-plugin-postcss rollup-plugin-serve postcss@8.1 postcss-modules@4 rollup-plugin-postcss
接下來,為非同步程式設計安裝 corejs 和 regenerator runtime。
npm i regenerator-runtime core-js
步驟 4 - 之後,在根資料夾下建立一個 babel 配置檔案 .babelrc 來配置 babel 編譯器。
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage",
"corejs": 3,
"targets": "> 0.25%, not dead"
}
],
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
rollup.config.js
接下來,在根資料夾中建立一個 rollup.config.js 檔案來配置 rollup 打包器。
import babel from '@rollup/plugin-babel';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import replace from '@rollup/plugin-replace';
import serve from 'rollup-plugin-serve';
import livereload from 'rollup-plugin-livereload';
import postcss from 'rollup-plugin-postcss'
export default {
input: 'src/index.js',
output: {
file: 'public/index.js',
format: 'iife',
},
plugins: [
commonjs({
include: [
'node_modules/**',
],
exclude: [
'node_modules/process-es6/**',
],
}),
resolve(),
babel({
exclude: 'node_modules/**'
}),
replace({
'process.env.NODE_ENV': JSON.stringify('production'),
}),
postcss({
autoModules: true
}),
livereload('public'),
serve({
contentBase: 'public',
port: 3000,
open: true,
}), // index.html should be in root of project
]
}
package.json
接下來,更新 package.json 幷包含我們的入口點 (public/index.js 和 public/styles.css) 和構建和執行應用程式的命令。
...
"main": "public/index.js",
"style": "public/styles.css",
"files": [
"public"
],
"scripts": {
"start": "rollup -c -w",
"build": "rollup"
},
...
步驟 5 - 接下來,在應用程式的根目錄下建立一個 src 資料夾,該資料夾將儲存應用程式的所有原始碼。
接下來,在 src 下建立一個資料夾 components 來包含我們的 React 元件。我們的想法是建立兩個檔案,`
應用程式的最終結構如下:
|-- package-lock.json |-- package.json |-- rollup.config.js |-- .babelrc `-- public |-- index.html `-- src |-- index.js `-- components | |-- mycom.js | |-- mycom.css
現在,讓我們建立一個新的元件 HelloWorld 來確認我們的設定工作正常。
HelloWorld.js
在 components 資料夾下建立一個檔案 HelloWorld.js,並編寫一個簡單的元件來發出 Hello World 訊息。
import React from "react";
class HelloWorld extends React.Component {
render() {
return (
<div>
<h1>Hello World!</h1>
</div>
);
}
}
export default HelloWorld;
index.js
接下來,在 src 資料夾下建立我們的主檔案 index.js 並呼叫我們新建立的元件。
import React from 'react';
import ReactDOM from 'react-dom';
import HelloWorld from './components/HelloWorld';
ReactDOM.render(
<React.StrictMode>
<HelloWorld />
</React.StrictMode>,
document.getElementById('root')
);
在根目錄下建立一個 public 資料夾。
index.html
接下來,建立一個 html 檔案 index.html(在 public 資料夾下*),這將是我們的應用程式的入口點。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Expense Manager :: Rollup version</title>
</head>
<body>
<div id="root"></div>
<script type="text/JavaScript" src="./index.js"></script>
</body>
</html>
最後,構建並執行應用程式。
npm start
npm build 命令將執行 rollup 並將我們的應用程式捆綁到單個檔案 dist/index.js 檔案中,並開始提供應用程式服務。dev 命令將在原始碼更改時重新編譯程式碼,並在瀏覽器中重新載入更改。
> expense-manager-rollup@1.0.0 build /path/to/your/workspace/expense-manager-rollup > rollup -c rollup v2.36.1 bundles src/index.js → dist\index.js... LiveReload enabled https://:10001 -> /path/to/your/workspace/expense-manager-rollup/dist created dist\index.js in 4.7s waiting for changes...
開啟瀏覽器並在位址列中輸入 https://:3000 並按 Enter 鍵。serve 應用程式將提供我們的網頁,如下所示。
使用 Parcel 打包器
Parcel 是一個快速且零配置的打包器。它只需要應用程式的入口點,它將自己解析依賴項並打包應用程式。讓我們在本節中學習如何使用 Parcel 打包器。
步驟 1 - 首先,安裝 Parcel 打包器。
npm install -g parcel-bundler
然後,開啟終端並進入您的工作區。
cd /go/to/your/workspace
步驟 2 - 接下來,建立一個資料夾 expense-manager-parcel 並移動到新建立的資料夾。同時,在您喜歡的編輯器或 IDE 中開啟該資料夾。
mkdir expense-manager-parcel cd expense-manager-parcel
使用以下命令建立並初始化專案。
npm init -y
步驟 3 - 安裝 React 庫 (react 和 react-dom)。
npm install react@^17.0.0 react-dom@^17.0.0 --save
安裝 babel 及其預設庫作為開發依賴項。
npm install @babel/preset-env @babel/preset-react @babel/core @babel/plugin-proposal-class-properties -D
然後,在根資料夾下建立一個 babel 配置檔案 .babelrc 來配置 babel 編譯器。
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
步驟 4 - 更新 package.json 幷包含我們的入口點 (src/index.js) 和構建和執行應用程式的命令。
...
"main": "src/index.js",
"scripts": {
"start": "parcel public/index.html",
"build": "parcel build public/index.html --out-dir dist"
},
...
步驟 5 - 在應用程式的根目錄下建立一個 src 資料夾,該資料夾將儲存應用程式的所有原始碼。
接下來,在 src 下建立一個資料夾 components 來包含我們的 React 元件。我們的想法是建立兩個檔案,<component>.js 來編寫元件邏輯和 <component.css> 來包含元件特定的樣式。
應用程式的最終結構如下:
|-- package-lock.json |-- package.json |-- .babelrc `-- public |-- index.html `-- src |-- index.js `-- components | |-- mycom.js | |-- mycom.css
讓我們建立一個新的元件 HelloWorld 來確認我們的設定工作正常。在 components 資料夾下建立一個檔案 HelloWorld.js,並編寫一個簡單的元件來發出 Hello World 訊息。
HelloWorld.js
import React from "react";
class HelloWorld extends React.Component {
render() {
return (
<div>
<h1>Hello World!</h1>
</div>
);
}
}
export default HelloWorld;
index.js
現在,在 src 資料夾下建立我們的主檔案 index.js 並呼叫我們新建立的元件。
import React from 'react';
import ReactDOM from 'react-dom';
import HelloWorld from './components/HelloWorld';
ReactDOM.render(
<React.StrictMode>
<HelloWorld />
</React.StrictMode>,
document.getElementById('root')
);
接下來,在根目錄下建立一個 public 資料夾。
index.html
建立一個 html 檔案 index.html(在 public 資料夾中),這將是我們的應用程式的入口點。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Expense Manager :: Parcel version</title>
</head>
<body>
<div id="root"></div>
<script type="text/JavaScript" src="../src/index.js"></script>
</body>
</html>
最後,構建並執行應用程式。
npm start
npm build 命令將執行 parcel 命令。它將立即捆綁和提供應用程式服務。它會在原始碼更改時重新編譯,並在瀏覽器中重新載入更改。
> expense-manager-parcel@1.0.0 dev /go/to/your/workspace/expense-manager-parcel > parcel index.html Server running at https://:1234 √ Built in 10.41s.
開啟瀏覽器並在位址列中輸入 https://:1234 並按 Enter 鍵。
要建立應用程式的生產包以將其部署到生產伺服器,請使用 build 命令。它將在 dist 資料夾下生成一個包含所有捆綁原始碼的 index.js 檔案。
npm run build > expense-manager-parcel@1.0.0 build /go/to/your/workspace/expense-manager-parcel > parcel build index.html --out-dir dist &sqrt; Built in 6.42s. dist\src.80621d09.js.map 270.23 KB 79ms dist\src.80621d09.js 131.49 KB 4.67s dist\index.html 221 B 1.63s