babel-import-plugin:

目录

介绍:

babel-plugin-import按需引入Echarts:

babel-plugin-component 和 babel-plugin-import的区别:


介绍:

        按需加载是以组件为基本单位产出 js、css、less 文件,借助插件或者部分引入的写法,使得项目代码或 babel 编译后的代码中只包含使用到的组件的 js、css、less 等。

        若是采用手动引入需要使用到的组件以及其对应的样式文件,那么在 webpack 构件时组件库中其他未被引入的文件不会被打包。

import Button from 'lib/button';
import 'lib/lib/button/style';

        若是自动按需引入

npm i babel-plugin-import -D
 
module.exports = {
  plugins: [
    ['import', {
      libraryName,
      libraryDirectory: 'es',
      style: true
    }, libraryName]
  ]
};
 
 
import { Button } from libraryName;


        组件其实就是对一堆 js、css 以及 less 等文件的总称,自动引入的本质是将引入组件的写法通过插件来转换成手动引入组件对应的代码以及样式文件的写法。核心原理依然是对源码的 import 导入写法进行转换——词法语法分析,AST转换,代码生成。

        该插件主要参数:

 "libraryName": "", // 组件库名称,对应 import 语法中的包名
  "libraryDirectory": "lib", // 编译之后各个组件单元所在文件夹名称
  "style": true, // 是否引入组件对应样式文件,也可以传入 less 来引入 less 文件
  "styleLibraryDirectory": "", // 编译之后引入的组件样式文件所在文件夹名称
  "camel2DashComponentName": false, // 是否将驼峰命名的导入变量转换为对应的横线连接命名的文件名
  "customName": (name, file) => { return `/lib/${name}` }, // 自定义编译之后引入的组件名
  "customStyleName": (name, file) => { return `/lib/css/${name}` }, // 自定义编译之后引入样式文件的名称

        插件的钩子函数和整体逻辑详见:babel-plugin-import 的组件按需加载原理_薛定谔的猫96的博客-CSDN博客

babel-plugin-import按需引入Echarts:

👉前端性能优化-按需引入Echarts组件_echarts 按需引入未生效_Rainy_X的博客-CSDN博客

babel-plugin-component 和 babel-plugin-import的区别:


        1、babel-plugin-import 是 ant-design 团队出的,可以说其他绝大部分按需引入的插件都是在此基础上魔改的。
        2、babel-plugin-component 是饿了么团队在前者的基础上做了一些改动。主要是因为 fork 的时间太早(2016 年 4 月),饿了么修复了一些早期 bug 却并没有 PR 到 ant-design 的仓库里去,但后来 ant-design 也有修复;再就是后来 ant-design 的有一些配置项的变动、而饿了么团队却没有跟进合并。所以二者还是有一些差异的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
babel-import-plugin是一个用于实现组件库/工具库的按需加载的插件。它类似于babel-plugin-transform-imports和babel-plugin-import。它可以自动按需引入需要的组件,从而减少打包文件的大小。不过,实际生产中,建议使用babel-plugin-transform-imports和babel-plugin-import这两个插件中的一个。 使用babel-plugin-import可以实现自动按需引入,具体配置如下: 1. 首先安装babel-plugin-import:npm i babel-plugin-import -D 2. 在babel配置文件中添加以下配置: ```javascript module.exports = { plugins: [ ['import', { libraryName, libraryDirectory: 'es', style: true }, libraryName] ] }; ``` 这里的libraryName是你需要按需引入的组件库的名称。 通过以上配置,你就可以使用import语句来按需引入需要的组件了,例如: ```javascript import { Button } from libraryName; ``` 这样就可以只引入需要的Button组件,而不是整个组件库。 同时,现在的babel也提供了一些API来简化babel-plugin-import的代码或逻辑,例如path.replaceWithMultiple。不过,源码中的一些看似多余的逻辑可能是为了满足特定的场景而保留的。所以,在使用这些API时需要根据实际情况进行判断和选择。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [babel-plugin-my-import:像babel-plugin-transform-imports这样的babel插件](https://download.csdn.net/download/weixin_42166918/18495983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [babel-import-plugin:](https://blog.csdn.net/weixin_48123820/article/details/130476061)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [你不容错过的babel-plugin-import史上最全源码详解!](https://blog.csdn.net/a958014226/article/details/115356326)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值