杂谈

现在技术圈越来越流行一个概念,那就是所谓的 一次开发,多端运行, 基于此出现了大量的库,比如Taro、uniapp,我们利用这些库可以将编写的应用程序发布到很多终端,从而实现所谓的“多端运行”。这个目标是很伟大的,因为这样可以大大解放生产力,不需要为每一个终端配备一个开发,而是“一把梭”就可以了

bqb

我自己实际使用过Taro开发过小程序,整体体验下来还是不错的,打包出来的小程序性能与原生开发相差无几,但对于某些终端下的个别api支持存在一些问题,当然这也是场景的复杂性所必然会出现的,但我相信随着技术迭代,这些都不是问题,并且 大一统 肯定是未来技术发展的趋势,因为任何可以解放生产力的工具都会成为主流,这是社会发展的必然趋势

说了这么多,说回本文的主题,在webpack里其实也提供类似 一次开发,多端运行 的功能,那便是 target,通过它我们可以将编写的程序构建成适配 目标环境 的产物,并且使用方式十分简单,下面进入正题吧!

bqb

详解构建目标(target)

在webpack里,target指定构建产物所要运行的 环境,从而在构建过程中,会启用不同的 插件 以适配不同的环境

target的默认值为 browserslist,如果没有找到browserslist的配置,则默认为 web,target的可选值如下:

需要注意的是如果传递多个目标,如target: ['web', 'es5'],那么将使用共同的特性子集,但并不是所有的target都可以进行混合,比如 nodeweb 就不能一起使用,因为webpack暂时不支持 universal 的target

如果webpack里的预设target都不符合需求,可以将target设置为 false,这将告诉webpack不使用任何插件,同时可以使用自己想用的插件来满足特定场景的需求

结语

“一次开发,多端运行”的概念越来越火,大一统的趋势已经不断显现,我相信未来肯定会有一种技术来兼容所有的终端,彻底解放生产力,但真到了那一天,对于我们程序员来说,是好还是坏,需要画一个大大的问号了,over!