• webpack+react+babel环境搭建第一步——webpack 4 + mockjs


    一、创建项目目录

    二、添加开发依赖( html-webpack-plugin、webpack、webpack-cli、webpack-dev-server、webpack-api-mocker)

    如下所示位于package.json文件中

    ...
    "devDependencies": {
        "html-webpack-plugin": "^3.2.0",
        "webpack": "^4.6.0",
        "webpack-cli": "^2.0.15",
        "webpack-dev-server": "^3.1.3",
        "webpack-api-mocker": "^1.4.3"
      },
    ...

    使用npm install 或者 yarn install (推荐,原因你懂的)

    三、创建 webpack.config.js 文件,编写相关配置

      

     1 const path = require('path');
     2 const HtmlWebpackPlugin = require('html-webpack-plugin');
     3 const apiMocker = require('webpack-api-mocker');
     4 
     5 module.exports = {
     6     mode: 'development', //当前环境
     7     entry: { //程序的启动入口
     8         app: './src/index.js'
     9     },
    10     devServer: {
    11         /****************此处星星多,注意看此处****************************/
    12         //利用webpack-dev-server 的before 方法调用webpack-api-mocker
    13         // path.resolve('./mocker/index.js') 中的'./mocker/index.js'为mock文件的相对路径
    14         /***************以上只是个人的浅显理解罢了(有不同理解请交流)******************/
    15         before(app) {
    16             apiMocker(app, path.resolve('./mocker/index.js'), {
    17                 // 'GET /api/users/list': 'http://localhost:3000',
    18                 // 'GET /api/userinfo/:id': 'http://localhost:3000',
    19             })
    20         }
    21     },
    22     output: { //配置文件输出路径
    23         filename: '[name].bundle.js',
    24         path: path.resolve(__dirname, 'dist')
    25     },
    26     plugins: [ //利用模板文件生成.html
    27         new HtmlWebpackPlugin({
    28             title: 'webpack+react',
    29             template: "./src/entry.ejs",
    30             filename: "./index.html",
    31         }),
    32     ]
    33 };

    话不多说直接上‘./mocker/index.js’文件

     1 module.exports = {
     2     [`GET /api/user`]: (req, res) => {
     3         console.log('---->', req.params);
     4         return res.json({
     5             id: 1,
     6             username: 'kenny',
     7             sex: 6
     8         });
     9     }
    10 }

    附录1.

      webpack.config.js中的entry.ejs文件

      

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 
     4 <head>
     5     <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
     6     <!--看这里,看这里,请看我这里-->
     7     <title>
     8         <%= htmlWebpackPlugin.options.title %>
     9     </title>
    10     <!-- 如果不这这样写 html-webpack-plugin 中的title是不生效的哦-->
    11     <link rel="stylesheet" href="/favicon.png" type="text/css" />
    12 </head>
    13 
    14 <body>
    15     <!-- <div id="root"></div> -->
    16     Visit :/mocker/index.js to customize the API Try it?
    17     <hr>
    18     <div>name:
    19         <span id="name"></span>
    20     </div>
    21     <div>age:
    22         <span id="age"></span>
    23     </div>
    24 </body>
    25 
    26 </html>

      webpack.config.js 配置文件中的 entry下app对应值的index.js文件

     1 fetch('/api/user', {
     2         'Accept': 'application/json',
     3         'Content-Type': 'application/x-www-form-urlencoded',
     4     })
     5     .then((response) => response.json())
     6     .then(data => {
     7         console.log('data:', data);
     8         document.getElementById('name').innerHTML = data.username;
     9         document.getElementById('age').innerHTML = data.sex;
    10     })

    OK!接下来npm start 或者 yarn install 运行下试试吧。

    效果图如下:

    思维重构:以上方式多个mock文件时不就需要改动webpack.config.js文件?这种事情我是绝不允许的。各位看客请看:

      解决方法:编写webpack.mocker.js文件为所有mock文件的总成,启动时自动包装mock(话不多说直接上代码)

    1 const mock = {};
    2 
    3 require('fs').readdirSync(require('path').join(__dirname + '/mocker')).forEach(function (file) {
    4     Object.assign(mock, require('./mocker/' + file))
    5 });
    6 module.exports = mock;
  • 相关阅读:
    CND库(Bootstrap 、React、Vue、Angular.js、JQuery)
    使用线性渐变实现滚动进度条
    设置鼠标光标样式
    百度地图API部分功能
    网页的三种布局(固定布局,流式布局,弹性布局)
    这一次带你彻底了解远程Cookie操作
    js获取各种高度和宽度
    点击按钮,回到页面顶部的5种写法
    Chrome默认字体大小
    CSS Grid 网格布局
  • 原文地址:https://www.cnblogs.com/xiqinfanqie/p/8972258.html
Copyright © 2020-2023  润新知