今天学习了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. Jmeter接口压力测试

    SOAP百科:Soap简单对象访问协议,是交换数据的一种协议规范,是一种轻量的.简单的.基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息.webServi ...

  2. cordova原理与插件制作

    ---恢复内容开始--- cordova插件打包教程: http://www.jianshu.com/p/96855e009e95 www.itnose.net/detail/6245407.html ...

  3. Linux云自动化运维第二课

    一.Linux系统结构 1.Linux是一个倒树结构.Linux中所有的东西都是文件.这些文件都在系统的顶级目录中"/","/"是根目录."/&quo ...

  4. 隐性URL与显性URL区别与SEO考虑

    隐性URL与显性URL经常在实现页面跳转的时候用到,这两种方式有什么区别,各自对SEO有什么影响?看一下阿里云的官方文档解释: 显性URL转发: 例如: http://b.com/ 指向 http:/ ...

  5. python 解析Excel

    python 解析Excel 公司背景:好吧LZ太懒了.略... 原由起因:公司老板发话要导出公司数据库中符合条件的数据,源数据有400万,符合条件的大概有70万左右吧. 最终目的:符合条件的数据并生 ...

  6. Hibernate原理、配置及单表操作

    一.Hibernate的配置文档 其中:hbm2ddl.auto中的create表示每次修改数据的时候都会删除原有的表,生成新的表结构,原有的数据不再存在:update表示在原有数据的基础上进行更新, ...

  7. Java并发编程:Java线程池

    转载自:http://www.cnblogs.com/dolphin0520/p/3932921.html 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题 ...

  8. 云计算之路-阿里云上:RDS数据库连接数过万引发故障,主备库切换后恢复正常

    非常抱歉!今天 12:03-12:52 ,由于数据库连接数异常突增超过1万,达到了阿里云RDS的最大连接数限制,影响了全站的正常访问.由此给您带来麻烦,请您谅解. 在发现数据库连接数突增的问题后,我们 ...

  9. HTML基础学习(一)—HTML

    一.HTML的介绍      HTML(HyperText Markup Language)超文本标记语言,不是一种编程语言,而是一种描述性的标记语言,用于描述超文本的内容的显示,比如字体颜色或者大小 ...

  10. MySQL存储过程--带参数报错1064

    DELIMITER $$ USE `student`$$ DROP PROCEDURE IF EXISTS `sync_student`$$ CREATE DEFINER=`student`@`%` ...