nuxt2-storybook-vite:环境搭建、基础使用 / nuxt项目组件库

简介: nuxt2-storybook-vite:环境搭建、基础使用 / nuxt项目组件库

一、创建 nuxt2 项目


安装 - NuxtJS | Nuxt.js 中文网


yarn create nuxt-app <项目名>

ae0d7a0022b9965cd45f77ae76eff0c6_7f6402dc202446218880d4a7c9ded456.png


二、安装 storybook


2.1、初始化 Storybook

pnpm add -g @storybook/cli
npx -p @storybook/cli sb init

命令解释


image.png


2.2、本文选择 vite

267a7c39db0f8b23b1c44ebee8449fb3_82c47fc7118140fca9a27b62653f33bd.png


2.3、Failed to load preset: "@storybook\\vue-vite\\preset"

b2a8953aec6bd289613fa7d3683fc0a8_b288f662dd714312bed2d08ba86ef9b8.png


解决报错


yarn add vite

因为已经此时已经安装了storybook,我们现在 执行 yarn storybook 启动


yarn storybook

2.4、Error: Failed to resolve entry for package "unfetch". The package may have incorrect main/module/exports specified in its package.json.

341e82419f2d6c927af8a016ece9e3a6_0ada98c1a4e1424f826ea3d5a3fd6cd6.png


这个错误通常是由于“unfetch”模块在其package.json文件中未正确指定main或module导致的。


我们尝试以下几个步骤:


1、确认你的项目已安装了“unfetch”模块并且版本正确。


2、检查“unfetch”模块的package.json文件,指定其main或module属性。


3、检查package.json中exports内容:


"exports": {
    ".": {
          "import": "./src/index.mjs",
          "default": "./src/index.js"
    },
}

改为


"exports": {
    ".": {
          "import": "./src/index.mjs",
          "default": "./src/index.js"
    },
}

fcb1fa61714328d6ee4bf80432aff5e3_da06ab6922b4472eb23a6b65f588f356.png


问题解决了


2.5、再次启动storybook,启动成功

deb552683548c49822d27e5ca60a926f_af73477735b8407dbf345bdd49aa93e4.png


2.6、当点击页面内容时候,报错如下图


a2aa5146ecf3578a737c86ae937e6b9f_9caa16bbbe824bc8b97788ffb53c21da.png

8d2e3d267cd0bde3c5add7f8fc61c160_a0ff213ea06b400b8833493ce9f639ec.png


报错原因


yarn add @vitejs/plugin-vue

这个错误是由于在使用 Vite 构建项目时,未安装 @vitejs/plugin-vue 插件导致的。@vitejs/plugin-vue 插件提供了处理 .vue 文件的能力。


在项目根目录下的 vite.config.js 文件中添加以下配置:


import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
  plugins: [
    vue()
  ]
})

2.7、再次执行 yarn storybook,上一个错误已解决,新报错如下图

770b6750eebdb0ea73b4cccd24c26cca_5bc14691da394886a50ea733120ebf0d.png


报错原因


这个错误是由于在使用 @vitejs/plugin-vue 插件构建项目时,需要安装 Vue.js 3.2.25 或更高版本,并且 Vue.js 编译器也需要被安装。

本文 nuxt2,使用的是 vue2.x 的版本,我们要使用 vue2 的基础上使用 vite,需要安装插件,进行vite配置。


所以我们希望在nuxt2 / vue2 项目使用vite,下文:


2.8、vue2项目想要使用vite怎么用

Vue 2 项目并不支持 Vite,因为 Vite 是基于 ESM(ES6 模块)构建的工具,而 Vue 2 是基于 CommonJS 构建的。我们可以通过使用 vite-plugin-vue2 插件来实现在 Vue 2 项目中使用 Vite。下面是使用 vite-plugin-vue2 插件的步骤:


2.8.1、首先安装 Vite 和 vite-plugin-vue2

yarn add vite vite-plugin-vue2 --save-dev

2.8.2、在项目根目录创建 vite.config.js 文件,添加以下内容:

const { createVuePlugin } = require('vite-plugin-vue2')
module.exports = {
  plugins: [
    createVuePlugin()
  ]
}

这会告诉 Vite 在构建时加载 Vue 2 插件。


注意,由于 Vue 2 不支持 ESM,因此构建过程不会像 Vue 3 项目那样高效。因此,在使用 Vue 2 项目时,使用 Vite 可能会导致构建时间变长。


2.9、再次启动 yarn storybook

启动成功,操作页面组件均没有问题

f0fcbcc5d3acf6d27da3ecb597b0f672_b7a8143450314eaca0f1f3ef1f48f2a0.png

4aae910bb3e728f34eb4473dcb7f93ab_73eaf891a9b44c96811bea04a443163b.png

ba6e1027041d538512db2d6cdad4d1cf_eca5587fb490466a80d6080586d3374c.png


2.10、 在story.js文件使用element

当组件内部使用了element时候,我们需要给组件提供所谓“element环境” / 引入并使用 element


import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import Vue from "vue";
Vue.use(ElementUI)

633beb26108757820df220a7614f9afd_4a8b172baed54dbe877c887649b1b5a9.png


经测试,成功


2.11、story引入的组件使用了别名 / alias

需要在story的vite配置文件 vite.config.js文件内配置别名,在nuxt.config.js中配置无效,因为本质上是两个项目


f58fbc3e6d6231c0597755e58d822b18_15f0f5bc121a42eaa2b28d2cd1be4a0a.png


经测试,成功  


三、部署


上文虽然修改过unfetch的package.json的exports的指定入口,但是,修改与否,都能正常的执行 yarn build-storybook ,所以,在服务器上拉取代码、打包、部署应该都是流畅的。


yarn build-storybook


394d65a1028c2fe9cb1756dcaee5a15f_d5ab014351f1419b897ddc3735ad40fa.png

打包后生成 storybook-static 静态资源


使用 http-server 启动服务,正常


服务端使用 nginx 启动同理


b94838067093bcb9f6f21cb29a02297b_d515be393d9a41478a52af1757825e56.png


四、详细使用


待补充


五、storybook 优缺点


5.1、优点

5.1.1、更高效的开发,Storybook 可以帮助开发人员更快地开发和测试 UI 组件,不需要等待整个应用程序部署,而只需要在 Storybook 中测试和调试组件。


5.1.2、更好的可维护性,Storybook 提供了一个容易理解和管理的 UI 组件库,使得组件的可维护性更高。


5.1.3、更好的文档化,Storybook 可以生成可视化的文档,帮助开发人员快速了解组件的用法和 API。


5.1.4、更好的协作,Storybook 可以作为一个团队中开发人员之间共享和讨论组件的平台。这使得团队成员可以更容易地理解和使用组件,同时也可以更好地协作和交流。


5.1.5、更好的可扩展性,Storybook 可以与其他工具和框架集成,比如 React、Vue、Angular 和 Ember 等。这使得开发人员可以使用他们熟悉的工具和框架,并且可以相对轻松地将 Storybook 集成到自己的工作流程中。


5.2、缺点

5.2.1、Storybook是一个本地开发工具,因此它不能用于构建和部署生产应用程序,打包后的静态资源可用来部署。


5.2.2、Storybook不能模拟所有的浏览器和设备的环境,因此在某些情况下,它可能无法准确模拟应用程序中的环境。


5.2.3、Storybook不是一个完整的测试框架,它只能测试组件的外观和行为,无法执行完整的端到端测试。


5.2.4、Storybook需要开发人员手动配置,以确保所有组件都被正确显示和测试。


5.2.5、Storybook可能会产生额外的开销和复杂性,特别是对于小型项目来说。


5.2.6、无法处理复杂路由,由于 Storybook 是一个独立的开发环境,它并不包含完整的路由功能。如果您需要在组件故事中处理复杂的路由,可能会遇到一些限制。


5.2.7、仅支持部分前端框架,Storybook 支持多种前端框架,如 React、Vue、Angular 等,但并不是所有的前端框架都得到了完全的支持。有些框架可能需要额外的配置或插件才能正常工作。


5.2.8、无法直接与应用程序集成,Storybook 旨在提供一个隔离的开发环境,因此它无法直接与应用程序的其他部分进行集成。如果您需要与应用程序的其他部分进行交互,可能需要额外的配置或开发工作。


5.2.9、可能需要手动配置,虽然 Storybook 提供了一些自动化的配置选项,但在某些情况下可能需要手动配置才能满足您的需求。如果您需要更高级的功能或定制化配置,可能需要花费更多时间和精力。


虽然Storybook有一些限制,但它仍然是开发组件的非常有用的工具。

开发人员可以根据自己的需求评估它是否适合自己的项目。


六、过程记录


记录一、理解Storybook

Storybook是一种用于开发和测试组件的工具,可以让开发人员将组件独立开发和测试,然后再集成到应用程序中。


七、欢迎交流指正


参考链接

将 Nuxt 模块放入 Storybook答案 - 爱码网

关于将 Storybook 与 Nuxt.js 结合使用的(几乎)综合指南_vue.js_weixin_0010034-Vue

安装 - NuxtJS | Nuxt.js 中文网


相关文章
|
JavaScript 中间件 API
nuxt3:我们开始吧-开发-配置-部署(一)
nuxt3:我们开始吧-开发-配置-部署(一)
992 0
|
中间件 API
nuxt3:我们开始吧-开发-配置-部署(二)
nuxt3:我们开始吧-开发-配置-部署(二)
534 0
|
存储 应用服务中间件 nginx
nuxt3:我们开始吧-开发-配置-部署(三)
nuxt3:我们开始吧-开发-配置-部署(三)
1153 0
|
2月前
|
JavaScript
在vue3中(vite)引入unocss,安装配置unocss
在vue3中(vite)引入unocss,安装配置unocss
|
1月前
|
存储 资源调度 JavaScript
Vite是什么?怎样使用Vite创建Vue3项目?
Vite是什么?怎样使用Vite创建Vue3项目?
73 0
|
3月前
Nuxt项目的安装和使用
【8月更文挑战第7天】
41 2
|
12月前
|
域名解析 开发框架 JavaScript
vue2.0项目从零开发到打包部署
vue2.0项目从零开发到打包部署
138 0
|
JavaScript
为老的vueCli项目添加vite支持
为老的vueCli项目添加vite支持
130 0
为老的vueCli项目添加vite支持
|
资源调度
从0搭建Vue3组件库(二):Monorepo项目搭建
从0搭建Vue3组件库(二):Monorepo项目搭建
347 0