走近webpack(1)–多入口及devServer的使用

上一篇文章留下了一些问题,如果你没看过上一篇文章,可以在我的博客里查找,或者直接从这篇文章开始也是没问题的。这是上一篇文章中使用但是没有详细讲解的代码片段。现在我们来一一做一个了解。entry:配

大家好,又见面了,我是你们的朋友全栈君。

  上一篇文章留下了一些问题,如果你没看过上一篇文章,可以在我的博客里查找,或者直接从这篇文章开始也是没问题的。 

const path = require('path');
module.exports={
    entry:{
        entry:'./src/entry.js'
    },
    output:{
        path:path.resolve(__dirname,'dist'),
/*上面的代码中还有path以及__dirname的意思就是指获取到当前项目的绝对路径,涉及到了node.js的相关知识,这里不做过多的解释,有兴趣的小伙伴可以自己去找一下资料。*/
        filename:'[name].js'
/*这里name的意思就是指获取入口文件的名称用来作为出口文件的名称,这样你就不用有几个入口就写几个出口名称啦*/
    },
    module:{},
    plugins:[],
    devServer:{}
}

  这是上一篇文章中使用但是没有详细讲解的代码片段。现在我们来一一做一个了解。

  entry:配置入口文件,也就是你想要打包的文件路径。可以是单一的,也可以是多入口文件。下面会详细的讲解。‘

  output:配置出口文件,也就是你想要在那个文件夹下面生成打包后的文件。同样的,既然入口可以是多文件,那么出口也可以是多出口的。

  module:模块配置,主要用于一些loader的使用,用于转换编译less,sass,图片等文件。

  plugins:配置插件,如果想要更多的功能满足项目的需求,那么你需要使用到插件。

  devServer:配置开发服务功能,后面会更详细的介绍。

那么简单配置介绍完了,下面我们一起看一下多入口以及多出口文件是如何应用的

  首先我们在dist目录下的index.html做一下简单的修改,我们引入另外一个名称为entry2.js的文件,并且把body中的代码修改成下面的这个样子。

<div id="title"></div>
<div id="name"></div>
<script src="./entry1.js"></script>
<script src="./entry2.js"></script>

  然后,我们在src目录下新建一个entry2.js,里面写上这样的代码。

document.getElementById('name').innerHTML="我是入口2的文件哦,看我打包成功了没?";

  第三步,在webpack.config.js中entry的配置项下增加一个入口链接,

 entry:{
        entry:'./src/entry.js',
        entry2:'./src/entry2.js',
        //这里我们又引入了一个入口文件
    }

  OK,至此我们的项目就修改完成,试一下在命令行中输入npm run build之后的结果吧。

  此时我们的目录结构看起来是这样的:

<span role="heading" aria-level="2">走近webpack(1)--多入口及devServer的使用

  在浏览器中打开index.html,会发现出现了两句话。那么就说明打包成功咯。

至此,你已经学会了入口出口,以及多入口多出口文件的配置。接下来我们来学一下devServer能做些什么,要怎么做。

  首先我们来安装一下webpack-dev-server,

  运行下面的命令,等待完成就可以了,完成后你会看到package.json中devDependencies项下面多了一个webpack-dev-server及其相应的版本号。

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

  那么,webpack-dev-server究竟是用来做什么的呢?它主要是启动了一个使用express的http服务器,用来伺服资源文件。

  OK,安装完成之后,我们需要在webpack.config.js的devServer选项中写几行简单的代码:

/*设置基本目录结构,也就是你想要使用服务的目录地址*/
contentBase:path.resolve(__dirname,'dist'),
/*服务器的IP地址,可以使用IP也可以使用localhost*/
host:'localhost',
/*服务端压缩是否开启,目前开不开都行,想关你就关*/
compress:true,
/*配置服务端口号,建议别用80,很容易被占用,你要是非要用也是可以的。*/
port:9090

  然后,在package.js中的scripts选项中再配置一个命令脚本,它看来应该是这样子滴:

<span role="heading" aria-level="2">走近webpack(1)--多入口及devServer的使用

  好了,现在该写的代码都写完了,咱们来看看效果。

  在命令行中输入npm run server,唉?!有趣的事情发生了,竟然报错了。错误说让你安装webpack-cli,行吧,那么咱们再安装一下webpack-cli。

npm install webpack-cli -D

  安装完webpack-cli,我们兴致勃勃地去npm run server,发现又TM错了,咋个回事。

  先别急,我们来看一下报错信息:

<span role="heading" aria-level="2">走近webpack(1)--多入口及devServer的使用

  不想看的小伙伴可以不看,这都什么啊!在你安装完webpack-cli后,会提示你一些安装包(webpack-cli,webpack-dev-server等)需要webpack版本在4.0以上,如果你不当回事继续npm run server,就会报错了。回头看一下发现咱们的webpack版本是3.6.0。有码为证,确实是。

  <span role="heading" aria-level="2">走近webpack(1)--多入口及devServer的使用

  既然是这样那就升级一下webpack版本吧。咱们直接在上面的代码上修改,当前最新版本的webpack是4.1.1。咱们就用最新的!改好了之后是这样滴!

<span role="heading" aria-level="2">走近webpack(1)--多入口及devServer的使用

  咱们再npm install重新安装一下。

  安装完成,咱们再!我保证最后一次!npm run server一下下。

<span role="heading" aria-level="2">走近webpack(1)--多入口及devServer的使用

  我想这样子应该是成功了。咱们打开浏览器输入http://localhost:9090/看一下,呦呵!出来了。

  看起来好像不错的样子,我们在src下的随便一个entry里面修改两句代码,发现已经可以热更新咯。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124440.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 安卓用的文件系统类型是什么_安卓data区文件系统

    安卓用的文件系统类型是什么_安卓data区文件系统android系统启动过程中有两个很重要的文件,init.c和init.rc,这两个文件具体重要的在哪里,这里不再累赘,网上资料一大把。不过通过这两个文件,我们可以很清楚的看到比如dev等目录属于哪种文件类型,了解之后就可以去使用了。下面关于android文件系统类型进行介绍。   在init初始化过程中,Android分别挂载了tmpfs,devpts,proc,sysfs4类文

    2022年9月17日
    2
  • 美女登场「建议收藏」

    美女登场「建议收藏」不怕大家笑话,我大学毕业时,还是个处长,所谓处长就是没有经过女人滋润的那种,我想大家都知道我是什么意思的。其实,上大学的时候我还是有些女人缘的,毕竟在班上我的学习成绩还是走在了同学们的前列,这是一笔不小的资本。你不知道,只要到了考试前一个月左右,我是很跑火的,我们班上那些天天浸泡在女孩子堆的家伙就要开始巴结我,请我吃饭,因为他们要拿到毕业证,还是需要过我这关的,考试的时候他们好抄袭我的,我要是给他

    2022年9月16日
    5
  • jquery tmpl遍历

    jquery tmpl遍历最近,发现大家喜欢用模板渲染一些DOM,而且常常用模板嵌套一些逻辑,看了大家用jquerytmpl较多,遇到的问题大同小异。为了避免问题重复发生,现在就个人用过的一些常用功能,作下具体介绍,主要针对遍历。其它的大家可自行看看网上教程,推荐一个:jqueryTmpl,希望对大家有所帮助1.普通数组对象的遍历,关键词{{eachArray}}、$value、$index数据格式:varperso

    2022年6月15日
    34
  • SAP WebIDE里OData service catalog的实现原理「建议收藏」

    SAP WebIDE里OData service catalog的实现原理「建议收藏」我们在SAPWebIDE里创建UI5应用时,可以从Servicecatalog里选择需要的OData服务,如下图所示:这个ag3-backend是什么意思?是我在SAPCloudPlatform的Destination标签页里维护的一个Destination:这个destination指向了一个OnpremiseABAPNetweaver系统,AG3,通过SAPCloud…

    2022年10月18日
    3
  • 第七章,activiti个人任务分配,动态指定和监听器指定任务委派人「建议收藏」

    第七章,activiti个人任务分配,动态指定和监听器指定任务委派人「建议收藏」第七章,activiti个人任务分配,动态指定和监听器指定任务委派人

    2022年4月23日
    40
  • idea连接mysql数据库报java.lang.RuntimeException: com.mysql.cj.exceptions.InvalidConnectionAttributeExcepti

    idea连接mysql数据库报java.lang.RuntimeException: com.mysql.cj.exceptions.InvalidConnectionAttributeExcepti出错场景:使用idea连接mysql(5.2版本)报错:java.lang.RuntimeException:com.mysql.cj.exceptions.InvalidConnectionAttributeException:Theservertimezonevalue’Öйú±ê׼ʱ¼ä’isunrecognizedorrepresentsmoreth…

    2022年7月24日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号