12. 项目框架搭建 - 12.7 使用react.js

优质
小牛编辑
123浏览
2023-12-01

react.js简介

react.js 是作为前端渲染的js库(注意:不是框架)。react.js用JSX开发来描述DOM结构,通过编译成virtual dom的在浏览器中进行view渲染和动态交互处理。更多了解可查阅GitHubhttps://facebook.github.io/react/

编译使用

由于react.js开发过程用JSX编程,无法直接在浏览器中运行,需要编译成浏览器可识别运行的virtual dom。从JSX开发到运行,需要有一个编译的过程。目前最常用的方案是用webpack + babel进行编译打包。

前端待编译源文件目录

demos/project/static/

  1. .
  2. ├── build # 编译的webpack脚本
  3. │ ├── webpack.base.config.js
  4. │ ├── webpack.dev.config.js
  5. │ └── webpack.prod.config.js
  6. ├── output # 输出文件
  7. │ ├── asset
  8. │ ├── dist # react.js编译后的文件目录
  9. │ └── ...
  10. └── src
  11. ├── apps # 页面react.js应用
  12. │ ├── admin.jsx
  13. │ ├── error.jsx
  14. │ ├── index.jsx
  15. │ └── work.jsx
  16. ├── components # jsx 模块、组件
  17. │ ├── footer-common.jsx
  18. │ ├── form-group.jsx
  19. │ ├── header-nav.jsx
  20. │ ├── sign-in-form.jsx
  21. │ └── sign-up-form.jsx
  22. └── pages # react.js 执行render文件目录
  23. ├── admin.js
  24. ├── error.js
  25. ├── index.js
  26. └── work.js
  27. ...

react.js页面应用文件

static/src/apps/index.jsx 文件

  1. import React from 'react'
  2. import ReactDOM from 'react-dom'
  3. import { Layout, Menu, Breadcrumb } from 'antd'
  4. import HeadeNav from './../components/header-nav.jsx'
  5. import FooterCommon from './../components/footer-common.jsx'
  6. import 'antd/lib/layout/style/css'
  7. const { Header, Content, Footer } = Layout
  8. class App extends React.Component {
  9. render() {
  10. return (
  11. <Layout className="layout">
  12. <HeadeNav/>
  13. <Content style={{ padding: '0 50px' }}>
  14. <Breadcrumb style={{ margin: '12px 0' }}>
  15. <Breadcrumb.Item>Home</Breadcrumb.Item>
  16. </Breadcrumb>
  17. <div style={{ background: '#fff', padding: 24, minHeight: 280 }}>
  18. <p>index</p>
  19. </div>
  20. </Content>
  21. <FooterCommon />
  22. </Layout>
  23. )
  24. }
  25. }
  26. export default App

react.js执行render渲染

static/src/pages/index.js 文件

  1. import React from 'react'
  2. import ReactDOM from 'react-dom'
  3. import App from './../apps/index.jsx'
  4. ReactDOM.render( <App />,
  5. document.getElementById("app"))

静态页面引用react.js编译后文件

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title><%= title %></title>
  5. <link rel="stylesheet" href="/output/dist/css/index.css">
  6. </head>
  7. <body>
  8. <div id="app"></div>
  9. <script src="/output/dist/js/vendor.js"></script>
  10. <script src="/output/dist/js/index.js"></script>
  11. </body>
  12. </html>

页面渲染效果

project-result-01.png