uni-app云开发入门

app,uni · 浏览次数 : 153

小编点评

**H5打包第一步** 1.通过草料二维码,直接把网址生成二维码,让别人扫描。 2.自己买域名,在阿里云上自己买域名,然后在uniCloud上对应配置网站域名。 **微信小程序发布第一步** 1.进入manifest.json,添加微信小程序的AppId。 2.点击发行 发行 -> 微信小程序。 3.第三步编译完成后,自动打开微信开发工具,修改本地设置,“不校验合法域名”去掉,查看报错信息,把要添加的页面添加到微信开发者中心下的开发设置-服务器域名上传要单独配置上传服务器域名。 **H5设置网站标题网站域名可暂时不写打包完成后,给网站的根路径取一个名字,然后上传到uniCloud的前端网页托管,提供了默认默认域名供使用。** **App打包第一步** 1.进入manifest.json,选择自动生成图标->生成所有图标。 2.点击发布-打原生APP-云打包。 **归纳总结** 1.通过草料二维码,直接把网址生成二维码,让别人扫描。 2.自己买域名,在阿里云上自己买域名,然后在uniCloud上对应配置网站域名。 3.通过草料二维码,直接把网址生成二维码,让别人扫描。 4.点击发行 发行 -> 微信小程序。 5.第三步编译完成后,自动打开微信开发工具,修改本地设置,“不校验合法域名”去掉,查看报错信息,把要添加的页面添加到微信开发者中心下的开发设置-服务器域名上传要单独配置上传服务器域名。 6.通过草料二维码,直接把网址生成二维码,让别人扫描。 7.点击发行 发行 -> 微信小程序。 8.第三步编译完成后,自动打开微信开发工具,修改本地设置,“不校验合法域名”去掉,查看报错信息,把要添加的页面添加到微信开发者中心下的开发设置-服务器域名上传要单独配置上传服务器域名。 9.在uniCloud下的跨域设置项,配置跨域设置,让自己的部署域名也能访问到云数据库。

正文

云函数
首先创建一个uniapp项目,创建项目时选择启用uniCloud云开发。
0
创建项目成功后,按照下面的步骤进行开发。
 
创建云函数
1.关联云服务器
2.创建云函数
一个云函数可以看成是一个后台接口
0
云函数实现
'use strict';
exports.main = async (event, context) => {
    //event为客户端上传的参数
    console.log('event : ', event)
    
    //返回数据给客户端
    return "Hello Cloud Func"
};
3.使用云函数
onLoad() {
    uniCloud.callFunction({
        name:'myCloudFunc'
        }).then((res)=>{
            console.log(res)
        })
},
打印结果
0
 
本地云函数与远端云函数调试的区别
云函数:一个后台接口与接口的实现。
本地云函数调试是使用本地的接口查询逻辑,此时本地元函数逻辑与远端元函数可能不一样,可以理解远端元函数是发布的版本,本地云函数是开发的版本。本地版本调试没有问题了就上传到远端。
当新建一个云项目时,可以直接将远端云函数下载到本地,进行本地云函数的调试。
 
云数据库
1.在云后台创建表User
0
2.添加表数据
0
3.创建一个云函数,连接数据库,查询数据库
uniCloud的数据库是nosql非关系性数据库
'use strict';

const db = uniCloud.database();

exports.main = async (event, context) => {
    //event为客户端上传的参数
    console.log('event : ', event)
    
    const collection = await db.collection('User').get()
    
    //返回数据给客户端
    return collection
};
函数使用
onLoad() {
    uniCloud.callFunction({
        name:'myCloudDB',
        success: (res) => {
            console.log(res);
        }
    })
},
提交表单,存储数据到云数据库
<template>
    <view class="content">
        <form @submit="submitData">
            <input type="text" name="name">
            <input type="tel" name="phone">
            <button form-type="submit">提交表单</button>
        </form>
    </view>
</template>

<script>
    export default {
        methods: {
            async submitData(v) {
                console.log(v)
                let {name,phone} = v.detail.value
                 let res = await uniCloud.callFunction({
                    name:'myCloudDB',
                    data:{
                        name,
                        phone
                    }
                })
                console.log(res)
            }
        }
    }
</script>
云数据库条件查询
定义云函数

'use strict';

const db = uniCloud.database()
const dbCmd = db.command

exports.main = async (event, context) => {
    //event为客户端上传的参数
    console.log('event : ', event)
    
    // doc: 根据id查询
    // let res = await db.collection('User').doc('640b5a9228064a03b7aa1ac7').get()
    // 限制条数
    // let res = await db.collection('User').limit(5).get()
    // // skip:跳过的条数,分页的话数字是页数*每页条数
    // let res = await db.collection('User').limit(5).skip(5).get()
    
    // field:只返回声明的字段,_id默认返回
    // let res = await db.collection('User').field({name: true}).get()
    // orderBy: 排序字段+升序/降序类型
    // let res = await db.collection('User').orderBy('age','desc').get()
    
/*
1.简单的值等于查询,如name: 'Tom' 
2.逻辑指令单条件查询,如age: dbCmd.gt(15)
3.逻辑指令多条件查询,如dbCmd.or(dbCmd.lt(15), dbCmd.gt(20))
4.正则匹配
使用//简单正则匹配,中间写要匹配的内容,如/^梅/ig(i忽略大小写,g全局)
使用RegExp对象匹配,如new RegExp('梅','ig')
    */
    let res = await db.collection('User').where({
        // age: dbCmd.gt(15)
        // age: dbCmd.or(dbCmd.lt(15), dbCmd.gt(20))
        // name: /梅/ig
         // name: new RegExp('梅','ig')
        }).get()
    
    //返回数据给客户端
    return res
};



vue组件调用
<script>
    export default {
        onReady() {
            uniCloud.callFunction({
                name:'myCloudGet',
                success: (res) => {
                    console.log(res)
                    this.list = res.result.data
                }
            })
        },
    }
</script>
云数据库更新
'use strict';

const { link } = require("fs");

const db = uniCloud.database()
const dbCmd = db.command

exports.main = async (event, context) => {
    //event为客户端上传的参数
    console.log('event : ', event)
    
    // 单条记录更新
    // const res = await db.collection('User').doc('640bf773e766bb2975957423').update({
    //     phone: '88889999'
    // })
    
    // 多条记录更新
    // const res = await db.collection('User').where({
    //     _id: dbCmd.in(['640bf773e766bb2975957423','640be1bc28064a03b7bd833f'])
    // }).update({
    //     phone: '88889999000'
    // })
    
    // const res = await db.collection('User').where({
    //     name: /梅/ig
    // }).update({
    //     address: '冬梅大桥旁,33号'
    // })
    
    // 更新对象和数组
    // const res = await db.collection('User').where({
    //     name: "张三"
    // }).update({
    //     like:{
    //         0: "游泳2"
    //     },
    //     bestFrient:{
    //         name:"jack"
    //     }
    // })
    
    
    // set: 覆盖一个对象, update:更新局部字段
    const res = await db.collection('User').where({
        name: "张三"
    }).update({
        // dbCmd.inc(1):自增加一
        love: dbCmd.inc(1),
        // dbCmd.unshift(["写代码","打游戏"]): 数组头部添加数据
        like: dbCmd.unshift(["写代码","打游戏"]),
        // dbCmd.set({}) 更新一个对象,参数为传入的一个对象
        bestFrient: dbCmd.set({
            name: '狗剩',
            age: 12
        })
    })
    
    //返回数据给客户端
    return res
};
删除云数据库
'use strict';

const db = uniCloud.database()
const dbCmd = db.command

exports.main = async (event, context) => {
    //event为客户端上传的参数
    console.log('event : ', event)
    
    // 全部删除
    const res = db.collection('User').where({
        _id: dbCmd.neq(-1)
    }).remove()
    
    //返回数据给客户端
    return res
};
 
云存储
点击云存储后台,点击上传文件,直接上传,应用中可以直接使用这个链接地址访问。
0
使用扩展组件uni-file-picker自动上传图片到云存储
<template>
    <view class="content">
        <uni-file-picker 
            v-model="imageValue" 
            fileMediatype="image" 
                        limit="3"
            mode="grid" 
            @select="select" 
            @progress="progress" 
            @success="success" 
            @fail="fail" 
        />
    </view>
</template>

<script>
    export default {
        data() {
            return {
                imageValue: []
            }
        }
    }
</script>
手动上传云存储
通过this.$refs.files.update()调用,进行手动上传。
<template>
    <view class="content">
        <uni-file-picker 
            v-model="imageValue" 
            fileMediatype="image" 
            mode="grid" 
            :auto-upload="false"
            @select="select" 
            @progress="progress" 
            @success="success" 
            @fail="fail" 
            ref="files"
        />
        <button @click="upload">开始上传</button>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                imageValue: []
            }
        },
        onLoad() {

        },
        methods:{
            upload() {
                this.$refs.files.upload()
            }
        }
    }
</script>
云存储上传成功后,将返回的URL地址保存到云数据库
<template>
    <view class="content">
        <input type="text" v-model="title"/>
        <uni-file-picker 
            v-model="imageValue" 
            fileMediatype="image" 
            mode="grid" 
            :auto-upload="false"
            @select="select" 
            @progress="progress" 
            @success="success" 
            @fail="fail" 
            ref="files"
        />
        <button @click="upload">开始上传</button>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                imageValue: [],
                imageUrls: [],
                title: ''
            }
        },
        onLoad() {

        },
        methods:{
            
            // 上传成功
            success(e){
                console.log('上传成功',e)
                this.imageUrls = e.tempFilePaths
                
                uniCloud.callFunction({
                    name:'add_pic_data_one',
                    data:{
                        title: this.title,
                        imageUrls: this.imageUrls
                    }
                }).then(res => {
                    console.log(res)
                })
            },
            
            upload() {
                this.$refs.files.upload()
            }
        }
    }
</script> 
云数据库
'use strict';

const db = uniCloud.database()

exports.main = async (event, context) => {
    //event为客户端上传的参数
    console.log('event : ', event)
    
    let {title, imageUrls} = event
    
    const res = await db.collection('PicData').add({
        title,
        imageUrls
    })
    
    //返回数据给客户端
    return res
};
 
发布
H5打包
第一步,上传云函数到后台
一般本地开发时,用的都是本地调试,此时后台是没有这些云函数的,所以要对着
cloudfunctions右击,点击上传所有云函数
0
 
第二步
设置页面标题:文章管理系统
设置路由模式:hash
设置运行的基本路径:./
第三步
发行 - H5
设置网站标题
网站域名可暂时不写
打包完成后,给网站的根路径取一个名字,然后上传到uniCloud的前端网页托管,提供了默认默认域名供使用。
在uniCloud下的跨域设置项,配置跨域设置,让自己的部署域名也能访问到云数据库。

0
设置跨域配置
0
 
uniClound提供的域名过长,不好记忆问题如何解决?
1.通过草料二维码,直接把网址生成二维码,让别人扫描。
2.自己买域名,在阿里云上自己买域名,然后在uniCloud上对应配置网站域名。
 
微信小程序发布
第一步
进入manifest.json,添加微信小程序的AppId。
第二步
点击发行 发行 -> 微信小程序。
第三步
编译完成后,自动打开微信开发工具,修改本地设置,“不校验合法域名”去掉,查看报错信息,把要添加的页面添加到微信开发者中心下的开发设置-服务器域名
上传要单独配置上传服务器域名。
 
App打包
第一步
进入manifest.json,选择自动生成图标->生成所有图标。
第二步
发布-打原生APP-云打包。
 

与uni-app云开发入门相似的内容:

uni-app云开发入门

云函数 首先创建一个uniapp项目,创建项目时选择启用uniCloud云开发。 创建项目成功后,按照下面的步骤进行开发。 创建云函数 1.关联云服务器 2.创建云函数 一个云函数可以看成是一个后台接口 云函数实现 'use strict'; exports.main = async (event,

QShop商城-快速开始-uni-app小程序

QShop商城-快速开始-uni-app小程序 工具准备 HBuilderX 此项目为UniApp开发,开发工具为HBuilderX,下载地址: https://hx.dcloud.net.cn/Tutorial/install/windows 微信开发者工具 下载最新版的微信开发者工具,用来查看编

uniapp+vue3聊天室|uni-app+vite4+uv-ui跨端仿微信app聊天语音/朋友圈

原创研发uniapp+vue3+pinia2跨三端仿微信app聊天模板Uniapp-Wechat。 uni-vue3-wchat基于uni-app+vue3+pinia2+uni-ui+uv-ui等技术跨端仿制微信App界面聊天项目,支持编译到H5+小程序端+App端。实现编辑框多行消息/emoj混

uniapp-vue3-oadmin手机后台实例|vite5.x+uniapp多端仿ios管理系统

原创vue3+uniapp+uni-ui跨端仿ios桌面后台OA管理模板Uni-Vue3-WeOS。 uniapp-vue3-os一款基于uni-app+vite5.x+pinia等技术开发的仿ios手机桌面OA管理系统。实现了自定义桌面栅格磁贴布局、多分屏滑动管理、自定义桌面小部件、辅助触控悬浮球

从 Wepy 到 UniApp 变形记

本文主要讲述了如何将 wepy 框架的小程序项目一键转换为 uni-app 框架代码,详细讲解了方案的实现思路和具体实现方法。

微信小程序:接手项目,修bug

好家伙, 问题描述如下: 小程序主界面,选择快速上传会议记录 选择快速 其中,没有2022-2023第二学期,所以,新的会议记录无法上传 于是,我自愿修复这个bug 由于我们没有产品文档 我只能由已知,推未知 亲爱的学长告诉我,这是一个使用了uni-app开发的微信小程序 开搞, 1.首先我们把两个

uniapp+thinkphp5实现微信登录

前言 之前做了微信登录,所以总结一下微信授权登录并获取用户信息这个功能的开发流程。 配置 1.首先得在微信公众平台申请一下微信小程序账号并获取到小程序的AppID和AppSecret https://mp.weixin.qq.com/cgi-bin/loginpage?url=%2Fwxamp%2F

基于uniapp+vue3自定义增强版table表格组件「兼容H5+小程序+App端」

vue3+uniapp多端自定义table组件|uniapp加强版综合表格组件 uv3-table:一款基于uniapp+vue3跨端自定义手机端增强版表格组件。支持固定表头/列、边框、斑马纹、单选/多选,自定义表头/表体插槽、左右固定列阴影高亮显示。支持编译兼容H5+小程序端+App端。 如下图:

Uniapp 获取当前版本号

plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) { oldversion = wgtinfo.versionCode //通过该方法才可以获取到versionCode });

uniapp微信小程序转支付宝小程序踩坑(持续更新)

首先第一个,真有被折磨到! // 微信正常使用,支付宝不行 // 以下两种 微信、支付宝都正常使用