最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 业务组件库了解一下

    正文概述 掘金(是momo呀)   2020-12-27   716

    业务组件库咋搞呀

    为什么需要业务组件库

    业务组件库了解一下

    现状:一个toB项目内无可避免会涉及页面过多,如果各有各写会产生样式问题,实现问题,一份代码到处黏贴进行修改(代码大量冗余)。

    解决办法:如上图结构,结合业务沉淀组件,提高复用度。

    业务组件库要素

    1. 按需引入的能力
    2. 整体加载的能力
    3. 组件文档调试能力

    业务组件库实现

    确定了有什么能力,接下来就开始实现了。 参考现有的组件库(element-plus,ant-design-vue),按需引入都会用到babel-plugin-component,一句话概述自动补全资源路径。 为了实现对应的效果我们的文件结构就要符合官方需求。

    - lib // 'libDir'
      - index.js // or custom 'root' relative path
      - style.css // or custom 'style' relative path
      - componentA
        - index.js
        - style.css
      - componentB
        - index.js
        - style.css
    

    如何打包

        "build:lib-full": "cross-env LIBMODE=full webpack --config ./build/webpack.config.js", // 打包整个库输出
        "build:esm-bundle": "rollup --config ./build/rollup.config.bundle.js && yarn build:type", // 一个个打包
    

    执行代码来自element-plus,我们可以看到打包整库的时候使用了webpack,打包单独组件的时候使用了rollup。 这里的选择更多是CommonJS和esm的区别。因为在写rollup的配置页是支持esm规范的。而且使用上更简洁。 当然现在你用webpack也可以打出esm包。


    webpack,babel配置页要关注的点

    1. 因为业务组件库是在组件库上进行二次封装的,所以在打包的时候需要忽略组件库,以及通用库,减少包体积
    // webpack config 页
      externals: {
        "ant-design-vue": "ant-design-vue",
        moment: "moment",
        lodash: 'lodash',
        vue: {
          root: "Vue",
          commonjs: "vue",
          commonjs2: "vue",
          amd: "vue"
        }
      }
    
    1. vue打包jsx文件需要插件babel-plugin-transform-vue-jsx处理。

    如何展示?

    1. 直接项目内支持一个静态网站,一个个展示页面去写,现有的大型组件库基本都是这样子去做。
    2. 在有限的精力底下我们采用storybook去支持展示实现

    storybook优点

    1.配置不多就能跑起来。 2.在写项目的时候可以直接补充不用分离去写,可以充当开发调试职能。

      - componentA
        - index.js
        - style.css
        - index.stories.js
    

    storybook缺点

    1. 6.x.x版本基本搜不到有用的科普文抄抄。
    2. 文档难读,找了一圈才发现配置实现
    3. @storybook/vue,未支持vue3配置

    storybook展示难点 1.上面提及要使用业务组件库的人要先提供组件库(antd-design,element...)

    .storybook
      - preview.js // The addon config config allows you to add extra preview configuration from within a preset
      - main.js
    
      // preview.js 提前配置环境支持
      import Vue from 'vue'
      import Antd from 'ant-design-vue';
      import 'ant-design-vue/dist/antd.less';
    
    
      Vue.use(Antd);
    
    1. webpack配置(组件库的webpack配置)要copy一份到main.js

    业务组件库的思考

    1. 业务组件库无可避免会带一些场景,所以内置请求其实并不少见,要解决这种问题需要把http实例共享出来才不至于组件库一份,主站一份。
    2. 业务组件库的前提需要把主站的公用方法,业务方法提前抽取成一个库引入支持。

    业务组件库了解一下

    项目最终形态如上,如有写错或者写错希望大家楼下点评一下~

    参考地址

    1. zhuanlan.zhihu.com/p/162072130
    2. juejin.cn/post/684490…
    3. github.com/element-plu…
    4. storybook.js.org/docs/vue/co…

    起源地下载网 » 业务组件库了解一下

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元