基于taro搭建小程序多项目框架

这篇具有很好参考价值的文章主要介绍了基于taro搭建小程序多项目框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

为什么需要这样一个框架,以及这个框架带来的好处是什么?

从字面意思上理解:该框架可以用来同时管理多个小程序,并且可以抽离公用组件或业务逻辑供各个小程序使用。当你工作中面临这种同时维护多个小程序的业务场景时,可以考虑使用这种模式。灵感来自最近webpack的多项目打包构建

起步

首先你得先安装好taro脚手架,然后基于该脚手架生成一个taro项目

初始化taro项目

taro init miniApp

基于taro搭建小程序多项目框架,taro,小程序,apache

这是我选择的初始化配置,你当然也可以选择其它模版,只要编译工具选择webpack就可以,下面的步骤基本相同

打开项目安装依赖

pnpm install

基于taro搭建小程序多项目框架,taro,小程序,apache

这样一个基本的taro项目就生成好了,但这样只是生成了一个小程序,那我们如果有许多个小程序是不是还要按上面这些步骤继续生成,当然不需要,这样不仅费时间,而且难以维护。

下面我们就来把这个框架改造成支持同时管理多个小程序。

改造(支持多小程序)

此时的项目结构是这样的:

基于taro搭建小程序多项目框架,taro,小程序,apache

  • config下面是一些小程序以及webpack的配置

  • src下面是我们小程序的项目代码

  • project.config.json是当前小程序配置文件

  • ...

改造目录

src目录下新增目录:appscommon

  • apps:小程序目录,存放各个小程序的代码

  • common:公用目录,存放公用组件及业务逻辑代码

apps

这里每个小程序对应一个文件夹,里面存放对应小程序的代码

这里需要把根目录下的project.config.json放到小程序目录下,因为每个小程序都需要自己的配置文件

比如:nanjiu、nanjiu_notebook两个小程序

基于taro搭建小程序多项目框架,taro,小程序,apache

common

这里主要是存放公用代码:组件、业务、请求

基于taro搭建小程序多项目框架,taro,小程序,apache

修改配置

config/index.js

import path from 'path'
const app = process.env.APP

const config = {
  projectName: 'mini_app',
  date: '2024-1-21',
  designWidth: 750,
  deviceRatio: {
    640: 2.34 / 2,
    750: 1,
    828: 1.81 / 2
  },
  sourceRoot: `src/apps/${app}`, // 项目源码目录
  outputRoot: `${app.toUpperCase()}APP`,  // 打包产物目录
  alias: {
    '@/common': path.resolve(__dirname, '..', 'src/common'), // 别名配置
  },
// ....

module.exports = function (merge) {
  if (process.env.NODE_ENV === 'development') {
    return merge({}, config, require('./dev'))
  }
  return merge({}, config, require('./prod'))
}

这里需要注意的是sourceRoot,因为要支持多小程序,那么这里就不能固定写死了,我们可以在启动时通过传参来区分当前启动或打包哪个小程序。

自定义构建脚本

在项目根目录新建文件夹build存放构建脚本

// cli.js
const shell = require('shelljs')
const fs = require('fs')
const path = require('path')
const inquirer = require('inquirer')


const action = process.argv[2]
let app =  process.argv[3]
const runType = action == 'dev' ? '启动': '打包'

function start() {
  // 处理配置文件
  process.env.APP = app
  console.log(`🚀🚀🚀🚀🚀🚀正在${runType}小程序:${app}`)
  let cmd = ''
  if(action == 'dev') {

    cmd = `taro build --type weapp --watch --app ${app}`

  } else {

    cmd = `taro build --type weapp --app ${app}`

  }

  const child = shell.exec(cmd, {async:true})
  child.stdout.on('data', function() {
    // console.log(data)
  })
}
// ...

start()

配置脚本命令

//package.json

// ...

"scripts": {
  "start": "node build/cli.js dev",
  "build": "node build/cli.js build",
}

验证

所有工作完成后,可以来看看这个框架能不能满足我们的需求

基于taro搭建小程序多项目框架,taro,小程序,apache

命令执行成功,项目根目录下会生成对应的小程序代码

基于taro搭建小程序多项目框架,taro,小程序,apache

再把该产物使用小程序开发者工具看是否能跑起来

基于taro搭建小程序多项目框架,taro,小程序,apache

这边能够跑起来,就说明打包没有问题了,同样可以验证其它的小程序

优化构建脚本

多小程序架构搭建完,有同事反馈启动报错,我心想:不能吧,我自己都验证过了,从报错信息上看他应该是启动时没输入需要启动的小程序,直接pnpm start了,这样的话就不知道应该启动哪个小程序了。其实启动命令已经在项目文档上写了,可能是没注意看。

那就只能优化优化,尽量避免这种情况,这里主要的逻辑是如果没有输入指定的的小程序,通过inquirer开启交互式命令,让他选择要启动哪个小程序。

// cli.js
const shell = require('shelljs')
const fs = require('fs')
const path = require('path')
const inquirer = require('inquirer')

const action = process.argv[2]
let app =  process.argv[3]
const runType = action == 'dev' ? '启动': '打包'

if(!app) {
  openInquirer()
  return
}

// 未输入项目名称则开启交互命令行
function openInquirer() {
  const projectList = fs.readdirSync(path.resolve(__dirname, '../src/apps'))
  // 过滤隐藏文件
  projectList.forEach((item, index) => {
    if(item.indexOf('.') == 0) {
      projectList.splice(index, 1)
    }
  })
  const promptList = [
    {
      type: 'list',
      message: '🚗请选择启动的小程序:',
      name: 'pro',
      choices: [...projectList],
    },
  ]
  inquirer.prompt(promptList).then((answers) => {
    app = answers.pro
    start()
  })
}
function start() {
  // 处理配置文件
  process.env.APP = app
  console.log(`🚀🚀🚀🚀🚀🚀正在${runType}小程序:${app}`)
  let cmd = ''
  if(action == 'dev') {

    cmd = `taro build --type weapp --watch --app ${app}`

  } else {

    cmd = `taro build --type weapp --app ${app}`

  }

  const child = shell.exec(cmd, {async:true})
  child.stdout.on('data', function() {
    // console.log(data)
  })
}

start()

基于taro搭建小程序多项目框架,taro,小程序,apache

这样就大功告成了!!!

文章转载自:前端南玖

原文链接:https://www.cnblogs.com/songyao666/p/17979605

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构文章来源地址https://www.toymoban.com/news/detail-820619.html

到了这里,关于基于taro搭建小程序多项目框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • taro+vue3 搭建一套框架,适用于微信小程序和H5

    安装 Taro。可以在终端输入以下命令进行安装: 创建项目。使用以下命令创建 Taro+Vue3 项目: 其中,myApp 是项目名称。 进入项目并启动。使用以下命令进入项目并启动: 注意,需要先进入对应的目录再启动。 编写代码。在 src 目录下编写代码,可以像使用 Vue 开发 Web 应用程

    2024年02月10日
    浏览(58)
  • 基于taro开发微信小程序

    taro基于nodeJS 安装参考安装及使用 | Taro 文档 我这边是采用react来进行编写 使用 Taro 的  build  命令可以把 Taro 代码编译成不同端的代码,然后在对应的开发工具中查看效果。 Taro 编译分为  dev  和  build  模式 dev 模式(增加 --watch 参数)  将会监听文件修改 build 模式(去掉

    2024年02月09日
    浏览(34)
  • 反编译微信小程序,可导出uniapp或taro项目

    微信小程序反编译(全网通用) 微信小程序反编译 反编译主要分为四个阶段 操作流程 1. node.js安装 2. node安装模块 3. 开始反编译 4. 导入到微信开发者工具既可运行 微信小程序反编译 当碰到不会写的小程序功能时,正好看到隔壁小程序有类似的功能,一般都想借鉴一下,本

    2024年02月12日
    浏览(39)
  • 基于java中的SSM框架+微信小程序实现教务系统小程序项目演示【附项目源码】

    基于java中的SSM框架+微信小程序实现教务系统小程序演示 JAVA语言是目前软件市场上应用最广泛的语言开发程序。可以在多种平台上运用的,兼容性比较强,适应市面上大多数操作系统,不会出现乱码的现像,其扩展性和维护性都更好,具有分析问题和解决问题的能力,是面向

    2024年04月15日
    浏览(63)
  • 如何搭建一个基于vue2和element-ui的项目框架模板(两万四千字长文)

    使用vue script标签引入 如果只是单纯的使用vue,可以使用 script src=\\\"https://cdn.jsdelivr.net/npm/vue/dist/vue.js\\\"/script 直接引入 npm安装vue 使用npm安装vue需要先安装node.js,如果你的电脑未安装node,可以参考我的个人碰到的前端问题总结及解决方案2第15个问题先安装nvm(node version manager)

    2024年02月13日
    浏览(55)
  • 重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar)

    重写Sylar基于协程的服务器系列: 重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar) 重写Sylar基于协程的服务器(1、日志模块的架构) 重写Sylar基于协程的服务器(2、配置模块的设计) 重写Sylar基于协程的服务器(3、协程模块的设计) 重写

    2024年04月26日
    浏览(35)
  • Taro+NutUi 开发不同平台的小程序系列 -第一章节/项目多平台运行测试

    写在前面 今天开始我们写 Taro+NutUi 的文章,第一篇先从创建一个项目开始,后续我们持续增加功能,发布到不同的平台开发工具上看一下具体的渲染效果怎么样,之前 uniapp 也是支持各个平台发布的,甚至可以直接发布到 app 上,我前面的文章也写过,今天我们使用 Taro 将这

    2024年02月04日
    浏览(32)
  • 基于java中的SSM框架+小程序实现学校便捷食堂小程序演示【附项目源码+论文说明】

    基于java中的SSM框架+小程序实现学校便捷食堂小程序演示 随着互联网技术的不断发展,互联网已经渗透到我们生活的方方面面。随着移动设备的普及,我们的生活发生了翻天覆地的变化,这也对我们的日常生活产生了深远的影响。微信是腾讯于2011年发布的实时通信软件。随着

    2024年02月03日
    浏览(51)
  • 基于Taro + React 实现微信小程序半圆滑块组件、半圆进度条、弧形进度条、半圆滑行轨道(附源码)

    1、四个档位 2、可点击加减切换档位 3、可以点击区域切换档位 4、可以滑动切换档位 给大家提供一些实现思路,找了一圈,一些文章基本不能直接用,错漏百出,代码还藏着掖着,希望可以帮到大家 ts的写法风格 index.tsx      index.module.less 防抖的工具函数debounce 的详细代码

    2024年02月06日
    浏览(60)
  • Linux基于Apache服务搭建简易镜像站

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 安装Apache服务器 配置Apache服务器:编辑Apache配置文件 /etc/httpd/conf/httpd.conf 修改为: Apache配置文件末尾添加如下:配置虚拟主机 使用 httpd -t 命令检查配置文件是否书写错误:重启Apache服务器 创建镜像站目录 编写HTML代

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包