走近webpack(5)–devtool及babel的使用

这一章咱们来说一下如何使用babel以及如何用webpack调试代码。这是基础篇的最后一章,这些文章只是罗列的给大家讲解了在一些场景中webpack怎样使用,这章结束后会给大家讲解一下如何在我们实际的

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

  这一章咱们来说一下如何使用babel以及如何用webpack调试代码。这是基础篇的最后一章,这些文章只是罗列的给大家讲解了在一些场景中webpack怎样使用,这章结束后会给大家讲解一下如何在我们实际的开发及上线的工作环境中自如的使用webpack。

  既然我们要使用babel,那babel是什么呢?一句话,babel能让你使用当前浏览器还暂时或者无法支持的“js”,比如es6,es7,JSX等。

  那么来安装一下吧:

npm install --save-dev babel-core babel-loader babel-preset-env babel-preset-react
/*babel-core是babel的核心功能包,babel-loader就不用说了,转换目标代码的babel包,babel-preset-env也就是转换es6语法的包,babel-preset-react就是转换JSX的包*/

  安装完成之后,我们需要在loader中配置一下:

{
    test:/\.(jsx|js)$/,
    use:{
        loader:'babel-loader',
        options:{
            presets:[
                "env","react"
            ]
        }
    },
    exclude:/node_modules/
}

  让我们简单修改一下src/entry.js中的代码,就改成这样吧:

let name = "Hello zaking"
document.getElementById('title').innerHTML=name;

  npm run server,发现完全没问题。

  那么做一个小小的修改,我们在根目录下新建一个.babelrc文件,其实babel的配置项很多,为了让config.js看起来更清爽,咱们有关于babel的配置都写在这里(只是目前咱们没用到多少)。

  .babelrc的内容这样写:

{
  "presets":["react","env"]
}

  然后修改一下config.js中的babel-loader配置:

{
     test:/\.(jsx|js)$/,
     use:{
          loader:'babel-loader'
      },
       exclude:/node_modules/
}
/*也就是删除了options配置项*/

  修改完成之后,我们再来npm run server试一下。没问题!

 

  那么打包完成之后我们开发的时候如何调试代码呢?我们可以通过配置devtool生成map,来使调试变得更简单。map其实就是源文件和打包后生成文件的一种映射。

  在配置devtool时,webpack给我们提供了四种选项。

  • source-map:在一个单独文件中产生一个完整且功能完全的文件。这个文件具有最好的source map,但是它会减慢打包速度;
  • cheap-module-source-map:在一个单独的文件中产生一个不带列映射的map,不带列映射提高了打包速度,但是也使得浏览器开发者工具只能对应到具体的行,不能对应到具体的列(符号),会对调试造成不便。
  •  eval-source-map:使用eval打包源文件模块,在同一个文件中生产干净的完整版的sourcemap,但是对打包后输出的JS文件的执行具有性能和安全的隐患。在开发阶段这是一个非常好的选项,在生产阶段则一定要不开启这个选项。
  • cheap-module-eval-source-map:这是在打包文件时最快的生产source map的方法,生产的 Source map 会和打包后的JavaScript文件同行显示,没有影射列,和eval-source-map选项具有相似的缺点。

  四种打包模式,有上到下打包速度越来越快,不过同时也具有越来越多的负面作用,较快的打包速度的后果就是对执行和调试有一定的影响。

  (更多配置信息可以查看webpack文档:https://doc.webpack-china.org/configuration/devtool/)

  个人意见是,如果大型项目可以使用source-map,如果是中小型项目使用eval-source-map就完全可以应对,需要强调说明的是,source map只适用于开发阶段,上线前记得修改这些调试设置。

  使用方法也非常简单,只要在webpack.config.js中加一个配置项就可以了:

  记住一个很必要的事情,就是如果你使用了uglifyjs-webpack-plugin,记得在该插件的配置中写入sourceMap:true字段。这样才可以正常的生成sourceMap,详情请查看https://github.com/webpack-contrib/uglifyjs-webpack-plugin

<span role="heading" aria-level="2">走近webpack(5)--devtool及babel的使用

    OK,至此,webpack的基本配置和使用方法就讲解完了。这个项目的相关demo已经上传到我的github。大家可以查阅学习。但是我还是建议大家一定要自己跟着教程多练习。不然是没什么实际效果的。

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

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

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


相关推荐

  • discuz-论坛搬家

    discuz-论坛搬家【番网科技】discuzx3.1论坛搬家、换空间教程discuz网站搬家方法步骤discuz论坛搬家换空间本来时间简单的事,但是问题在于各位站长搬家后出现各种各样的问题,于是本人屡试不爽的discuzx3.1搬家教程分享给大家,我搬家可能数十次,从未出过任何问题。一、备份网站数据。进入后台—站长—数据库—备份,备份成功以后,数据保存在data/backup_d1d…

    2022年7月25日
  • 《光棍节程序员闯关秀》闯关攻略

    《光棍节程序员闯关秀》闯关攻略https://1111.segmentfault.com《光棍节程序员闯关秀》     程序员们,欢迎来攻!!!在之前的基础上,重新整理了一遍,之前才闯到第8关,然而,昨天整理文章的时候,网站服务器崩了,所以,可遗憾了,还好今天,正常了,把第8关过了,呵呵,第九关,真的不想过了,就这样吧,至于SegmentFault的账号早就有了,还是蛮喜欢这个网站的。我发现所有的key可以都在变

    2022年7月17日
  • Django(32)自定义过滤器[通俗易懂]

    Django(32)自定义过滤器[通俗易懂]前言虽然DTL给我们内置了许多好用的过滤器。但是有些时候还是不能满足我们的需求。因此Django给我们提供了一个接口,可以让我们自定义过滤器,实现自己的需求。自定义过滤器首先在某个app中,创建

    2022年7月29日
  • 智能优化算法:灰狼优化算法-附代码

    智能优化算法:灰狼优化算法-附代码智能算法:灰狼优化算法-附代码摘要:受灰狼群体捕食行为的启发,Mirjalili等[1]于2014年提出了一种新型群体智能优化算法:灰狼优化算法。GWO通过模拟灰狼群体捕食行为,基于狼群群体协作的机制来达到优化的目的。GWO算法具有结构简单、需要调节的参数少,容易实现等特点,其中存在能够自适应调整的收敛因子以及信息反馈机制,能够在局部寻优与全局搜索之间实现平衡,因此在对问题的求解精度和收敛速度方面都有良好的性能。1.算法原理灰狼属于犬科动物,被认为是顶级的掠食者,它们处于生物

    2022年5月24日
  • 超全的英语短句汇集

    English900英语九百句常用职位英文译名超级短句成语集锦打开话匣子PC电脑词汇一百个绝佳句型李阳英语365句托福听力常用短语校园英语迷你惯用语洋话连篇至理名言English 900 英语九百句第一册一、 Greetings 问候语 1. hello! / hi! 你好! 2. good morning / afternoon / evening! 早晨(下午/晚上)好! 3. i

    2022年4月8日
  • pycharm下的调试功能[通俗易懂]

    pycharm下的调试功能[通俗易懂]pycharm下的调试功能

    2022年8月27日

发表回复

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

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