基于 Vite 的前端 SDK 工程化设计与模块化构建实践

1.创建项目

说明:如图所示,创建test-sdk文件夹。

2. 初始化 npm

说明:npm init是创建一个新的 Node.js 项目,自动生成 package.json配置文件。

npm init -y

3.创建对应目录

说明:如图所示:

4.Vite配置打包

说明:Vite 配置打包就是告诉 Vite 如何把你的代码转换成浏览器能直接运行的文件。

npm install vite -D

4.1创建vite.config.js

说明:项目的说明书,代码如下

javascript 复制代码
import { defineConfig } from 'vite'

export default defineConfig({
    build: {
        lib: {
            entry: 'src/index.js',
            name: 'Weather',
            fileName: 'weather'
        }
    }
})

5.编写业务代码

说明:rainfall.js写个简单函数,然后在index.js文件引入。

javascript 复制代码
export function loadRainfall(options) {
    console.log('加载waterData:', options)
}

6.文件目录

说明:用 Vite 打包的 JavaScript 库项目,源码在 src,构建产物在 dist,通过 example进行测试。

  • src/​ - 源码(index.js是入口文件,rainfall.js是功能逻辑)

  • dist/​ - 打包后的成品文件(用于发布)

  • example/​ - 使用示例和测试页面

  • node_modules/​ - 项目依赖包

文件整体目录如下:

7.打包

说明:打包命令。

vite build

javascript 复制代码
{
  "name": "test-sdk",
  "version": "1.0.0",
  "description": "",
  "main": "dist/weather.umd.js",
  "module": "dist/weather.mjs",
  "files": ["dist"],
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "vite build"
  },
"keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "vite": "^8.0.9"
  }
}

8.测试项目

8.1 UMD(传统方式)

说明:最传统 script 引入(UMD)

javascript 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>SDK测试</title>
</head>
<body>

<div id="app"></div>
<button id="btn">加载降水</button>
<!-- 引入你的SDK -->
<script src="../dist/weather.umd.js"></script>

<script>
    // 注意:这里的 Weather 就是你 vite.config.js 里的 name
    document.getElementById('btn').addEventListener('click', () => {
        Weather.loadData({
            test: 123,
            city: '城市'
        })
    })

</script>

</body>
</html>

8.2 ESM(现代方式)

说明:编写SDK测试页面,如下所示:

javascript 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8" />
    <title>Weather GIS SDK Test</title>
</head>

<body>
<h2>SDK 测试页面</h2>

<button id="btn">加载降水</button>

<script type="module">
    import { loadRainfall } from '../dist/weather.mjs'

    document.getElementById('btn').addEventListener('click', () => {
        loadRainfall({
            test: 123,
            city: '城市'
        })
    })
</script>
</body>
</html>
相关推荐
一晌小贪欢3 分钟前
python-第27天:Python面向对象详解
开发语言·python·数据可视化·面向对象·python办公
默_笙9 分钟前
🚍 一条 Todo 的奇幻漂流:TypeScript 全栈类型安全的"护照检查"
前端·javascript
迪康Defender19 分钟前
公用电脑责任追溯难?迪康端点安全一体化管理系统用户模式详解
java·运维·开发语言·网络·其他·安全
计算机魔术师1 小时前
NVIDIA 以 129.3 亿美元收购 Hugging Face
前端
平头哥技术团队1 小时前
Day 01 | 用 HTML 写第一个网页:双击就能在浏览器打开
前端
16月6日-晴1 小时前
Java面向对象——接口
java·开发语言
weixin_422555421 小时前
el-menu子菜单点击就被激活,恢复之前的激活状态
javascript·vue.js·elementui
wuyk5551 小时前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
geovindu1 小时前
CSharp: Wordcloud
开发语言·后端·c#·.net·.netcore·词云
Java小白笔记2 小时前
Java 实现 ZIP 压缩包生成方案
java·开发语言·网络·7-zip