700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Taro项目分包

Taro项目分包

时间:2023-09-03 05:19:42

相关推荐

Taro项目分包

背景

近期公司项目要将其他项目引进现有小程序,考虑到代码维护的问题,决定用分包注入的方式来实现。

整体流程

1、选择正确的Taro版本

2、安装编译插件

3、编译输出混合模式的代码

4、移动打包好的文件到主项目小程序目录下

操作流程

安装Taro

Taro v3.1.4 开始支持原生混合,因此,Taro版本的选择需要在3.1.4以上。

安装编译插件

安装插件 @tarojs/plugin-indie

npm i @tarojs/plugin-indie --save-dev

使用插件

// config/index.jsconst config = {plugins: ['@tarojs/plugin-indie'],}

编译项目时,使用--blended参数以输出混合模式的代码。

# 以混合模式进行打包 $ taro build --type [platform] --blended

引入 @tarojs/plugin-mv 插件,自动化挪动打包后的文件

// plugin-mv/index.jsconst fs = require('fs-extra')const path = require('path')export default (ctx, options) => {ctx.onBuildFinish(() => {// Taro v3.1.4const blended = ctx.runOpts.blended || ctx.runOpts.options.blendedif (!blended) returnconsole.log('编译结束!')const rootPath = path.resolve(__dirname, '../..')const miniappPath = path.join(rootPath, 'miniapp')const outputPath = path.resolve(__dirname, '../dist')const destPath = path.join(miniappPath, 'taro')if (fs.existsSync(destPath)) {fs.removeSync(destPath)}fs.copySync(outputPath, destPath)console.log('拷贝结束!')})}

在配置文件中添加plugin-mv插件

// config/index.jsconst path = require('path')const config = {// ... plugins: [ '@tarojs/plugin-indie', [path.join(process.cwd(), '/plugin-mv/index.js')] ]// ... }

重新打包,这样就可以将项目文件打包到主项目小程序对应的路由文件中去了。

之后,我们在主项目小程序中,在app.json中添加对应的路由,就完成了。

遇到的问题

分包注入后,进入分包页面,经常提示重复注册页面

Please do not register multiple Pages in comp.js

排查结果是主包和分包加载的文件都使用了同个变量,用jsonpFunction配置即可解决问题。

// config/index.jsconfig = {mini: {webpackChain (chain) {chain.merge({output: {// 可以配合 npm script 和环境变量来动态修改jsonpFunction: process.env.JSONP_NAME || "webpackJsonp"}})}}}

思考

分包如何实现环境域名可配置

由于分包的项目是先编译打包出来的,因此,项目中的接口调用使用的域名也是预定的,所以,如何实现分包域名随着主包域名变化,实现开发、测试、生产同步,是目前困扰到我的。当然,也有以下几个方案,但我仍旧觉得不够完美。

方案一

前端开发可配置页面,手动切换域名。(该页面需隐藏,且每次都需手动切换)

方案二

后端开发接口,此接口不区分环境,由接口返回所需使用的域名

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。