webpack4.29.x成神之路(十) webpack-dev-server下

栏目: JavaScript · 发布时间: 5年前

内容简介:上节:webpack-dev-server上上节目录如下:

目录

上节:webpack-dev-server上

上节目录如下:

webpack4.29.x成神之路(十) webpack-dev-server下

基本配置

之前devSerer的值是个空对象,用的都是默认配置,比如host:localhost, 端口:8080,这些都可以自定义

修改webpack.config.js:

// 省略
 devServer: {
    host: '0.0.0.0',
    port: 3306,
    hot: true
  },
// 省略

然后重新npm run dev, 这时既可以用localhost:3306,也可以用电脑ip:3306访问。

publicPath

自从使用devServer后,便不像之前那样,每次都访问打包后的bundles目录下的代码,但其实output目录并非不存在,而是在缓存中,只是没有写进磁盘,我们还是可以通过url访问到打包后的代码。

修改配置中output.filename属性

webpack.config.js:

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  output: {
    filename: '[name].[hash:8].js',
    path: resolve(__dirname, 'bundles')
  },

  // 开启devServer
  devServer: {
    host: '0.0.0.0',
    port: 3306,
    hot: true
  },

  module: {
    rules: [{
      test: /\.(gif|jpg|jpeg|png|svg)$/,
      use: ['url-loader']
    }, {
      test: /\.less$/,
      use: ['style-loader', 'css-loader', 'postcss-loader', 'less-loader']
    }]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './index.html'
    }),
    new CleanWebpackPlugin(),
    new webpack.HotModuleReplacementPlugin()
  ]
};

然后重新 npm run dev打开浏览器,应该和上节一样:

webpack4.29.x成神之路(十) webpack-dev-server下

这是输入网址:localhost:3306/main.js,应该能访问到打包后的main.js:

webpack4.29.x成神之路(十) webpack-dev-server下

ps: 为什么是main.js? 如果不急得了需要回顾下entry和output噢。

publicPath就是用来修改文件访问路径的,默认值是: '/'。

修改配置,webpack.config.js:

devServer: {
    host: '0.0.0.0',
    port: 3306,
    hot: true,
    publicPath: '/assets/'
  },

重新 npm run dev, 这时的访问路径就变成了localhost:3306/assets/main.js

HTML5 History API

当访问一个不存在路径比如:

webpack4.29.x成神之路(十) webpack-dev-server下

如果想让所有的404请求的重定向到index.html,就需要配置historyApiFallback

webpack.config.js:

// 省略
devServer: {
    host: '0.0.0.0',
    port: 3306,
    hot: true,
    // publicPath: '/assets/'
    historyApiFallback: true
  },
// 省略

重新 npm run dev, 然后随便访问个不存在的路径都会重定向到index.html

webpack4.29.x成神之路(十) webpack-dev-server下

还可以用正则做精确匹配,比如:

// 省略
devServer: {
    host: '0.0.0.0',
    port: 3306,
    hot: true,
    // publicPath: '/assets/'
    // historyApiFallback: true
    historyApiFallback: {
      rewrites: [
        { from: /^\/$/, to: '/views/landing.html' },  // 根路径/ => /views/landing.html
        { from: /^\/subpage/, to: '/views/subpage.html' },  // /subpage => /views/subpage.html
        { from: /./, to: '/views/404.html' }
      ]
    }
  },
// 省略

proxy处理跨域

利用devServer的proxy属性可轻松在开发阶段解决跨域问题

修改src/index.js:

// 请求接口
fetch('https://api-m.mtime.cn/Showtime/LocationMovies.api').then(res => {
  console.log('res :', res);
});

然后npm run dev,打开f12 应该会看到典型的跨域错误:

webpack4.29.x成神之路(十) webpack-dev-server下

修改配置,webpack.config.js:

// 省略

devServer: {
    host: '0.0.0.0',
    port: 3306,
    hot: true,
    // publicPath: '/assets/'
    historyApiFallback: true,
    proxy: {
      '/Showtime': {
        target: 'https://api-m.mtime.cn',
        changeOrigin: true
      }
    }
  },

// 省略

修改src/index.js:

fetch('/Showtime/LocationMovies.api').then(res => {
  console.log('res :', res);
});

重新npm run dev, 就能请求到数据咯

webpack4.29.x成神之路(十) webpack-dev-server下

proxy配置很多,还可以设置拦截器,比如:

// 省略
 devServer: {
    host: '0.0.0.0',
    port: 3306,
    hot: true,
    // publicPath: '/assets/'
    historyApiFallback: true,
    proxy: {
      '/Showtime': {
        target: 'https://api-m.mtime.cn',
        changeOrigin: true
      }
    },

    // 拦截器
    bypass: function (req, res, proxyOptions) {
      if (req.headers.accept.indexOf("html") !== -1) {
        console.log("Skipping proxy for browser request.");
        return "/index.html";
      }
    }
  },
// 省略

详细用法参考: https://github.com/chimurai/h...

下节:babel编译es6(待更新)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro Git

Pro Git

Scott Chacon / Apress / 2009-8-27 / USD 34.99

Git is the version control system developed by Linus Torvalds for Linux kernel development. It took the open source world by storm since its inception in 2005, and is used by small development shops a......一起来看看 《Pro Git》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具