走近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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于retinex理论改进的低照度图像增强算法

    基于retinex理论改进的低照度图像增强算法写本文的目的是记录自己学习过或做过的一些东西 深化理解 理清思路 便于回忆 本人处于学习阶段 欢迎指出不对的地方 本文算法参考文献 李勇 基于 Retinex 理论的低照度图像增强算法研究与实现 D 西安电子科技大学 2018 本文是本人按照作者发表的原文进行复现并稍加改动 在尽力的基础上由于本人水平有限 对作者一些想法的理解和结果的复现不一定正确 需要研究此算法的朋友 在看我文章的时候最好加入自己的判断 或者直接查看原文 欢迎各位指出我不对的地方 或者与我探讨交流 需要程序可评论 原文摘要图像作为信

    2025年6月24日
    5
  • CreateEvent方法详解

    CreateEvent方法详解HANDLECreateEvent(  LPSECURITY_ATTRIBUTESlpEventAttributes,//安全属性  BOOLbManualReset,//复位方式  BOOLbInitialState,//初始状态  LPCTSTRlpName//对象名称);调用示例:hEvent=CreateEvent(NULL,TRUE,…

    2022年7月12日
    24
  • Config ConnectionStrings

    Config ConnectionStrings<connectionStrings><addname=”MyschoolConnectionString”connectionString=”DataSource=.;InitialCatalog=MySchool1;uid=sa;pwd=123456″/></connectionStrings>stringcon…

    2022年5月11日
    107
  • 程序电脑VS2008 应用程序配置不正确,未能启动该应用程序。重新安装程序可以修复此问题。解决方法…

    程序电脑VS2008 应用程序配置不正确,未能启动该应用程序。重新安装程序可以修复此问题。解决方法…

    2021年8月24日
    57
  • 笔记本(无线网卡)配置虚拟机上网

    笔记本(无线网卡)配置虚拟机上网当我们安装了virtualbox或者VMware虚拟机,都会虚出一个虚拟网卡。如果我们使用的是网线上网,那么可以选择“网桥”的方式让虚拟机上网,这样可以保证虚拟机和主机之间互通,而且虚拟机也可以访问外网。这时,虚拟机可以使用dhcp也可以手工的方式指定ip。那么,如果笔记本使用的是无线网卡上网,那么就无法使用“网桥”的方式配置虚拟机上网了。这时,可以使用host-only的配置方式,同

    2022年5月19日
    44
  • js什么是匿名函数_js函数返回值

    js什么是匿名函数_js函数返回值js匿名函数的代码如下:(function(){ // 这里忽略jQuery 所有实现 })();半年前初次接触jQuery 的时候,我也像其他人一样很兴奋地想看看源码是什么样的。然而,在看到源码的第一眼,我就迷糊了。为什么只有一个匿名函数又没看到运行(当然是运行了…… ),就能有jQuery 这么个函数库了?于是,我抱着疑问来到CSDN 。结果相信现在很多人都很清楚了(因为在

    2022年9月27日
    3

发表回复

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

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