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


相关推荐

  • spring boot + Vue + iView前后端分离架构(Mac版) — (二)登录页面与国际化

    spring boot + Vue + iView前后端分离架构(Mac版) — (二)登录页面与国际化springboot+Vue+iView前后端分离架构(Mac版)–登录页面与国际化(二)[小景哥哥博客][http://www.jinglisen.top]接下来我们首先实现国际化,然后实现登录页面。一、实现国际化打开项目hep-admin-web工程,在src目录下创建一个local的目录,再在local目录下创建lang的文件夹,此文件夹用于存放国际化文件,国际化文件包…

    2022年6月11日
    34
  • printwriter用法_stylewriter使用教程

    printwriter用法_stylewriter使用教程OutPutStream可以被封装成PrintWriter,OutputStream比较底层一些,是以字节为单位传输的,而PrintWriter是以字符为单位输出,所以就会涉及到转码编码的问题,如果用PrintWriter发送char[]和byte[],在服务端收到的常常是有一些字符会失真.PrintWriter以字符为单位,支持汉字,OutPutStream则不行总结:处理

    2022年8月10日
    2
  • Web前端学习 | Ajax

    Web前端学习 | Ajaxajax其实是代替手工输入url向server申请资源的一个工具。XMLHttpRequest对象的onload回调函数是在异步请求加载完成后所执行的函数,当JavaScript监测到请求的数据全部传输完成后就会触发该函数。而open()函数设置异步请求的method、URL和同步方式等参数,执行open()后再执行send()函数才开始向服务器发送请求。<!DO…

    2022年9月4日
    2
  • mysql读写分离实现事务_Mysql读写分离后的事务ce「建议收藏」

    mysql读写分离实现事务_Mysql读写分离后的事务ce「建议收藏」1.概述很多人会有这样的疑问,mysql读写分离后,我的事务怎么处理呢。不是说mysql不支持跨库事务吗?那我引入mycat这个中间件后事务是否是安全的呢,它是怎么运作的呢。今天我们就来实验一下2.设置首先设置事务锁的过期时间是5innodb_lock_wait_timeout=5意思是前面有人已经锁定这一行准备更新了,而你现在又去更新这行,那你只能等,等5秒。前面的人还没进行事务提交,那…

    2022年5月2日
    148
  • GridBagLayout 以及 GridBagConstraints 用法「建议收藏」

    GridBagLayout 以及 GridBagConstraints 用法「建议收藏」GridBagLayout是一个灵活的布局管理器,部件如果想加入其中需借助GridBagConstraints,其中有若干个参数,解释如下:gridx/gridy:组件的横纵坐标gridwidth:组件所占列数,也是组件的宽度gridheight:组件所占行数,也是组件的高度fill:当组件在其格内而不能撑满其格时,通过fill的值来设定填充方式,有四个值

    2022年9月10日
    0
  • div css仿京东订单流程图样式代码

    效果展示 http://hovertree.com/texiao/css/25/本效果适合PC,也适合移动端手机扫描二维码查看效果:效果图:代码如下:转自:http://hovertre

    2021年12月26日
    38

发表回复

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

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