首页 > 编程语言 >基于taro搭建小程序多项目框架

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

时间:2024-01-22 11:13:34浏览次数:42  
标签:const 框架 -- app 程序 taro require 搭建

前言

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

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

起步

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

初始化taro项目

taro init miniApp

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

打开项目安装依赖

pnpm install

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

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

改造(支持多小程序)

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

  • config下面是一些小程序以及webpack的配置
  • src下面是我们小程序的项目代码
  • project.config.json是当前小程序配置文件
  • ...

改造目录

src目录下新增目录:appscommon

  • apps:小程序目录,存放各个小程序的代码
  • common:公用目录,存放公用组件及业务逻辑代码

apps

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

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

比如:nanjiu、nanjiu_notebook两个小程序

common

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

修改配置

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(`

标签:const,框架,--,app,程序,taro,require,搭建
From: https://www.cnblogs.com/songyao666/p/17979605

相关文章

  • Flutter框架渲染流程与使用
    转自:https://www.cnblogs.com/zhou--fei/p/17068412.html Flutter简述Flutter是一个UI框架,可以进行移动端(iOS,Android),Web端,桌面端开发,它是一个跨平台解决方案。Flutter的特点:美观,快速,高效,开放。美观:Flutter内置了美丽的MaterialDesign和Cupertinowidget,方便开发出美......
  • Ray一个通用分布式计算框架基本使用
      Ray一个开源的通用分布式计算框架,支持传统的并行任务并支持AI模型的分布式训练,分布式任务包括有状态与无状态任务,Ray能够快速的构建分布式系统,支持按需申请CPU或GPU;Ray提供了统一的接口提供了基于任务的并行计算与基于行动器的计算,前者通常用于无状态的任务后者用于有状态的任......
  • 无涯教程-CodeIgniter - MVC框架
    CodeIgniter基于模型-视图-控制器(MVC)开发模式。MVC是一种将应用程序逻辑与表示分离的软件方法。Model    - 代表数据模型,主要跟数据库打交道,实现无涯教程的CURD封装。View      - 是前台展示给用户看的界面。Controller - Model和View的桥梁......
  • 在WSL2下的Ubuntu中搭建android开发环境
    关闭虚拟机wsl--shutdown 查看虚拟机是否已经关闭wsl--list--running 在Win11下开启嵌套的VMnotepad%USERPROFILE%\.wslconfig.txt[wsl2]nestedVirtualization=true 安装JDK并配置环境变量sudoaptinstallopenjdk-17-jdk-y vi~/.profileexportJAVA_HOME=......
  • 使用Gin框架往数据库插入记录
    首先往数据库插入数据,就需要连接数据库(笔者此处使用的是PostgreSQL)因此在项目中引入如下依赖(这两个依赖版本号不一致,可能会出现异常)gorm.io/driver/postgres  //依赖是用于连接和操作PostgreSQL数据库gorm.io/gorm  //对象关系映射(ORM)库,简化Golang程序与数据库......
  • Github图床搭建,结合Picgo与jsdelivr的免费cdn加速,以及部分问题解决方案
    留份文档,便于后续查询===================用到的地址:Github:GitHubPicgo:PicGoisHere|PicGojsdelivr加速地址:https://cdn.jsdelivr.net/gh/Github用户名/仓库名@master===================1.创建一个GitHub仓库:进入你的GitHub首页,在右上角你会找到一个➕,在下拉菜单中......
  • ohos.router (页面路由) 框架
    UIAbility概述UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。每一个UIAbility实例,都对应于一个最近任务列表中的任务。一个应用可以有一个UIAbility,也可以有多个UIAbility,如下图所示。例如浏览器......
  • 模块,包,库,框架的使用
    一、模块Module 模块是一个变量、数组、函数和类的集合。另外,模块是一种以.py为后缀的文件,用于表示程序的一部分,模块的名称是该.py文件的名称。模块的名称**作为一个全局变量__name__**的取值可以被其他模块获取或导入。 模块的导入通过ipmort来实现,导入模块的方式如下: i......
  • C# TEKLA STRUCTURES 2022 二次开发 开发环境搭建
    初步接触二次TEKLA,以下仅为个人观点使用的exe方式开发的引用的nuget包程序入口点稍作处理,开启了TEKLA软件才能启动本程序,TEKLA软件关闭,本程序退出internalstaticclassProgram{///<summary>///应用程序的主入口点。///</summary>......
  • 【深入浅出JVM原理及调优】「搭建理论知识框架」全方位带你深度剖析Java线程转储分析
    专栏介绍学习JVM需要一定的编程经验和计算机基础知识,适用于从事Java开发、系统架构设计、性能优化、研究学习等领域的专业人士和技术爱好者。前提准备编程基础:具备良好的编程基础,理解面向对象编程(OOP)的基本概念,熟悉Java编程语言。数据结构与算法:对基本的数据结构和算法有一定了解,理......