新闻中心
无需 npm:Vue 3 应用中直接通过 unpkg 引入 Pinia 的教程

本教程详细介绍了如何在不使用 npm 的情况下,通过 CDN(unpkg)直接将 Pinia 状态管理库导入到 Vue 3 浏览器应用程序中。文章提供了正确的 unpkg URL 和导入代码示例,并指导读者如何查找其他浏览器可用的包,适用于快速原型开发或轻量级项目。
引言:在浏览器环境中集成 Pinia
在某些开发场景中,例如快速原型验证、简单的独立页面应用或教学示例,开发者可能希望直接在浏览器中使用 Vue 3 和其生态系统库,而无需复杂的构建工具链(如 Vite、Webpack)或 Node.js 环境下的 npm/yarn 包管理。然而,对于像 Pinia 这样的状态管理库,其官方文档通常侧重于 npm 安装方式,使得直接通过 CDN 引入的路径变得不那么显而易见。本文旨在解决这一痛点,提供一个清晰的指南,演示如何在纯浏览器环境中,利用 unpkg CDN 服务将 Pinia 引入 Vue 3 应用。
通过 unpkg 引入 Pinia
unpkg 是一个内容分发网络(CDN),它能够提供 npm 上几乎所有包的浏览器优化版本。这意味着你可以直接通过 URL 在
正确的 Pinia 导入 URL 如下:
import { createPinia, defineStore } from 'https://unpkg.com/pinia@2.1.7/dist/pinia.esm-browser.js';说明:
- https://unpkg.com/pinia@2.1.7/:指定了 Pinia 包的名称和版本号。建议始终指定版本号(例如 @2.1.7),以确保代码的稳定性,避免未来 Pinia 版本更新可能带来的兼容性问题。
- dist/pinia.esm-browser.js:这是 Pinia 专为浏览器环境优化的 ES 模块版本。它支持 import 语句,并且通常比 index.js 或其他 CommonJS 版本更适合直接在浏览器中使用,因为它能够利用浏览器的模块加载机制。
完整示例代码
以下是一个完整的 HTML 文件示例,展示了如何在一个 Vue 3 应用中,通过 unpkg 导入并使用 Pinia 来管理一个简单的计数器状态,全程无需 npm。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue 3 + Pinia (无 npm) 示例</title>
<style>
body { font-family: sans-serif; margin: 20px; }
#app { border: 1px solid #eee; padding: 20px; border-radius: 8px; max-width: 400px; margin: 0 auto; text-align: center; }
button { padding: 8px 15px; margin: 5px; cursor: pointer; border: 1px solid #ccc; border-radius: 4px; background-color: #f0f0f0; }
button:hover { background-color: #e0e0e0; }
h1 { color: #42b883; }
p { font-size: 1.1em; }
</style>
</head>
<body>
<div id="app">
<h1>{{ message }}</h1>
<p>当前计数: {{ counter.count }}</p>
<button @click="counter.increment()">增加</button>
<button @click="counter.decrement()">减少</button>
<p>双倍计数: {{ counter.doubleCount }}</p>
<div class="aritcle_card">
<a class="aritcle_card_img" href="/ai/1084">
<img src="https://img.php.cn/upload/ai_manual/001/503/042/68b6c8f303e59213.png" alt="Kreado AI">
</a>
<div class="aritcle_card_info">
<a href="/ai/1084">Kreado AI</a>
<p>Kreado AI是一个多语言AI视频创作平台,只需输入文本或关键词,即可创作真实/虚拟人物的多语言口播视频。 为创作者提供AI赋能</p>
<div class="">
<img src="/static/images/card_xiazai.png" alt="Kreado AI">
<span>182</span>
</div>
</div>
<a href="/ai/1084" class="aritcle_card_btn">
<span>查看详情</span>
<img src="/static/images/cardxiayige-3.png" alt="Kreado AI">
</a>
</div>
</div>
<script type="module">
// 导入 Vue 3 核心模块
import { createApp, ref, computed } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';
// 导入 Pinia 核心模块
import { createPinia, defineStore } from 'https://unpkg.com/pinia@2.1.7/dist/pinia.esm-browser.js'; // 建议指定版本
// 1. 定义一个 Pinia Store
const useCounterStore = defineStore('counter', {
state: () => ({
count: 0
}),
getters: {
doubleCount: (state) => state.count * 2
},
actions: {
increment() {
this.count++;
},
decrement() {
this.count--;
}
}
});
// 2. 创建 Vue 应用
const app = createApp({
setup() {
const message
= ref('Vue 3 + Pinia (无 npm) 示例');
// 3. 在 setup 中使用 Pinia Store
// 一旦 Pinia 被安装到 Vue 应用中,可以直接调用 useStore() 函数获取 store 实例
const counter = useCounterStore();
return {
message,
counter
};
}
});
// 4. 安装 Pinia 到 Vue 应用
// 必须在挂载 Vue 应用之前调用 app.use(createPinia())
app.use(createPinia());
// 5. 挂载 Vue 应用
app.mount('#app');
</script>
</body>
</html>将上述代码保存为 .html 文件,并直接在浏览器中打开,即可看到一个功能完整的 Vue 3 + Pinia 应用,无需任何本地服务器或构建步骤。
如何查找其他 CDN 包
unpkg 不仅适用于 Pinia,也适用于大多数流行的前端库。如果你想知道某个 npm 包在 unpkg 上的可用文件路径,可以使用以下 URL 格式进行浏览:
https://unpkg.com/browse/
例如,要浏览 Pinia 包的文件结构,你可以访问: https://www.php.cn/link/c0c0d016711b9da72bd0de3897b4c9d3
重要提示: 请确保在包名后加上 / 斜杠,否则可能无法正确显示文件列表。通过这种方式,你可以找到特定版本的 dist 目录下的 ES 模块文件(通常以 .esm-browser.js 或 .mjs 结尾),它们是直接在浏览器中 import 的理想选择。
注意事项与最佳实践
尽管通过 unpkg 直接引入库非常便捷,但在实际应用中仍需考虑以下几点:
-
适用场景: 这种方法最适合于:
- 快速原型开发和概念验证。
- 学习和测试 Vue/Pinia 的基本功能。
- 构建非常简单的、不涉及复杂构建流程的独立页面应用。
- 在特定环境下(如某些 CMS 或在线编辑器)插入前端逻辑。
-
局限性:
- 无构建优化: 缺少了 Webpack、Vite 等构建工具提供的代码打包、压缩、Tree Shaking(尽管 ESM 模块本身有一定优化)、热模块替换 (HMR) 等功能。这可能导致加载速度较慢、文件体积较大。
- 依赖管理: 所有的依赖都需要手动通过
- 生产环境: 对于大型、复杂的生产级应用,强烈建议使用基于 npm 的构建工具链,以获得最佳的性能、可维护性和开发体验。
- 版本控制: 始终建议在 unpkg URL 中指定库的版本号(例如 pinia@2.1.7)。这可以防止 CDN 上库的更新导致你的应用出现意外的兼容性问题或行为变化。
- 错误处理: 浏览器中的模块导入错误通常会在控制台中显示,但相比于构建工具提供的详细错误报告,可能不那么直观。
总结
通过 unpkg CDN,开发者可以在不依赖 npm 和构建工具的情况下,轻松地将 Pinia 状态管理库引入到 Vue 3 浏览器应用程序中。这种方法为快速开发、原型验证和学习提供了极大的便利。然而,在决定采用此方法时,应充分权衡其便捷性与大型项目所需的性能优化和复杂依赖管理能力。理解 unpkg 的使用方式,也能帮助你更好地探索和利用前端生态系统中丰富的开源资源。
以上就是无需 npm:Vue 3 应用中直接通过 unpkg 引入 Pinia 的教程的详细内容,更多请关注其它相关文章!
# 潞城seo托管
# 适用于
# 这可
# 如何在
# 应用程序
# 生态系统
# 多语言
# 宁国网站关键词推广排名
# 淘宝店怎么营销推广
# 器中
# 重庆关键词排名专注乐云seo
# seo页面标题与描述
# 集团网站建设及推广
# 个人网站建设题型有哪些
# 网站的优化就找z火11星美评
# seo快速排名 si
# 有名的做seo优化公司
# vue
# 你可以
# 是一个
# 关键词
# cdn
# 工具
# app
# 浏览器
# npm
# cms
# vite
# node
# node.js
# 前端
# js
# html
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
FullCalendar 自定义按钮样式定制指南
CSS Grid如何控制元素对齐_align-items与justify-items组合使用
QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台
AO3网页版合集入口 Archive of Our Own同人作品浏览指南
支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样
Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置
qq邮箱日历功能怎么用_创建日程与会议邀请的技巧
Go语言中JSON数据解码与字段访问指南
AO3官方镜像站点汇总 AO3同人作品网页版直达链接
qq游戏大厅官方下载_qq游戏免费下载安装入口
在React函数组件中利用原生HTML5进行邮箱地址验证
Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接
163邮箱注册官网 免费申请163个人邮箱
漫蛙2漫画入口 漫蛙正版网页漫画直达网址
“在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法
QQ官网正版登录链接 QQ在线登录入口最新
J*aScript实现动态背景色下的文本与按钮颜色自适应调整
Golang如何优化CPU绑定任务分配策略_Golang CPU任务分配优化实践
Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换
如何使用J*aScript精确选择并批量修改特定父元素下子链接的样式
Win10快速启动功能利弊分析 Win10开启或关闭快速启动教程【技巧】
c++项目目录结构应该如何组织_c++工程化项目结构规范
腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程
蛙漫官方正版入口 蛙漫网页在线全集免费观看
Python类型检查:优化关联可选属性的Mypy推断策略
漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道
手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议
照顾宝贝2小游戏免费秒玩入口
将JSON对象数组转置为键值对列表的实用指南
J*aScript Promise链中如何正确终止后续.then执行并处理错误
QQ邮箱在线使用入口 QQ邮箱个人账号网页版登录
Steam官网入口直达 Steam注册及登录步骤
电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】
AI泡沫首次被“刺破”:GPU十年都无法存活!
css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容
CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题
怎样使用“本地安全策略”提升Windows安全性_Secpol.msc配置指南【高手】
windows10怎么关闭系统提示音_windows10彻底静音设置方法
Lar*el Form Request中唯一性验证在更新操作中的正确实现
格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施
PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程
单射、满射与双射的关系 一文理清所有逻辑
12306选座系统怎么选连座_12306选座多人连坐操作方法
J*aScriptWebpack优化_J*aScript构建工具实战
jQuery Mask 插件中实现电话号码固定前导零的教程
Basecamp怎样用留言钉固定重点_Basecamp用留言钉固定重点【重点标记】
Win11怎么查看显卡显存 Win11显示适配器属性及专用视频内存查询
QQ邮箱在线登录平台 QQ邮箱个人邮箱网页版入口
mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤
Excel文件在线转换快速入口 Excel在线格式转换网站


2025-11-20
浏览次数:次
返回列表
= ref('Vue 3 + Pinia (无 npm) 示例');
// 3. 在 setup 中使用 Pinia Store
// 一旦 Pinia 被安装到 Vue 应用中,可以直接调用 useStore() 函数获取 store 实例
const counter = useCounterStore();
return {
message,
counter
};
}
});
// 4. 安装 Pinia 到 Vue 应用
// 必须在挂载 Vue 应用之前调用 app.use(createPinia())
app.use(createPinia());
// 5. 挂载 Vue 应用
app.mount('#app');
</script>
</body>
</html>