超简单使用Vite+Vue3构建共享开发和分模块打包的前端项目

简介: 使用Vite和Vue3构建支持共享组件和分模块独立打包的前端项目的方法。

前言

最近有个需求就是构建一个可复用公共组件、可分模块独立部署的前端项目。关于这个共享开发和分模块打包的操作,还记得是在上家公司的某个SpringBoot项目上见过。它的好处就是子模块各自独立开发与打包、可复用父模块的共享代码、降低耦合度等。前端这里还没试过这样的操作,于是面向谷歌/百度开发一下。嗯,原来有这种操作的,真是流批,在此记录一下这个解决方案。

一、准备环境

(1)开发环境

C:\Users\帅龍之龍>nvm -v
1.1.12

C:\Users\帅龍之龍>nvm ls

  * 20.4.0 (Currently using 64-bit executable)
    18.16.1
    16.19.1

C:\Users\帅龍之龍>node -v
v20.4.0

C:\Users\帅龍之龍>npm -v
9.7.2

(2)nvm相关命令说明

nvm off                     # 禁用node.js版本管理(不卸载任何东西)
nvm on                      # 启用node.js版本管理
nvm install <version>       # 安装node.js的命名 version是版本号 例如:nvm install 16
nvm uninstall <version>     # 卸载node.js是的命令,卸载指定版本的nodejs,当安装失败时卸载使用
nvm ls                      # 显示所有安装的node.js版本
nvm list available          # 显示可以安装的所有node.js的版本
nvm use <version>           # 切换到使用指定的nodejs版本
nvm v                       # 显示nvm版本
nvm install stable          # 安装最新稳定版

(3)settings.txt

node_mirror: https://npmmirror.com/mirrors/node/
npm_mirror: https://npmmirror.com/mirrors/npm/

二、创建Vite项目

1.新建一个temp文件夹

(1)在桌面新建一个temp文件夹,然后在VS Code中打开此文件夹,打开一个终端;

2.创建一个Vite+Vue项目工程

(1)具体操作如下:

npm create vite@latest

(1) 输入项目名,如: vite-vue3-multi_modulets,然后回车
? Project name: » vite-vue3-multi_modulets

(2) 选择 Vue 框架,回车
? Select a framework: » - Use arrow-keys. Return to submit.
    Vanilla
>   Vue
    React
    Preact
    Lit
    Svelte
    Others

(3) 选择数据类型,回车
? Select a variant: » - Use arrow-keys. Return to submit.
>   TypeScript
    JavaScript
    Customize with create-vue ↗
    Nuxt 

(4) 创建完成,运行项目
Done. Now run: 

  cd vite-vue3-multi_modulets
  npm install
  npm run dev

PS C:\Users\帅龍之龍\Desktop\temp>

3.修改vite.config.ts文件

(1)修改前

import {
   
    defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
   
   
  plugins: [vue()],
})

(2)修改后

import {
   
    defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import {
   
    resolve } from 'path'

let config
const moduleName = process.env['npm_config_project'] // 使用`--project=[module_name]`获取模块名
if (!moduleName) {
   
   
  // 构建父模块
  config = {
   
   
    plugins: [vue()],
  }
} else {
   
   
  // 构建子模块
  config = {
   
   
    plugins: [vue()],
    root: `./src/apps/${
     
     moduleName}`,
    build: {
   
   
      rollupOptions: {
   
   
        input: resolve(__dirname, `src/apps/${
     
     moduleName}/index.html`), // 指定子模块入口文件
        output: {
   
   
          dir: `dist/apps/${
     
     moduleName}`
        }
      }
    }
  }
}

// https://vitejs.dev/config/
export default defineConfig(config)

三、以新建子目录的方式来创建应用或模块

(1)在项目的src目录中,新建apps文件夹

(2)在apps目录中,新建projectA和projectB文件夹

(3)在projectA和projectB文件夹,各新建一个App.vue、index.html、main.ts文件

/src/apps/projectA

-> App.vue
<template>
  <div>项目A</div>
</template>

-> index.html
<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="./assets/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>项目A</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="./main.ts"></script>
  </body>
</html>

-> main.ts
import {
   
    createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

---- ---- ---- ---- ---- ---- ---- ----

/src/apps/projectB

-> App.vue
<template>
  <div>项目B</div>
</template>

-> index.html
<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="./assets/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>项目B</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="./main.ts"></script>
  </body>
</html>

-> main.ts
import {
   
    createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

四、运行项目

npm run dev # 构建父模块
npm run dev --project=projectA # 构建projectA模块
npm run dev --project=projectB # 构建projectB模块

npm run build # 打包父模块
npm run build --project=projectA # 打包projectA模块
npm run build --project=projectB # 打包projectB模块

五、白嫖地址

vite-vue3-multi_modulets: 这是一个基于 Vite 构建的 Vue3 + TS 项目,支持组件共享、分模块编译和打包。

目录
相关文章
|
29天前
|
前端开发 JavaScript API
(前端3D模型开发)网页三维CAD中加载和保存STEP模型
本文介绍了如何使用`mxcad3d`库在网页上实现STEP格式三维模型的导入与导出。首先,通过官方教程搭建基本项目环境,了解核心对象如MxCAD3DObject、Mx3dDbDocument等的使用方法。接着,编写了加载和保存STEP模型的具体代码,包括HTML界面设计和TypeScript逻辑实现。最后,通过运行项目验证功能,展示了从模型加载到保存的全过程。此外,`mxcad3d`还支持多种其他格式的三维模型文件操作。
|
10天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
108 18
|
16天前
|
开发框架 前端开发 JavaScript
uniapp开发鸿蒙,是前端新出路吗?
相信不少前端从业者一听uniapp支持开发鸿蒙Next后非常振奋。猫林老师作为7年前端er也是非常激动,第一时间体验了下。在这里也给大家分享一下我的看法
65 17
|
22天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
68 3
|
20天前
|
前端开发 搜索推荐 安全
陪玩系统架构设计陪玩系统前后端开发,陪玩前端设计是如何让人眼前一亮的?
陪玩系统的架构设计、前后端开发及前端设计是构建吸引用户、功能完善的平台关键。架构需考虑用户需求、技术选型、安全性等,确保稳定性和扩展性。前端可选用React、Vue或Uniapp,后端用Spring Boot或Django,数据库结合MySQL和MongoDB。功能涵盖用户管理、陪玩者管理、订单处理、智能匹配与通讯。安全性方面采用SSL加密和定期漏洞扫描。前端设计注重美观、易用及个性化推荐,提升用户体验和平台粘性。
52 0
|
2月前
|
JavaScript 前端开发 测试技术
构建高效可维护的前端应用
构建高效可维护的前端应用
|
2月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
62 5
|
2月前
|
前端开发 JavaScript 开发者
使用React和Redux构建高效的前端应用
使用React和Redux构建高效的前端应用
52 1
|
2月前
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
|
2月前
|
资源调度 前端开发 JavaScript
vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
【11月更文挑战第10天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤,包括安装依赖、创建混淆脚本、修改 `package.json` 脚本命令、构建项目并执行混淆,以及在 HTML 文件中引用混淆后的文件。通过这些步骤,可以有效提高代码的安全性。
159 2
下一篇
开通oss服务