摘要:由于市场的需求不断变化,原有的开发环境和生产环境已经无法满足需求,多环境开发已经是越来越多的公司要面临的问题。本文先介绍如何将HBuilderX创建的uni-app项目转换成vue-cli项目,紧接着通过cross-env实现多环境的配置,最后通过配置文件和git分支实现不同环境下不同需求的多变开发。

提醒:本站中关于使用uni-app进行跨端开发小程序的文章已经分享过7篇,有兴趣的可以善用导航栏上的搜索功能。下面我们来聊聊多环境开发这件事,注意不是只有生产和开发环境,是三个以上的环境哦!

接触过uni-app的看官都知道通过HBuilderX创建的项目默认只支持两种开发模式的,分别是:开发环境development和生产环境production。这两种模式对于大多数项目都是适用的,但近年来有些公司可能会搞出个预上线版或灰度测试。那这个时候,原有的两种默认环境就无法满足开发需求了。为了解决这个问题,强大的HBuilderX又提供了通过vue-cli脚手架的方式来开发项目。

鉴于很多看官的项目都是直接通过HBuilderX工具创建而非通过命令行来创建,那我们的第一个问题是要将HBuilderX创建的项目转成vue-cli脚手架开发。对于这个难题,我们在官方问答中能够找到答案。戳我访问→→《uni-app HBuilderX 工程与 vue-cli 工程相互转换》

官方写的很简洁,只有三个步骤。

  • 使用 vue-cli 新建空工程
  • 将 HBuilderX 工程内的文件(除 unpackage、node_modules
    目录)拷贝至 vue-cli 工程内 src 目录
  • 在 vue-cli 工程内重新安装 npm 依赖(如果之前使用了 npm
    依赖的话)

一、实战演练

官方给出的方案是先用vue-cli创建一个项目,然后把我们的项目再复制到新项目中,而实际的情况多半是我们要把原项目直接替换成vue-cli版的。那怎么办呢?

当时我的做法是:先用vue-cli创建一个跟原项目使用同样模板的项目,然后把配置文件package.json与原项目进行对比,把多出来的一堆设置复制到原项目里面,然后再执行npm init重装项目依赖。

上面这一步只是解决了node包的问题,接下来在原项目中创建src目录,然后按需求将其他文件移动到src目录中。

为了验证项目是否转换成功,在项目根目录下执行npm run dev:mp-weixin即可。

本来我以为用vue-cli创建的项目会自动打开微信开发者工具,可实际上并没有,需要你手动打开微信开发者工具并设置才行。命令行无法打开微信小程序开发者工具这个小缺陷会在下一篇中进行解决,今天主要解决多环境开发的问题。

二、手动配置多环境

现在,我们的项目可以正常跑起来了。那如何配置多环境呢?继续打开package.json文件,在"scripts"中可以看到很多自定义的命令。例如:

"scripts": {"serve": "npm run dev:h5","build": "npm run build:h5","build:app-plus": "cross-env NODE_ENV=production UNI_PLATFORM=app-plus vue-cli-service uni-build","build:custom": "cross-env NODE_ENV=production uniapp-cli custom","build:h5": "cross-env NODE_ENV=production UNI_PLATFORM=h5 vue-cli-service uni-build","build:mp-360": "cross-env NODE_ENV=production UNI_PLATFORM=mp-360 vue-cli-service uni-build","build:mp-alipay": "cross-env NODE_ENV=production UNI_PLATFORM=mp-alipay vue-cli-service uni-build","build:mp-baidu": "cross-env NODE_ENV=production UNI_PLATFORM=mp-baidu vue-cli-service uni-build","build:mp-kuaishou": "cross-env NODE_ENV=production UNI_PLATFORM=mp-kuaishou vue-cli-service uni-build","build:mp-qq": "cross-env NODE_ENV=production UNI_PLATFORM=mp-qq vue-cli-service uni-build","build:mp-toutiao": "cross-env NODE_ENV=production UNI_PLATFORM=mp-toutiao vue-cli-service uni-build","build:mp-weixin": "cross-env NODE_ENV=production UNI_PLATFORM=mp-weixin vue-cli-service uni-build","build:quickapp-native": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-native vue-cli-service uni-build","build:quickapp-webview": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview vue-cli-service uni-build","build:quickapp-webview-huawei": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview-huawei vue-cli-service uni-build","build:quickapp-webview-union": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview-union vue-cli-service uni-build","dev:app-plus": "cross-env NODE_ENV=development UNI_PLATFORM=app-plus vue-cli-service uni-build --watch","dev:custom": "cross-env NODE_ENV=development uniapp-cli custom","dev:h5": "cross-env NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve","dev:mp-360": "cross-env NODE_ENV=development UNI_PLATFORM=mp-360 vue-cli-service uni-build --watch","dev:mp-alipay": "cross-env NODE_ENV=development UNI_PLATFORM=mp-alipay vue-cli-service uni-build --watch","dev:mp-baidu": "cross-env NODE_ENV=development UNI_PLATFORM=mp-baidu vue-cli-service uni-build --watch","dev:mp-kuaishou": "cross-env NODE_ENV=development UNI_PLATFORM=mp-kuaishou vue-cli-service uni-build --watch","dev:mp-qq": "cross-env NODE_ENV=development UNI_PLATFORM=mp-qq vue-cli-service uni-build --watch","dev:mp-toutiao": "cross-env NODE_ENV=development UNI_PLATFORM=mp-toutiao vue-cli-service uni-build --watch","dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch",......
}

可以看到这里默认使用了cross-env来设置NODE_ENV的值为开发环境还是生产环境。如果我们想再添加一个预上线的环境,可以这样设置:

"scripts": {......"dev:mp-weixin-pre": "cross-env NODE_ENV=pre UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch",......
}

为了检测NODE_ENV到底有没有被修改,我们可以在main.js文件中添加一行日志输出,代码为:

console.log('当前环境:', process.env.NODE_ENV)

这个时候再在命令行中输入npm run dev:mp-weixin-pre并回车,然后打开微信小程序开发者工具看控制台输出信息。如图:通过cross-env来设置NODE_ENV的值为预上线.png

三、不同环境下的配置

刚刚我们已经解决了多环境的问题,现在离胜利越来越近了。由于不同项目对多环境配置的要求不一样,这里艺灵罗列自己曾经在实际项目中遇到的一些情况供大家参考。

3.1、简单模式:仅域名有更换

说实话,这种变动是最小的了。为了维护域名,通常情况下我们会创建一个单独的配置文件,将域名放到这个文件中。有用到的地方直接调用或者是挂载到全局上,方便后期更换。那些仍有将域名写到单个文件中习惯的看官一定要吸取教训,否则下次让你搞多环境配置时,光是替换域名就会花费你很长时间!

艺灵的配置文件代码如下:

const GLOBALCONFIG = {VUE_APP_BASE_API: 'https://api.xxxx.com/api', // api请求地址VUE_APP_PREVIEW_PICTURE: 'https://cdn.xxx.com/', // 图片域名VUE_APP_TITLE : '当前是开发环境'
}
if (process.env.NODE_ENV === 'development') {// 开发环境
} else if (process.env.NODE_ENV === 'test') {GLOBALCONFIG.VUE_APP_TITLE = '当前是测试环境'
} else if (process.env.NODE_ENV === 'pre') {GLOBALCONFIG.VUE_APP_BASE_API = 'https://xxx.com/api'GLOBALCONFIG.VUE_APP_PREVIEW_PICTURE = 'https://cdn.xxx.com/'GLOBALCONFIG.VUE_APP_TITLE = '当前是预发布环境'
} else if (process.env.NODE_ENV === 'production') {GLOBALCONFIG.VUE_APP_BASE_API = 'https://xxx.com/wxapis'GLOBALCONFIG.VUE_APP_PREVIEW_PICTURE = 'https://cdn.xxx.com/'GLOBALCONFIG.VUE_APP_TITLE = '当前是正式环境'
}
console.log('当前环境:', process.env.NODE_ENV, ';title=', GLOBALCONFIG.VUE_APP_TITLE)
module.exports = GLOBALCONFIG

上面的代码中共提供了2处变量修改,一个是api的请求地址,一个是图片的cdn地址,看官可以在实际项目中根据情况进行修改。

3.2、困难模式:域名、APPID、标题全都有更换

说实话,这种情况确实挺难搞的。别看刚才艺灵提供了一个全局的配置,但要知道微信小程序的APPID和标题并不是通过这个config.js文件就能修改的!真正要修改的是那个叫manifest.json的文件哈。

那怎么办呢?

此时有两种方法:
1、切换不同环境前手动修改;
2、不同环境先创建不同的git分支,然后修改对应的APPID、页面标题。

对于这两种方法,优缺点还是很明显的,详情见下方表格。

方法 优点 缺点
每次切换时手动修改相关的文件 1、耗时; 2、易出错
git分支控制 方便省事 不同环境的分支要同步代码

那有没有更简洁的方法呢?答案是有的,详情见明天的文章《uni-app跨端开发微信小程序之手把手带你写一个用程序自动打开微信开发者工具的小插件》。

四、最后

行文至此,文章开头提及的问题都已提到解决。今天的文章虽然短小,但仍不要大意,明天将为各位看官奉上一份比较干的干货文章,敬请期待哈。

最后艺灵祝大家5.1节日快乐,出门在外玩的开心!

注:原文首发于艺灵设计,戳我阅读原文

uni-app跨端开发微信小程序之HBuilderX项目实现多环境开发相关推荐

  1. 微信小程序电商项目商品详情页开发实战之数据绑定与事件应用

    各位CSDN的朋友,我们都知道,现在微信小程序电商平台特别火爆,所以我将以一个生鲜电商项目为例,为大家讲述微信小程序的实战化开发,价值几万元的成熟项目,你可千万不要错过哦. 大家直接通过视频链接直接看 ...

  2. 开发微信小程序的作用

    现在微信使用量已经突破十亿,可以说大多数网民每日必用的软件,因为背靠着微信的流量池,这就让小程序的推广和营销都变得更简单,所以企业开发个小程序对企业能带来更多的流量与好处.随走随用的小程序,扫一扫,搜 ...

  3. 开发微信小程序(uniapp)

    @2021SC@SDUSC WebStorm开发微信小程序(uniapp) 创建项目 采用cli方式创建的项目 vue create -p dcloudio/uni-preset-vue my-pro ...

  4. c vscode 高亮_vscode怎么高亮打开wpy文件开发微信小程序

    原本想用mpvue来开发小程序的,后面决定使用wepy来开发,踩坑开始,哈哈. 安装使用 安装(更新) wepy 命令行工具. npm install wepy-cli -g 生成开发示例 wepy ...

  5. vsCode 开发微信小程序插件

    用 vsCode 开发微信小程序可以配置以下插件,让开发更美好: 1. vscode weapp api 2. vscode wxml 3. vscode-wechat 4. Easy WXLESS ...

  6. uni app 开发微信小程序及上线体验

    uni app 开发微信小程序及上线体验 项目创建及微信小程序AppId的申请 本次开发的是电商类的微信小程序,这里用到的是HBuilderX这个编辑器.之前用的Visual Studio Code ...

  7. uni-app快速开发微信小程序、h5、和app

    过年在家无聊,尝试使用uni-app开发微信小程序,发现这个框架的跨端功能非常强大,几乎能直接从vue移植过来 下面是项目架构图 应用截图 技术栈: 后端 node +mysql 抓取各大视频网站的数 ...

  8. uni开发微信小程序解决全局分享分销问题

    uni开发微信小程序解决全局分享分销问题 1. 需求 1.小程序内每个页面都要打开胶囊分享按钮并实现分销 2.分享功能应该是在用户登录之后才予以打开 3.不想做在每个页面都写分享钩子的傻逼操作 2.实 ...

  9. 移动端App分享,以及微信小程序和公众号分享功能实现

    移动端App分享,以及微信小程序和公众号分享功能实现 分享功能记录收藏,上链接 前端工作记录

最新文章

  1. 智能车竞赛技术报告 | 双车接力组 - 辽宁工业大学 - 灵越1队
  2. 一套Windows上C/C++的编码转换函数
  3. mvc 实例 php,来写一个简单的PHP MVC结构
  4. JavaScript实现eulerianPath欧拉路径算法(附完整源码)
  5. 设置隐藏文件的显示与隐藏方法
  6. 在php中构造函数的作用,php构造函数的作用
  7. 对象方法(包含es6)
  8. STN可以增强CNN网络
  9. cf1107e uva10559区间dp升维
  10. BeautifulSoup4 find_all搜索包含指定文本内容的标签返回空list的问题
  11. [转载] python十个程序_程序猿开发Python的十个基本入门技巧?
  12. itexpdf同一个段落不同文字,如何设置不同的格式
  13. 我希望进入大学时就能知道的一些事儿
  14. 国内首届 Flutter Festival 为热爱开启!
  15. 《被讨厌的勇气》摘抄
  16. 常用的html标签及用法,html常用标签及其属性用法
  17. Android Studio + Esp32Cam 实现手机APP实时传输监控视频
  18. 同卵双胞胎的2型糖尿病的易感性位点的综合表观基因分析
  19. 哈佛研究:9个让你变穷的理由
  20. 给 Linux 系统“减肥”,系统垃圾清理

热门文章

  1. Laravel8集成 Geetest 极验验证码
  2. VAMP由浅入深(Part-1:由消息传递直接推导)
  3. 聊聊身边的嵌入式,价格不菲的运动手表
  4. 运动手表演示-支持 H5,Android,微信小程序
  5. windows11电脑右下角没有输入法解决方法
  6. (一)MATLAB基础知识
  7. 模拟建行网上支付页面通知
  8. 美国诚实签经验——医院预约单和医院资料,医生预约收据和报价表,赴美预算,赴美行程,保险是加分项,工作证明(勾出职位和薪酬),附上名片或者工卡,全家福照片...
  9. html+css不换行的解决办法
  10. WinForm_2一个简单实用的小应用——桌面时钟