首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Web 开发中的利器 - Webpack(4)Webpack-dev-server 配置

Web 开发中的利器 - Webpack(4)Webpack-dev-server 配置

Webpack-dev-server 配置Webpack-dev-serve 是 NodeJS 下的小型 Express 服务器,我们可以使用它来测试 webpack 所生成的文件。同时它通过                websocket 与服务器建立通信,支持对模块的代码监控,从而在文件变动时,动态的编译程序并自动刷新页面。
安装 webpack-dev-server
$ npm install webpack-dev-server --save-dev
webpack-dev-serve 的刷新方式
Iframe mode
Iframe 的形式并不需要修改配置文件。只需要在访问时调用  >                它的特点是
  • 无需更改配置文件
  • 在应用顶部会显示相关信息
  • 应用本身的 URL 变化,并不会影响地址栏的内容
Inline mode
Inline 的形式,是将部分 web-dev-server 的客户端代码,嵌入到 webpack 模块当中。支持命令行(--inline)或者配置文件(devServer:                { inline: true })。
访问时调用  > 的特点是
  • 支持配置文件和命令行
  • 状态信息会显示在浏览器控制台中
  • 应用本身的 URL 变化,会影响浏览器地址栏的内容
配置 webpack-dev-server
清单 13. 配置                    webpack-dev-server
1
2
3
4
5
6
7
8
9
10
module.exports = {
....
devServer: {
historyApiFallback: true,
hot: true,
inline: true,
progress: true,
},
...
}




然后再 package.json 里面配置一下运行的命令, npm 支持自定义一些命令
清单 14.                package.json
1
2
3
"scripts": {
    "start": "webpack-dev-server --hot --inline --host 0.0.0.0 --port <port>"
},




在命令行运行如下命令
1
$ npm start




打开浏览器,访问 http://localhost:<port>
设置 proxy server
通过 http-proxy-middleware 组件,将请求转发到其他第三方服务器上。这样做的好处就是,让前后端并行的开发而不相互影响。例如
清单 15. 设置 proxy                server
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
proxy: {
'/api': {
    target: 'https://other-server.example.com',
    secure: false
}
}

// In webpack.config.js
{
devServer: {
        proxy: {
            '/api': {
                target: 'https://other-server.example.com',
                secure: false
         }
    }
    }
}

// Multiple entry
proxy: [
{
        context: [
            '/api-v1/**',
            '/api-v2/**'
        ],
        target:
            'https://other-server.example.com',
            secure: false
}
]




在实际的应用中,有时候我们只是希望将部分请求(例如 web service 请求)发送到 proxy 上,而对于其他的文件请求,并不希望将其发送到                proxy server 上。此时,需要通过正确的设置 bypass 参数来解决,关于 bypass 方法的解释,请参考  

清单 16. Bypass                    function
1
2
3
4
5
6
7
8
9
10
11
12
13
14
proxy: {
'/some/path': {
target: 'https://other-server.example.com',
secure: false,
bypass: function(req, res, proxyOptions) {

    if (req.headers.accept.indexOf('html') !== -1)
{
console.log('Skipping proxy for browser request.');

    return '/index.html';
}
}
}

返回列表