Vue3 + Vite 搭建多页面编译项目 一种优雅的实现方式 简单实用

Vue3 + Vite 搭建多页面编译项目 一种优雅的实现方式 简单实用

  • 适用场景: 两个前端项目有很多的公共组件, 公共配置, 相当于Vue2中的Page配置项
    • 思路: 通过不同的配置项加载不同的项目入口
    • 缺点: 会强制覆盖 develop和product两个编译mode
    • <!-- 文件: Root: index.html -->
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <link rel="icon" href="/favicon.ico">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <!-- 重点: 不同APP的动态名字 取自 .env -->
          <title>%VITE_TITLE%</title>
      </head>
      <body>
          <div id="app"></div>
          <!-- 重点: 动态的项目入口 -->
          <script type="module" src="/src/%VITE_MAIN_PATH%-main.ts"></script>
      </body>
      </html>
      
    •     ## 文件: Root: .env.mobile
          ## 页面名称
          VITE_TITLE = "移动端"
          ## 项目入口标识
          VITE_MAIN_PATH = "mobile"
      
          ############################
          ## 文件: Root: .env.pc
          ## 页面名称
          VITE_TITLE = "电脑端"
          ## 项目入口标识
          VITE_MAIN_PATH = "pc"
      
    •     // 重点: 干掉 src/main.ts  
      
          // 文件: Root: src/mobile-main.ts
          import './assets/main.css'
          import { createApp } from 'vue'
          import { createPinia } from 'pinia'
          import App from './App.vue'
          import router from './router'
      
          console.log("this is mobile")
      
          const app = createApp(App)
          // 给个运行时Log
          app.use(createPinia())
          app.use(router)
          app.mount('#app')
      
          /** ***************************************** */
      
          // 文件: Root: src/pc-main.ts
          import './assets/main.css'
          /** ...类似的... */
          console.log("this is pc")
          /** ...类似的... */
      
    • // 文件: Root: package.json
      {
          "scripts": {
              "dev": "vite --mode pc",
              "devm": "vite --mode mobile", 
          }
      }
      
    • // 可选 修改一下build产物目录
      // 文件: Root: vite.config.ts
      export default defineConfig(({command, mode, ssrBuild}) => {
          return {
              // 输出一个pc端 一个 mobile端
              build: {
                  outDir: `project-${mode}`,
              },
          }
      });
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值