使用webpack3.0配置webpack-dev-server教程


Posted in Javascript onMay 29, 2018

最近正在研究webpack,听说webpack可以自己搭建一个小型的服务器(使用过vue-cli的朋友应该都见识到过),所以迫不及待的想要尝试一下。不过,在实际操作中发现,用webpack搭建服务器仍有不少坑,一方面是由于自己对文档的不熟悉,不了解webpack-dev-server的运作模式;另一方面,在翻阅了不少博客和文章后,发现不少配置实际上都跑不起来(有可能是版本的原因,也有可能是我自己配置的原因)。所以我打算用webpack3.0把dev-server跑起来给大家演示一遍,顺便把一些配置和原理给大家讲清楚,这样就省的绕弯路了。

这里我就默认大家都已经安装了webpack以及自己需要使用的loader和plugins,由于webpack-dev-server是个独立的npm包,所以我们需要在npm下安装它: 

npm install webpack-dev-server --save-dev

之后我们就可以在webpack.config.js中进行配置:

const path = require("path");
module.exports = {
   entyr:{
      ....... //设置入口文件
   },
   output:{
      ....... //设置出口文件
   },
   module:{
      ....... //配置loader,注意使用rules而不是loaders
   },
   plugins:[
      ....... //注意是数组
   ],
   devServer:{
      //我们在这里对webpack-dev-server进行配置
   }        
}

devServer中常用的配置对象属性如下:

1. contentBase:"./" // 本地服务器在哪个目录搭建页面,一般我们在当前目录即可;

2. historyApiFallback:true // 当我们搭建spa应用时非常有用,它使用的是HTML5 History Api,任意的跳转或404响应可以指向 index.html页面;

3. inline:true // 用来支持dev-server自动刷新的配置,webpack有两种模式支持自动刷新,一种是iframe模式,一种是inline模式;使用iframe模式是不需要在devServer进行配置的,只需使用特定的URL格式访问即可;不过我们一般还是常用inline模式,在devServer中对inline设置为true后,当我们启动webpack-dev-server时仍要需要配置inline才能生效,这一点我们之后再说;

4. hot:true // 启动webpack热模块替换特性,这里也是坑最多的地方,不少博客都将hot设置了true,我们姑且也设置为true,之后再看;

5. port:端口号(默认8080) // 这就不用我多说了吧;

事实上大概常用的配置也就这样,为了方便,我们在packjson中对webpack-dev-server的的启动进行一下设置:

"scripts": {
  ......
  ......
  "start":"webpack-dev-server --inline"
 },

别忘了在devServer中设置inline:true后这里也要设置一下!

这时我们打包后再运行服务器后应该发现index.html页面已经展示了,打包好后的js文件虽然出现在了src上,但并没有显示,打开控制台会发现如下报错:

使用webpack3.0配置webpack-dev-server教程

控制台显示:Hot Module Replacement is disabled;

奇怪?我们之前不是在devServer中设置了hot为true了吗?事实上,虽然不知道为什么,但是目前来说hot这个属性已经没有用了,使用热模块的话我们需要用到一个叫webpack.HotModuleReplacementPlugin的插件。所以我们的webpack.config.js需要加上这些:

const path = require("path");
const webpack = requier ("webpack");

module.exports = {
   entyr:{
      ....... //设置入口文件
   },
   output:{
      ....... //设置出口文件
   },
   module:{
      ....... //配置loader,注意使用rules而不是loaders
   },
   plugins:[
     new webpack.HotModuleReplacementPlugin()
      ....... //注意是数组
   ],
   devServer:{
     contentBase: "./", 
   historyApiFallback:true,
   inline:true,
   hot:true
   }        
}

这时我们再在bash上运行npm run start后发现服务器就搭建完成了!

使用webpack3.0配置webpack-dev-server教程

另外,还有一点值得注意的就是,webpack-dev-server所使用的bundle.js文件并不是webpack.config.js中output打包生成的bundle.js,而是使用webpack-dev-server自己打包生成的,这个文件不存在与output或其他路径中,而是存到了内存中,事实上webpack-dev-server所使用的那个bundle.js我们是看不到的!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
ajax处理php返回json数据的实例代码
Jan 24 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
Apr 01 Javascript
JQuery下拉框应用示例介绍
Apr 23 Javascript
自写的jQuery异步加载数据添加事件
May 15 Javascript
jQuery实现购物车计算价格功能的方法
Mar 25 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
Mar 26 Javascript
详解JavaScript的while循环的使用
Jun 03 Javascript
JavaScript中apply方法的应用技巧小结
Sep 29 Javascript
javascript 中iframe高度自适应(同域)实例详解
May 16 Javascript
VUE路由动态加载实例代码讲解
Aug 26 Javascript
vue cli3适配所有端方案的实现
Apr 13 Javascript
前端vue如何使用高德地图
Nov 05 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
May 29 #Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
May 29 #Javascript
Vue 全局loading组件实例详解
May 29 #Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 #Javascript
详解vue-cli项目中怎么使用mock数据
May 29 #Javascript
js统计页面上每个标签的数量实例代码
May 29 #Javascript
浅谈React的最大亮点之虚拟DOM
May 29 #Javascript
You might like
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
php URL跳转代码 减少外链
2011/06/25 PHP
php把session写入数据库示例
2014/02/26 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
2017/04/04 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
js中对象和面向对象与Json介绍
2019/01/21 Javascript
layui下拉列表select实现可输入查找的方法
2019/09/28 Javascript
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
2018/11/29 Python
分析经典Python开发工程师面试题
2019/04/08 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
Python爬取梨视频的示例
2021/01/29 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
PHP面试题及答案二
2015/05/23 面试题
自动化专业本科毕业生求职信
2013/10/20 职场文书
区域销售经理职责
2013/12/22 职场文书
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
个人租房协议书样本
2014/10/01 职场文书
学习群众路线的心得体会
2014/11/05 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python