IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 从零开始搭建一个组件库(一) -> 正文阅读

[JavaScript知识库]从零开始搭建一个组件库(一)


提示:以下是本篇文章正文内容,下面案例可供参考

一、使用 vite 创建项目

示例:

# npm 6.x
npm init vite@latest my-vue-app --template vue

# npm 7+, 需要额外的双横线:
npm init vite@latest my-vue-app -- --template vue

# yarn
yarn create vite my-vue-app --template vue

# pnpm
pnpm create vite my-vue-app -- --template vue

二、修改成库模式打包

项目打包文件是直接在 html 引入使用的,我们要构建发布 npm 版本需要改成库模式

对应打包成库的入口,我们不需要创建应用挂载到节点,而是要考虑导出组件,导出组件需要考虑:

  • 全局导入使用;
  • CDN 引入使用;
  • 按需导入使用;

对应1、2需要导出一个 Vue 插件,能够通过 Vue.use() 调用,这个实现就是通过导出 install 函数。而3只要导出组件即可。

import Button from './button'
import Layout from './layout'
import type { App, Plugin } from 'vue'

function isPlugin(item: any): item is Plugin {
  return item.install
}

export function install(Vue: App) {
  const components = [Button, Layout]
  components.forEach(item => {
    if (isPlugin(item)) {
      Vue.use(item)
    } else if (item.name) {
      Vue.component(item.name, item)
    }
  })
}

export { Button, Layout }
export default { install } // es 模块全局导入使用

下一步,执行 npm run build 打包可以看到生成3个文件 .es.js、.umd.js、style.css。

  • .umd.js 一般使用在 CDN 引入。
  • .es.js 使用在 esm 模块打包项目,现代打包工具能够通过 tree shaking 实现按需引入。
  • style.css是项目下所有样式。

如果仅仅只是打包一个简单的组件库,这一步已经算完成了。接下来要进行发布 npm 需要配置 package.json。

// package.json
{
  // ...
  "main": "dist/bundle.umd.js",
  "module": "dist/bundle.es.js", // esm 导入模块入口
  "typings": "dist/main.d.ts",
  "sideEffects": false,
  // ...
}

三、总结

上面已经基本完成一个组件库的搭建,但是还存在一些问题:

  • 没有 ts 声明,对 ts 不友好;
  • CSS 文件没有按需加载;
  • 旧版本打包工具不支持 npm 库的tree shaking(如webpack 4以下版本);

针对这些问题,将在下一篇 从零开始搭建一个组件库(二)讲解如何解决。


  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 01:54:55  更:2022-09-15 01:56:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:19:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码