今天学习了dev-server这个配置,中间遇到疑惑,我写了contentBase是可以走通,可以再localhost:8080看到页面并且正确加载bundle.js的,

但是这个contentBase并不是必须的,不写按理说也可以实现显示页面并且加载js,但是我去掉后,可以编译成功,但是我这里就遇到问题了,一直提示找不到bundle.js。

我的目录设置如下:

其中index.html是我手动写的里面用script标签来引用bundle.js。

<script src="./js/bundle.js"></script>

这里的路径要根据index.html所在的位置来引用bundle.js所以要就加上js这个文件夹。

我的webpack.config.js配置如下:

/**
* Created by zxf on 2017/4/25/0025.
*/
const path=require('path');
var htmlPlugin=require('html-webpack-plugin');
module.exports={
entry:'./src/js/main.js',
output:{
filename:'js/bundle.js',
path:path.resolve(__dirname,"./dist")
},
module:{
rules:[
{
test:/\.css$/,
use:[
{loader:'style-loader'},
{loader:'css-loader'}
]}
]
},
devServer:{
inline:true
}
}

那么配置好上面的,运行webpack-dev-server后编译没有报错,但是打开localhost:8080,发现并没有自动显示index.html的内容,

而是显示根目录下的文件夹以及webpack配置文件,这个可以理解因为并没有显式的设置contentBase,我可以手动点击进入dist文件夹下,

进入后就会提示找不到bundle.js,因为我在html文件里面写了<script src="./js/bundle.js"></script>这里我认为是dev-server并没有去获取内存中的js,

而是一直在获取本地的bundle.js,不应该啊,dev-server是会在内存中生成js和html页面的,这是为什么呢?后来经过大神指点,明白了,

原来不指定contentBase的话dev-server的默认根目录是在webpack.config同一级的目录下,我在这个目录下并没有写index.html,而在dist/下写了index.html,

它就以这个本地我写的为准了,而内存中的html的路径还是在根目录下,解决方法是在根目录下新建一个index.html,里面引用js的路径不用改,但是这样很不方便啊,

如果是多页应用,不可能在根目录下建立那么多页面文件,这里有两个思路:一是必须写上contentBase参数,二是利用webpack-html-plugin这个插件它可以生成html文件到指定的目录下,这样就可以不用再根目录下建立页面文件了,直接在src下建立模板文件,

/**
* Created by zxf on 2017/4/25/0025.
*/
const path=require('path');
var htmlPlugin=require('html-webpack-plugin');
module.exports={
entry:'./src/js/main.js',
output:{
filename:'js/bundle.js',
path:path.resolve(__dirname,"./dist/")
},
module:{
rules:[
{
test:/\.css$/,
use:[
{loader:'style-loader'},
{loader:'css-loader'}
]}
]
},
plugins:[
new htmlPlugin({
filename:'index.html',
template:"./src/index.html"
}),
new htmlPlugin({
filename:'b.html',
template:"./src/b.html"
})],
devServer:{
inline:true
}
}

  有几个页面就写几个new htmlPlugin()配置,template参数写上模板的路径,这样也可以实现不写contentBase的情况下正确显示页面并且加载js

webpack中dev-server不写contentBase时如何设置可以显示页面并且加载js的更多相关文章

  1. webpack 4 & dev server

    webpack 4 & dev server proxy https://webpack.js.org/configuration/dev-server/#devserverproxy htt ...

  2. 关于asp.net中页面事件加载的先后顺序

    一.ASP.NET 母版页和内容页中的事件 母版页和内容页都可以包含控件的事件处理程序.对于控件而言,事件是在本地处理的,即内容页中的控件在内容页中引发事件,母版页中的控件在母版页中引发事件.控件事件 ...

  3. 完美解决Webpack多页面热加载缓慢问题【转载】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/localhost_1314/article ...

  4. HTML5中script的async属性异步加载JS

    HTML5中script的async属性异步加载JS     HTML4.01为script标签定义了5个属性: charset 可选.指定src引入代码的字符集,大多数浏览器忽略该值.defer 可 ...

  5. WebView加载页面,带链接的Img在页面第一次加载时无法显示的问题

    在做一个App的过程中,用到WebView来显示几个页面.在这个过程中发现有些页面的显示出现了异常:页面中的Img链接在页面第一次加载时无法正常显示图片,退出页面再次进入后可正常显示.开始以为是Web ...

  6. 【记录】VS2012新建MVC3/MVC4项目时,报:此模板尝试加载组件程序集“NuGet.VisualStudio.Interop...”

    最近电脑装了 VisualStudio "14" CTP,由于把其他版本的 VS 卸掉,由高到低版本安装,当时安装完 VisualStudio "14" CTP ...

  7. 动态加载JS过程中如何判断JS加载完成

    在正常的加载过程中,js文件的加载是同步的,也就是说在js加载的过程中,浏览器会阻塞接下来的内容的解析.这时候,动态加载便显得尤为重要了,由于它是异步加载,因此,它可以在后台自动下载,并不会妨碍其它内 ...

  8. 解决eclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题

    解决eclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题. 有时候是src/main/resources下面的,有时候是sr ...

  9. myeclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题

    解决myeclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题. 有时候是src/main/resources下面的,有时候是 ...

随机推荐

  1. AP模块发票过账标记为否检查方法

    根据发票编号,查找发票 : 发票过账标记,始终为否,创建会计科目提示如下: 

  2. webots自学笔记(六)实用控制器函数补充

    原创文章,来自"博客园,_阿龙clliu" http://www.cnblogs.com/clliu/,转载请注明原文章出处.       用Webots软件做机器人仿真时,可以编 ...

  3. 【iOS】7.4 定位服务->3.2 地图框架MapKit 功能2:路线规划(导航)

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...

  4. .NET Core开源组件:后台任务利器之Hangfire

    一.简述 Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在.net core的环境中,由Core自带的DI管理着生命周期,免去了在NF4.X环境中配置always ru ...

  5. jQuery对象长度size

    jQuery对象有两个方法获取其长度,一个是length属性,一个是调用size()方法,据说前者的效率比后者的高. 代码如下: var DQNRList=$("a[id^='DQNR']& ...

  6. 老李推荐:第6章7节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-注入按键事件实例

    老李推荐:第6章7节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-注入按键事件实例   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜 ...

  7. 实现一个自己的promise

    这是小弟的一篇开篇小作,如有不当之处,请各位道友批评指正.本文将探讨Promise的实现. 一.ES6中的Promise 1.简介 据说js很早就实现了Promise,我是不知道的,我第一次接触Pro ...

  8. Wpf学习之路……

    Wpf学习之路-- Wpf是 .net中一门做winform的技术,和传统的winform的区别在于: 1.         原来的winform就是拖控件,而wpf的控件都死自己拿标记语言(xaml ...

  9. JavaScript基础学习(四)—Object

    一.Object的基本操作 1.对象的创建      在JavaScript中,创建对象的方式有两种:构造函数和对象字面量.      (1)构造函数 var person = new Object( ...

  10. jmeter 使用jmeter 录制web脚本

    1.打开jmeter.鼠标右击工作台.添加HTTP代理服务器 2.设置端口号.目标控制器.分组 3.添加查看结果树 4.点击启动.确定完成 5.打开浏览器直接进行操作.就可以看到所录制的脚本信息