Webpack的一些知识(二)

HMR

模块热替换是指在应用运行中,替换、添加、删除模块,而无需重新刷新整个页面

  • 主要靠webpack-dev-serve这个插件创建两个服务:提供静态资源的服务(express)和Socket服务

  • express服务主要负责直接提供静态资源的服务(打包后的资源直接被浏览器请求和解析)

Socket是一个长连接的服务

  • 能够实现建立后可以全双工的通信

  • 当服务器监听到对应的模块发生变化时,会生成.json文件和.js文件

  • 通过长连接,可以直接将这两个文件主动发送给客户端

  • 浏览器拿到两个新的文件后,通过HMR runtime机制,加载两个文件,并针对修改的模块进行更新

Webpack浏览器兼容

我们要调兼容性,现在有很多工具,可以帮我们做这些事,比如说postcss、autoprefixer、babel等,但有时我们不一定要兼容市场上全部的浏览器,因为如果对于兼容性需求不高,但性能要求高,兼容全部浏览器会导致代码太多,包太大,体验降低。所以我们需要告诉这些工具我们需要兼容到什么程度。

Browserslist这个工具通过查询caniuse这个网站上面的不同浏览器市场占比来告诉上面那些工具我们的代码需要兼容浏览器到什么程度。

例:设置>1%,last verson 2,no dead,表示css、js要兼容市场占有率大于1%的浏览器,最后两个版本,2年内有更新

编写:

在package.json里,

browserslist:[
    >1%,
    last verson 2,
    not dead
]

或创建 .browserslistrc文件编写

Babel到底是什么?

Babel用于将ES6语法转换为向后兼容版本的JavaScript,它是一个工具链,而不是一个工具,因为它采取了微内核的一个架构,就是说他只实现了核心功能,用户需要更多的功能,再自行添加或编写。

JavaScript代码解析流程:js代码->AST抽象语法树->字节码文件->js引擎执行

从一种源代码到另一种源代码是编译器的工作,事实上我们可以将babel看做是一个编译器。

Babel也拥有编译器的工作流程:

解析

转换

代码生成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值