原文連接:reactjs.org/docs/add-re…html
react是但願被大衆逐步接受爲初衷所設計的框架,所以你能夠在項目中按照需求來使用react,即便知識添加一些零星的交互也是可行的。react
大部分的網站項目都不是一個單一頁面的應用,你能夠在項目中經過幾行代碼使用react來擴展你的項目或者製做一些可動態使用的組件。web
在本節中將會展現如何在一個已有html頁面中使用react組件,你能夠在你的web頁面中或者新建立一個html文件來嘗試。npm
首先,打開你想要編輯的html頁面,添加一個空<div>
標籤做爲你想要以react來展現的標籤,以下所示瀏覽器
<body>
<!--已有的HTML-->
<div id="button_container"></div>
<!--已有的HTML-->
</body>
複製代碼
此處使用id=「button_container」來標記該<div>
以便以後再js代碼中找到該<div>
並在其中展現react組件。babel
提示:你能夠在
<body>
標籤內的任何地方放置DOM容器。你也能夠在一個頁面中放置多個DOM容器,固然這些容器一般須要爲空,由於react在渲染時會把容器內的內容所有替換掉。app
接下來,添加如下三個script標籤到<body>
標籤底部框架
<!-- 前兩個script用來加載react所須要的資源 -->
<!-- 注意:當你須要部署項目時,須要將開發環境換成生產環境, 將 "development.js" 替換成 "production.min.js"便可 -->
<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
<!-- 此標籤用來加載編寫好的react組件 -->
<script src="button.js"></script>
複製代碼
建立一個名爲button.js的文件在你的html文件目錄下。 複製如下代碼dom
'use strict';
const e = React.createElement;
class ReactButton extends React.Component {
constructor(props) {
super(props);
this.state = { liked: false };
}
render() {
if (this.state.liked) {
return 'React Button';
}
return e(
'button',
{ onClick: () => this.setState({ liked: true }) },
'點我'
);
}
}
const domContainer = document.querySelector('#button_container');
ReactDOM.render(e(ReactButton), domContainer);
複製代碼
這兩行代碼的做用是找到咱們在第一步中添加的DOM容器並在其中展現咱們已經編寫好的react組件ReactButton。工具
const domContainer = document.querySelector('#button_container');
ReactDOM.render(e(ReactButton), domContainer);
複製代碼
提示:代碼看不懂沒有關係,咱們將會在以後的章節講解代碼中各部分的概念,如今,只要把它展現在頁面上就好了。
你已經在你得項目中添加了第一個react組件了,運行你的項目看看吧。
提示:部署須知 處於開發環境下的js代碼會嚴重下降頁面運行速度,給用戶帶來不良的用戶體驗。 所以在部署項目以前須要將以前添加的react資源文件替換成如下資源
<script src="https://unpkg.com/react@16/umd/react.production.min.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js" crossorigin></script>
複製代碼
在上面的例子中,咱們使用的是JavaScript代碼來通知react展現咱們編寫好的組件。
const e = React.createElement;
return e(
'button',
{ onClick: () => this.setState({ liked: true }) },
'點我'
);
複製代碼
固然,react提供了另一種選擇來代替JavaScript代碼,那就是JSX,上例代碼能夠用JSX替換,以下
return (
<button onClick={() => this.setState({ liked: true })}>
點我
</button>
);
複製代碼
以上兩例代碼是等價的,你能夠自由地選擇使用JavaScript代碼或者JSX來進行代碼編寫。
若是使用JSX的話,須要引入babel.js講JSX轉換成瀏覽器能夠識別的JavaScript代碼才能正常編譯。接下來說述如何在現有網頁中使用JSX。
要在網頁中使用JSX很簡單,只須要引入以下資源文件便可
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
複製代碼
接下來你只要在包含有type="text/babel"的script標籤中使用JSX就好了。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Hello World</title>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<!-- Don't use this in production: -->
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('root')
);
</script>
</body>
</html>
複製代碼
以後只要在html中引入編寫好的js文件便可
<!-- 此標籤用來加載編寫好的react組件 -->
<script src="button.js"></script>
複製代碼
這是一個學習react和編寫簡單的demo的很是好的途徑。可是請注意,使用babel會下降瀏覽器的編譯速度,所以不推薦把包含有babel的網頁做爲產品發佈部署。
當你須要發佈部署你的網站時,請記得刪除刪除帶有type="text/babel"的script標籤及他的內容,在下一節,咱們將講述如何安裝JSX預處理器來自動編譯你寫好的JSX代碼。
在項目中使用JSX不須要向打包器或者開發者工具等複雜的工具。實際上,添加JSX預處理器就像添加CSS預處理器同樣簡單。惟一的要求就是須要在你的電腦上安裝Node.js。
如今在你的項目目錄下打開終端,並輸入如下命令:
1. npm init -y
2. npm install babel-cli@6 babel-preset-react-app@3
複製代碼
提示:咱們只使用npm來安裝JSX預處理器,以後你將不會用到再使用到它。react代碼和你的項目代碼無需改動,只須要保持原樣便可。
建立一個src文件夾並把你編寫好的js文件放在這個文件夾下。 在終端運行如下命令
npx babel --watch src --out-dir . --presets react-app/prod
複製代碼
你能夠看到,src文件夾下你編寫好的代碼已經被自動處理好了而且建立了一個新的button.js文件,對比以二者你能夠看到新出現的js文件是以Javascript代碼編寫的。
以上,就是全部的在現有項目中使用react的操做。