1. 程式人生 > 實用技巧 >react搭建後臺管理系統

react搭建後臺管理系統

react搭建後臺管理系統

一、專案前期的準備工作

  • 建立git專案並初始化

  • 安裝yarn:npm install yarn -g

  • 安裝node.js

  • yarn init對專案進行初始化,並在命令列根據提示進行必要的設定

"name": "cms-react",
  "version": "1.0.0",
  "main": "index.js",
  "repository": "倉庫地址",
  "author": "git使用者名稱",
  "license": "MIT",
  "private": true  // 是否是私有倉庫
  • webpack安裝與配置

    • yarn安裝:yarn add [email protected] --dev
    • 在專案根目錄創建出口檔案webpack.config.js
    const path = require('path');
    const webpack = require('webpack'); // 引入webpack
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const ExtractTextPlugin = require('extract-text-webpack-plugin');
    
    
    module.exports = {
      entry: './path/to/my/entry/file.jsx', // 專案的入口檔案路徑
      output: {
        path: path.resolve(__dirname, 'dist'), // 打包後的專案檔案路由,一般不用變
        publicPath: '/dist/', // 公共路徑
        filename: 'js/app.js' // 打包後的入口檔名,根據專案實際情況修改
      },
      // babel-loader配置
      module: {
        rules: [
          // react(jsx)檔案的處理配置
          {
            test: /\.m?jsx$/,
            exclude: /(node_modules)/,
            use: {
              loader: 'babel-loader',
              options: {
                presets: ['@babel/preset-env', '@babel/preset-react'],
              }
            }
          },
          // css檔案的處理配置
          {
            test: /\.css$/i,
            use: ExtractTextPlugin.extract({
              fallback: "style-loader",
              use: "css-loader"
            })
          },
          // sass檔案的處理配置
          {
            test: /\.scss$/i,
            use: ExtractTextPlugin.extract({
              fallback: "style-loader",
              use: ["css-loader", 'sass-loader']
            })
          },
          // url-loader(圖片)的處理配置
          {
            test: /\.(png|jpg|gif)$/i,
            use: [
              {
                loader: 'url-loader',
                options: {
                  limit: 8192, // 如果超過這個值才會單獨生成一個檔案
                  name: 'resource/[name].[ext]' // 檔名及擴充套件
                },
              },
            ]
          },
          // 字型圖示的配置
          {
            test: /\.(eot|svg|ttf|woff|woff2|otf)$/i,
            use: [
              {
                loader: 'url-loader',
                options: {
                  limit: 8192,
                  name: 'resource/[name].[ext]' // 檔名及擴充套件
                },
              },
            ]
          },
        ]
      },
      plugins: [
        new HtmlWebpackPlugin({
          // 處理html檔案
          template: './src/index.html'  // 專案中自定義模板的路徑設定
        }),
        // 處理css檔案
        new ExtractTextPlugin("css/[name].css"),
        // 提出公共模組
        new webpack.optimize.CommonsChunkPlugin({
          name: "common",
          filename: 'js/base.js'
        })
      ],
      // devServer配置
      devServer: { 
        port: 8086  // 自定義埠號,和主要的軟體服務埠號不能衝突
      },
    };
    
    • 使用webpack打包:專案中webpack沒有全域性安裝,那麼打包的命令為node_modules/.bin/webpack

    • 安裝外掛HtmlWebpackPlugin,在Webpack.config.js配置檔案中新增安裝的外掛名。安裝命令:npm uninstall html-webpack-plugin npm install [email protected] -D,這裡注意版本問題,如果版本有問題,在打包的時候會報錯:TypeError: Cannot read property 'make' of undefined,安裝合適的版本即可

    • 安裝外掛babel-loader,安裝命令為: yarn add -D babel-loader @babel/core @babel/preset-env,也可以使用yarn add babel-core@版本號安裝多個版本的core

    • 安裝配置react,命令:

    • 安裝並配置css外掛,命令:yarn add style-loader css-loader --dev

    • 安裝extract-text-webpack-plugin外掛,命令:yarn add [email protected] --dev。在打包的時候可能會報錯: (node:16920) DeprecationWarning: Tapable.plugin is deprecated. Use new API on .hooks instead,或者報錯:TypeError: Cannot read property 'thisCompilation' of undefined

      • 原因:webpack版本在4.0以上,版本不適配
      • 解決辦法:
        • 先解除安裝執行 npm uninstall --save-dev extract-text-webpack-plugin
        • 再安裝 npm install --save-dev extract-text-webpack-plugin
    • 安裝sass-loader,命令:yarn add [email protected] --dev

    • sass-loader生效的前提是需要安裝node-sass, 命令為: yarn add node-sass --dev,這個包和其他的包不同,其他的包都是呼叫檔案,這個包需要呼叫作業系統的東西。

    • 安裝url-loader和file-loader用於對圖片進行處理,命令為:yarn add [email protected] [email protected] --dev

    • 安裝字型圖示庫,命令為:yarn add font-awesome

    • 提出處理公共模組外掛,需要定義在外掛列表中,並且需要提前引入webpack

    const webpack = require('webpack');
    plugins: [
      new webpack.optimize.CommonsChunkPlugin({
            name: "common",
            filename: 'js/base.js'
      })
    ]
    
    • 正常情況下的打包檔案命令是:
      • node_modules/.bin/webpack(僅在專案中安裝webpack時)
      • webpack(全域性安裝webpack時)
    • 為了方便打包和檢視檔案,需要引入webpack-dev-server,做到檔案改動服務實時更新的效果
      • 命令: yarn add [email protected] --dev
      • 配置:
        • 在output中配置:publicPath: '/dist/'
        • 在plugins後新增配置資訊
      • 安裝成功後的打包命令為:node_modules/.bin/webpack-dev-server,啟動服務
    • 啟動服務後,如果在專案的除錯中報錯:Refused to apply style from 'http://localhost:8080/dist/css/style.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled. ,解決辦法是找到.html檔案去掉rel="stylesheet"重新整理即可