1. 什么是UniApp
UniApp 是一款基于 Vue.js 开发的跨平台框架,可以在一份代码基础上同时支持编译到 IOS、Android、H5、小程序等多个平台,大大提高了开发效率。UniApp 支持钉钉、微信、支付宝、QQ 等多个主流小程序平台,但是支持钉钉小程序的时间比较晚,需要使用 UniApp 2.5.0 或以上版本,并且需要在钉钉开发者平台创建小程序应用和配置安全域名才能进行开发和调试工作。
2. UniApp 开发钉钉小程序注意事项
2.1 支持度
目前 UniApp 支持钉钉小程序的能力还比较初级,一些小部件和功能还不支持,需要自己编写组件和 API 进行兼容和扩展。UniApp 支持度详情可以查看官网文档或者 GitHub 社区中的相关讨论。
2.2 开发环境搭建
在使用 UniApp 开发钉钉小程序之前,需要先配置好相应的开发环境。钉钉小程序开发需要使用到钉钉小程序开发者平台,需要先注册开发者账号并创建应用。在 Unity App 开发中,需要使用到uni-app 集成钉钉开放平台 SDK 指南的 Promise API 对钉钉基础能力进行调用。
...
import Promise from './plugins/promise/promise.js' // 导入 Promise
import DingTalkPC from './plugins/dingTalkPC/dingTalkPC.js' // 导入钉钉 PC 端 API
Vue.prototype.Promise = Promise
Vue.prototype.$dd = DingTalkPC // 注册全局方法
...
需要知道的是在使用 UniApp 开发钉钉小程序时,引用 UniApp 自定义组件的时候,需要在对应平台的页面上进行注册。代码如下:
// 在 page.json 中进行注册
{
"usingComponents": {
"van-button": "/static/vant/button/index"
}
}
3. 开发技巧
3.1 小程序
在开发 UniApp 钉钉小程序时,可以借助微信小程序和支付宝小程序的能力,避免出现钉钉小程序不支持的组件和 API,加快开发效率。在实际编码过程中,可以使用微信小程序的 WXML 和 WXSS,支付宝小程序的 AXML 和 ACSS 语法格式进行编码,并使用 UniApp 提供的 npm 包来模拟运行微信小程序和支付宝小程序。代码如下:
# main.js 文件中引入
import { createApp } from 'vue'
import App from './App'
const app = createApp(App)
// 模拟运行微信小程序
import mpvue from '@mpxjs/core'
import wxConfig from '@/mpx.config'
app.use(mpvue, {
...wxConfig,
tabBar: {
list: [
{
pagePath: '/pages/demo/index',
text: 'demo',
iconPath: '/static/tabBar/demo.png',
selectedIconPath: '/static/tabBar/demo_active.png'
}
]
}
}, {
appPlatform: 'wx'
})
// 模拟运行支付宝小程序
import { createMpApi } from '@mpxjs/alipay'
const mpxApi = createMpApi()
app.use(mpxApi, {
appPlatform: 'ali'
})
app.mount()
3.2 子应用
UniApp 支持子应用开发模式,可以将子应用编译成独立的小程序或者 H5 应用,也可以作为页面集成到主应用当中。在 UniApp 开发钉钉小程序时,可以将一些公共组件、功能模块和工具类封装成子应用,供其他页面进行调用,提高开发效率和代码复用性。在配置子应用的时候,需要在子应用的 manifest.json 文件中增加相应的配置信息。代码如下:
// 主应用的 main.js 文件进行注册
import { registerMicroApps, start } from 'qiankun'
registerMicroApps([
{
name: 'subapp1',
entry: '//localhost:8080/#/',
container: '#micro-app',
activeRule: '/subapp1',
props: {
name: 'subapp1'
}
}
])
start()
3.3 全局样式
在 UniApp 开发中,可以创建全局的样式文件,定义全局变量和样式类名。在钉钉小程序中,可以在 app.wxss 文件中进行全局样式的设置,并在 app.js 中配置 globalStyle。代码如下:
/* 导入 fusuma.css 文件 */
@import 'fusuma.css';
/* 定义全局变量 */
:root {
--primary-color: #1a8afb;
}
/* 定义全局 class */
.rtext {
font-weight: bold;
color: red;
}
/* 配置 globalStyle */
App({
globalStyle: {
navigationBarTextStyle: 'white',
navigationBarTitleText: 'UniApp Demo',
backgroundColor: '#eeeeee',
backgroundTextStyle: 'dark',
...其他样式
},
...
})
4. 编译和调试
4.1 编译命令
钉钉小程序开发流程和其他小程序开发流程类似,使用 UniApp 开发钉钉小程序时,需要先进行编译操作才能预览和上线代码。在 UniApp 中,使用以下命令进行编译:
npm run dev:dd // 开发环境编译
npm run build:dd // 生产环境编译
4.2 调试工具
钉钉小程序提供了自己的调试工具,可以在钉钉小程序开发者平台中下载。在使用 UniApp 进行钉钉小程序开发时,需要在钉钉小程序开发者平台中进行设置,启用 UniApp 的调试模式和调试功能。UniApp 中支持了 Vue.js 的 devtools 调试工具,可以在开发环境下调用 $flow 、$set 、$delete、$nextTick 等 Vue.js API 进行调试。
4.3 资源路径问题
钉钉小程序由于安全策略限制,要求所有的网络资源和本地资源都必须通过 HTTPS 协议进行访问,且必须都使用绝对路径进行引用。在 UniApp 开发钉钉小程序中,需要对资源路径进行设置和调整,使用钉钉小程序的 getApp().globalData.appPath 获取当前小程序的根目录,再根据相对路径设置资源的访问路径。代码如下:
getApp().globalData.appPath + '/static/images/logo.png'
5. 总结
UniApp 是一款非常优秀的跨平台开发框架,可以支持多种主流小程序平台和 H5 应用的开发。在使用 UniApp 进行钉钉小程序开发时,需要先配置好相应的开发环境和调试工具,了解钉钉小程序的支持度和限制策略。在编码过程中,需要遵循 UniApp 的开发规范和最佳实践,尽量避免钉钉小程序不支持的组件和 API,提高开发效率和代码质量。