后台编译 uni-app 工程
1.0 介绍
需求是要在后端对 uni-app
进行管理(非 Hbuilder
),根据官方文档了解到,只有使用 vue-cli
创建的项目才能用命令行进行编译,所以对 uni-app
骨架进行修改。
由于
HBuilderx
更新过于频繁,会导致移动端小程序兼容很麻烦,所以需要到后端统一版本打包。
2.0 重构骨架
将之前
HBuilderx
创建的工程,复制到了src
下面
2.1 重构前
┌─api 接口封装
├─common 常用库封装
│─components 符合vue组件规范的uni-app组件目录
│ └─comp-a.vue 可复用的a组件
├─hybrid App端存放本地html文件的目录,详见
├─platforms 存放各平台专用页面的目录,详见
├─pages 业务页面文件存放的目录
│ └─index
│ └─index.vue index页面
├─static 存放应用引用的本地静态资源(如图片、视频等)的目录,注意:静态资源只能存放于此
├─uni_modules 存放[uni_module](/uni_modules)规范的插件。
├─main.js Vue初始化入口文件
├─App.vue 应用配置,用来配置App全局样式以及监听 应用生命周期
├─manifest.json 配置应用名称、appid、logo、版本等打包信息,详见
└─pages.json 配置页面路由、导航条、选项卡等页面类信息,详见
2.2 重构后
├─.hbuilderx
├─dist
│ ├─build
│ ├─dev
│ └─release
├─node_modules
├─public
├─src
├ ├─api
│ │ ├─pai-ui
│ │ └─uview-ui
│ │ └─locales
├ ├─common
│ │ └─uview-ui
├ ├─components
│ │ ├─flyrise
│ │ └─page-nav
├ ├─pages
│ │ ├─pai-ui
│ │ └─uview-ui
├ ├─static
│ │ ├─pai-ui
│ │ │ ├─attach
│ │ │ ├─home
│ │ │ ├─list
│ │ │ └─login
│ │ └─uview
│ │ ├─common
│ │ └─example
├ └─utils
├ └─luch-request
│ ├─adapters
│ ├─core
│ └─helpers
├─.gitignore
├─babel.config.js
├─package.json
├─package-lock.json
├─postcss.config.js
├─README.md
└─tsconfig.json
3.0 编译命令
npm run dev:%PLATFORM%
npm run build:%PLATFORM%
%PLATFORM%
可取值如下:
值 | 平台 |
---|---|
app-plus |
app平台生成打包资源(支持npm run build:app-plus ,可用于持续集成。) |
h5 |
H5 |
mp-alipay |
支付宝小程序 |
mp-baidu |
百度小程序 |
mp-weixin |
微信小程序 |
mp-toutiao |
字节跳动小程序 |
mp-qq |
qq 小程序 |
mp-360 |
360 小程序 |
quickapp-webview |
快应用(webview ) |
quickapp-webview-union |
快应用联盟 |
quickapp-webview-huawei |
快应用华为 |
4.0 注意事项
- 目前使用
npm run build:app-plus
会在/dist/build/app-plus
下生成app打包资源。如需制作wgt包,将app-plus
中的文件压缩成zip
(注意:不要包含app-plus目录
),再重命名为${appid}.wgt
,appid
为manifest.json
文件中的appid
。 dev
模式编译出的各平台代码存放于根目录下的/dist/dev/
目录,打开各平台开发工具选择对应平台目录即可进行预览(h5
平台不会在此目录,存在于缓存中);build
模式编译出的各平台代码存放于根目录下的/dist/build/
目录,发布时选择此目录进行发布;dev
和build
模式的区别:dev
模式有SourceMap
可以方便的进行断点调试;build
模式会将代码进行压缩,体积更小更适合发布为正式版应用;- 进行 环境判断 时,
dev
模式process.env.NODE_ENV
的值为development
,build
模式process.env.NODE_ENV
的值为production
。
5.0 编译器区别
cli
创建的项目,编译器安装在项目下。并且不会跟随HBuilderX
升级。如需升级编译器,执行npm update
,或者手动修改package.json
中的 uni 相关依赖版本后执行npm install
。更新后可能会有新增的依赖并不会自动安装,手动安装缺少的依赖即可。HBuilderX
可视化界面创建的项目,编译器在HBuilderX
的安装目录下的plugin
目录,随着HBuilderX
的升级会自动升级编译器。- 已经使用
cli
创建的项目,如果想继续在HBuilderX
里使用,可以把工程拖到HBuilderX
中。注意如果是把整个项目拖入HBuilderX
,则编译时走的是项目下的编译器。如果是把src
目录拖入到HBuilderX
中,则走的是HBuilderX
安装目录下plugin
目录下的编译器。 cli
版如果想安装less
、scss
、ts
等编译器,需自己手动npm
安装。在HBuilderX
的插件管理界面安装无效,那个只作用于HBuilderX
创建的项目。
6.0 更新编译器版本
- 查看
HBuilderX
对应的NPM
依赖版本: 打开 @dcloudio/vue-cli-plugin-hbuilderx"target="_blank">NPM
版本记录,版本号 2.0.0- 后面是与HBuilderX
对应的版本号且小版本不会超过9,比如HBuilderX
2.7.5.20200518 对应的版本号 2.0.0-27520200518001,2.0.0-271420200618 对应的为 2.0.0-27920200618002。 - 批量修改
package.json
中uni
相关依赖为指定的版本号(去掉版本号前面 ^)。 - 对于有变化的依赖进行增删,提示不存指定版本的依赖可以保留原始版本或者删除,运行时提示缺少的依赖自行安装。
7.0 中台对接
中台微应用中,使用的是编译后的
wgt
文件,所以需要后台对接一下
- 全局安装
vue-cli
npm install -g @vue/cli
- 使用
vue-cli
创建工程(或者直接使用开发者上传的项目)vue create -p dcloudio/uni-preset-vue my-project
- 使用
vue-cli
对小程序项目进行编译:
npm run build:app-plus
编译成功后,根目录
/dist/build/app-plus
会生成app打包资源;将
app-plus
中的文件压缩成zip
(注意:不要包含app-plus目录
),再重命名为${appid}.wgt
;然后
wgt
文件上传到此工程的服务端(建议自动上传,并去除之前的手动上传动作)。
pai deploy micro -n pai-demo -t d:\work\__UNI__3D0884F.wgt -v 1.0.0 //建议移除
8.0 H5
资源部署
8.1 DCloud
云部署
前端网页托管
基于uniCloud
的能力,为开发者的html
网页提供更快速、更安全、更省心、更便宜的网站发布。
- 更快速:不经过web server,页面和资源直接上
cdn
,就近访问,速度更快。 - 更安全:不存在传统服务器各种操作系统、
web server
的漏洞。不怕DDoS
攻击,永远打不垮的服务。 - 更省心:无需再购买虚拟机、安装操作系统、配置web服务器、处理负载均衡、处理大并发、处理
DDoS
攻击……您什么都不用管,只需上传您写的页面文件 - 更便宜:
uniCloud
由DCloud
联合阿里云和腾讯云推出,其中阿里云版本完全免费。
前端网页托管
,自带一个测试域名,仅用于产品体验及测试可快速体验前端网页部署的完整流程,该域名有如下限制:
- 阿里云每分钟最多60次请求,默认每日仅允许10个公网
IP
访问,超出部分,需通过手动方式将来源IP
加入白名单,IP
白名单也会有数量限制 - 腾讯云限速
100K/s
8.2 基于前端工程重构
基于前端的Nuxtjs
对小程序重构,开发一个快速发布小程序H5
界面前端工程骨架,开发小程序之后,将编译后的H5
界面放到nuxtjs
工程中。
9.0 pages.json
配置
小程序的
pages.json
中配置微应用的界面信息,在打包微应用时,会自动上传。
序号 | 字段名 | 类型 | 默认值 | 描述 | 微应用入口 |
---|---|---|---|---|---|
1 | path |
String | 默认路由 | 微应路径,小程序默认路由参数 | 必填 |
2 | paiUserGroup |
String | B:企业方 | 使用身份(P:园区方 B:企业方 C:公众方) | 必填 |
3 | paiName |
String | 空 | 微应用名称 | 必填 |
4 | paiType |
String | APP |
类型 H5 / APP |
非必填 |
5 | paiDesc |
String | 空 | 描述 | 非必填 |
6 | paiParams |
字符串数组 | 空 | 参数 | 非必填 |
10.0 模板管理
方便用户选择自己需要的模板,能够快速开始开发
11.0 图片资源管理
用来管理小程序开发过程中的图片资源,方便移动端快速开发
文档更新时间: 2022-04-22 14:04 作者:陈冕