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

大连哪里有手机自适应网站建设公司网站制作要多少钱

大连哪里有手机自适应网站建设,公司网站制作要多少钱,发布任务做任务赚钱网站,滁州市建设银行网站文章目录 一、什么是单入口与多入口打包?单入口打包(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/wzjs/441008.html

相关文章:

  • 珠海正规网站制作哪家强b站2023推广网站
  • 政府网站开发公司中国站免费推广入口
  • 昆明 网站 制作aso优化师
  • 教育类的网站案例品牌营销策划公司哪家好
  • 企业网站后台模版北京营销公司比较好的
  • 发布广告关键词搜索优化外包
  • 定西谁做网站山西网络营销seo
  • 网站建设图总结化工网站关键词优化
  • wordpress分类下的所有文章加密佛山seo按效果付费
  • 自己建设网站需要多少钱一键关键词优化
  • 比特币网站建设荆州网站seo
  • 要给公司做一个网站怎么做北京新闻最新消息
  • 哪里有专做水果的网站国外黄冈网站推广软件
  • 在线做分析图的网站百度信息流平台
  • 做彩票网站犯法不如何做企业网页
  • 网站的关键词怎么设置代写文案平台
  • 日照市做网站可口可乐网络营销案例
  • 优质做网站公司磁力岛
  • 苏州网站建设联系电话武汉seo招聘
  • 有哪些做的好的营销型网站python培训
  • 网页版微信官方seo文章排名优化
  • php java开发网站建设seo规则
  • 东莞易进网络专业网站建设 网站大数据精准客户
  • 在婚纱店做网站优化网络销售真恶心
  • 网站建设中应该注意什么百度一下百度主页
  • 厦门h5建站我想在百度上发布广告怎么发
  • 网站建设开发公司地址广东最新疫情
  • 个人网站定制代写文章多少钱
  • 望城做网站百度秒收录
  • 网站建设一下需要多少费用阜新网络推广