当前位置: 首页 > news >正文

网站怎么做悬浮图片放大带后台的网站模板下载

网站怎么做悬浮图片放大,带后台的网站模板下载,常州网站建设key de,永久免费的软件文章目录 一、什么是单入口与多入口打包?单入口打包(Single Entry Build)多入口打包(Multi Entry Build) 二、两种方式对比三、构建方式实践(以 Vite Rollup 为例)单入口打包实践项目结构index…

文章目录

  • 一、什么是单入口与多入口打包?
    • 单入口打包(Single Entry Build)
    • 多入口打包(Multi Entry Build)
  • 二、两种方式对比
  • 三、构建方式实践(以 Vite + Rollup 为例)
    • 单入口打包实践
      • 项目结构
      • index.ts 示例
      • vite.config.ts 配置
    • 多入口打包实践
      • 项目结构
      • 每个组件都有一个独立入口
      • vite.config.ts 配置
  • 四、额外建议
    • 类型声明
    • 混合模式
  • 五、NPM 发布结构建议
  • 总结推荐

在手写组件库时,选择“单入口打包”还是“多入口打包”是一个非常重要的架构和构建决策。

下面我将从概念、优缺点、适用场景、构建方式(以 Vite/Rollup 为主)、实践建议等方面为你全面展开介绍。


一、什么是单入口与多入口打包?

单入口打包(Single Entry Build)

  • 所有组件通过一个统一入口(如 index.ts)导出并打包为一个文件(或多个格式,如 ESM/CJS)。

  • 使用方式:

    import { Button, Modal } from 'my-ui-lib';
    

多入口打包(Multi Entry Build)

  • 每个组件都有独立的入口文件(如 button/index.ts),可以单独按需打包。

  • 使用方式:

    import Button from 'my-ui-lib/button';
    import Modal from 'my-ui-lib/modal';
    

二、两种方式对比

项目单入口多入口
打包产物体积大,包含所有组件小,可按需引入
Tree-shaking支持,但依赖使用者工具配置更加彻底地按需引入
用户使用体验更简单,一次性引入更灵活,适合大型项目
维护成本低,只有一个入口文件高,每个组件需独立配置入口和构建
编译速度慢(构建多个入口)
推荐场景小型组件库中大型组件库,强调性能

三、构建方式实践(以 Vite + Rollup 为例)

单入口打包实践

项目结构

src/
├── components/
│   ├── Button.tsx
│   └── Modal.tsx
├── index.ts

index.ts 示例

export { default as Button } from './components/Button';
export { default as Modal } from './components/Modal';

vite.config.ts 配置

import { defineConfig } from 'vite';
import dts from 'vite-plugin-dts';export default defineConfig({build: {lib: {entry: './src/index.ts',name: 'MyUILib',fileName: 'my-ui-lib',},rollupOptions: {external: ['react', 'react-dom'],output: {globals: {react: 'React','react-dom': 'ReactDOM',},},},},plugins: [dts()],
});

多入口打包实践

项目结构

src/
├── button/
│   ├── index.ts
│   └── Button.tsx
├── modal/
│   ├── index.ts
│   └── Modal.tsx

每个组件都有一个独立入口

src/button/index.ts

export { default } from './Button';

vite.config.ts 配置

import { defineConfig } from 'vite';
import dts from 'vite-plugin-dts';
import path from 'path';
import fs from 'fs';// 自动扫描所有组件目录
const entryPoints = fs.readdirSync(path.resolve(__dirname, 'src')).reduce((acc, dir) => {const fullDir = path.resolve(__dirname, 'src', dir);const entryFile = path.resolve(fullDir, 'index.ts');if (fs.existsSync(entryFile)) {acc[dir] = entryFile;}return acc;
}, {} as Record<string, string>);export default defineConfig({build: {lib: {entry: entryPoints,formats: ['es'],},rollupOptions: {external: ['react', 'react-dom'],output: {entryFileNames: '[name]/index.js',preserveModules: true,preserveModulesRoot: 'src',},},},plugins: [dts({entryRoot: 'src',outputDir: 'dist',})],
});

四、额外建议

类型声明

配合 vite-plugin-dts 插件或使用 tsc --emitDeclarationOnly 输出 .d.ts 类型文件。

混合模式

你也可以支持单入口 + 多入口共存:

// 用户既可以用:
import { Button } from 'my-ui-lib';// 也可以用:
import Button from 'my-ui-lib/button';

通过构建两个打包产物:一个 index.ts 打全库,一个多入口输出每个子模块。


五、NPM 发布结构建议

my-ui-lib/
├── package.json
├── index.js             # 单入口构建产物
├── button/
│   ├── index.js         # 多入口
│   └── index.d.ts
├── modal/
│   └── ...

总结推荐

目标推荐方式
简单快速上线 MVP单入口打包
注重组件体积、性能多入口或混合模式
提供全量和按需引入能力混合单入口 + 多入口
http://www.dtcms.com/a/438134.html

相关文章:

  • java学习:四大排序
  • npm install 中的 --save 和 --save-dev 使用说明
  • 个人网站欣赏h5网站和传统网站区别
  • Inception V3--J9
  • Spring——编程式事务
  • 如何比较两个目录档案的差异
  • 美发店收银系统教程
  • wordpress网站怎么打开对于高校类建设网站的要求
  • 理解神经网络流程
  • 2025年渗透测试面试题总结-99(题目+回答)
  • Linux启动流程与字符设备驱动详解 - 从bootloader到驱动开发
  • 探讨区块链与生物识别技术融合的安全解决方案
  • 手机应用商店app下载官方网站下载建设厅网站技术负责人要求
  • 电子商务网站开发过程论文6保定网站建设哪家好
  • Lua语法
  • stm32摇杆adc数据分析
  • 公司网站开发费用如何做账网站三合一建设
  • MySQL 进阶知识点(十二)---- 管理
  • C/C++贪吃蛇小游戏
  • 【Linux】多线程创建及封装
  • 苏州网站推广公司创业商机网餐饮
  • unity 读取PPT显示到屏幕功能
  • Django - 让开发变得简单高效的Web框架
  • C# 判断语句详解
  • 新建一个网站需要多少钱舟山专业做网站
  • JVM中的垃圾回收机制
  • 【计算机视觉】概述
  • 【第五章:计算机视觉-项目实战之生成对抗网络实战】2.基于SRGAN的图像超分辨率实战-(2)实战1:DCGAN模型搭建
  • 【精品资料鉴赏】大型企业网络安全整体解决方案
  • 重庆建设医院官方网站wordpress中文社区