• Uniapp云开发(Uniapp入门)


    前言:
    今天这篇文章主要讲解的是Uniapp云开发基础,有了Uniapp云开发,我们就不用需要后端,前端自己就可以实现增删改查。还有就是案例很重要,一定要看,自己去尝试运行试试。

    一. 什么是Uniapp云开发

    uniCloud 是 DCloud 联合阿里云、腾讯云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台。
    我们之前学习过小程序云开发,那么Uniapp云开发如何操作呢?接下来我们就对如何操作进行讲解。

    二. Uniapp云开发详细步骤

    1. 新建一个Uniapp项目

    (选uniapp项目,创建项目名称,下面记得勾选uniCloud )
    在这里插入图片描述

    2. 创建云服务器空间

    当没有关联云服务空间的时候,会显示下图的状态
    在这里插入图片描述
    点击uniClound右键关联云空间,创建关联的同时,点击新建云空间。
    在这里插入图片描述创建云空间完成之后,右键打开uniCloud Web控制台
    在这里插入图片描述
    打开之后,我们需要创建一个服务空间,这里我们选择免费即可(只可以用一次)
    在这里插入图片描述

    三. 云函数

    我们需要先创建一个云函数,右键新建云函数,输入云函数名称,创建即可。
    在这里插入图片描述
    上传云函数(右键上传部署即可,一点要记得上传)
    在这里插入图片描述
    接下来就需要我们在页面调用
    uniCloud.callFunction()
    在这里插入图片描述
    进行云函数编写
    在这里插入图片描述

    四. 云数据库

    1.创建数据库

    右键打开uniCloud Web控制台,找到云函数库,点击新建数据表,填写表的名称即可,在这里我创建的是feedback,大家可以随意起名字。
    在这里插入图片描述

    2. 新增数据。(JSON格式

    点击添加记录,在记录内容里面输入json格式的内容
    在这里插入图片描述

    3.表结构

    我们可以点击右侧的表结构,你会发现你的permission权限是false,就是说你是没有读取,创建,更新,删除等权限的。所以我们在学习的时候一定要修改它的权限._id是系统自动生成的,我们可以添加两个字段,username用户名,tel电话号码。你也可以根据需要,添加字段。
    在这里插入图片描述
    下载表结构,右键,下载所有DB Schema这一步是可选的
    (但是当我们用官网的表时候,一定要记得下载)
    在这里插入图片描述

    4.运行项目

    这里我们需要选连接云端函数
    在这里插入图片描述

    5.展示数据(前端)

    在这里插入图片描述
    在这里插入图片描述

    五. uniapp云开发案例

    我们已经了解了uniapp的基本操作,那我们就一起找些例子练练手吧.

    案例1 实现添加与删除功能。

    在pages下面新建一个页面,这里取名为add。页面里面写入input组件以及button按钮。然后在methods方法里面写点击的方法。
    这里用到了==easyinput ==组件是对原生input组件的增强 ,是专门为配合表单组件 uni-forms 而设计的,easyinput 内置了边框,图标等,同时包含 input 所有功能。
    当然我们的index里面也是需要写内容的
    在这里插入图片描述
    这里我们长按,可以选择是否删除数据.
    @longpress.native="$refs.udb.remove(item._id)"
    在这里插入图片描述
    add页面代码

    <template>
    	<view>
    		<uni-easyinput v-model="item.username" placeholder="用户名" />
    		<uni-easyinput v-model="item.tel" placeholder="电话" />
    		<button @click="addConcat">添加</button>
    	</view>
    </template>
    
    <script>
    	export default {
    		data() {
    			return {
    				item: {
    					username: "",
    					tel: ""
    				}
    			}
    		},
    		methods: {
    			addConcat() {
    				var db = uniCloud.database();
    				db.collection("feedback")
    					.add(this.item)
    					.then(res => {
    						uni.showToast({
    							title: "添加成功"
    						})
    					})
    					.catch(err => {
    						uni.showModal({
    							content: err
    						})
    					})
    			}
    		}
    	}
    </script>
    
    <style>
    
    </style>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    index页面代码 udb可以快捷生成代码,ulist也可以快捷生成,需要下载uni-ui插件,导入到自己的项目中。
    在这里插入图片描述

    <template>
    	<view class="content">
    		<button @click="call">呼叫服务器</button>
    		<unicloud-db ref="udb" v-slot:default="{data, loading, error, options}" collection="feedback">
    			<view v-if="error">{{error.message}}</view>
    			<view v-else>
    				<uni-list>
    					<uni-list-item link :to="'/pages/update/update?item='+JSON.stringify(item)"
    						@longpress.native="$refs.udb.remove(item._id)" v-for="item in data" :key="item._id"
    						:title="item.username" :note="item.tel">
    					</uni-list-item>
    				</uni-list>
    			</view>
    		</unicloud-db>
    
    	</view>
    </template>
    
    <script>
    	export default {
    		data() {
    			return {
    				title: 'Hello'
    			}
    		},
    		onLoad() {
    
    		},
    		onShow() {
    			if (this.$refs && this.$refs.udb) {
    				this.$refs.udb.refresh()
    			}
    		},
    		methods: {
    			call() {
    				uniCloud.callFunction({
    						name: "base",
    						data: {
    							name: "sjz",
    							age: 18
    						}
    					})
    					.then(res => {
    						uni.showModal({
    							content: JSON.stringify(res.result)
    						})
    					})
    					.catch(err => {
    						console.log(err);
    					})
    			}
    		}
    	}
    </script>
    
    <style>
    </style>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    案例2 实现更新功能

    新建一个update页面。我们点进入列表内容,修改里面内容,然后点击更新,列表内容会自动更新。但此时需要写一个方法,它才会自动更新跳转到列表页面。
    在unicloud-db里面写ref=“udb”,再在onshow里面写入如下代码,才会实现自动刷新

    onShow() {
    			if (this.$refs && this.$refs.udb) {
    				this.$refs.udb.refresh()
    			}
    		},
    
    • 1
    • 2
    • 3
    • 4
    • 5

    update代码

    <template>
    	<view>
    		<uni-easyinput v-model="item.username" placeholder="用户名" />
    		<uni-easyinput v-model="item.tel" placeholder="电话" />
    		<button @click="updateConcat">更新</button>
    	</view>
    </template>
    
    <script>
    	export default {
    		data() {
    			return {
    				item: {
    					username: "",
    					tel: ""
    				}
    			}
    		},
    		onLoad(option) {
    			this.item = JSON.parse(option.item)
    		},
    		methods: {
    			updateConcat() {
    				var item = {
    					...this.item
    				};
    				delete item._id;
    				const db = uniCloud.database();
    				db.collection("feedback")
    					.doc(this.item._id)
    					.update(item)
    					.then(res => {
    						uni.showToast({
    							title: "更新成功"
    						})
    						uni.navigateBack()
    					})
    					.catch(err => {
    						uni.showModal({
    							title: JSON.stringify(err)
    						})
    					})
    			}
    		}
    	}
    </script>
    
    <style>
    
    </style>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    案例3 schema2code实现通讯录功能,添加民族功能,省市级联功能

    如何利用自动生成代码呢?
    首先我们去官网选择其他下面的模板,然后点击下载
    在这里插入图片描述

    然后回到我们的代码页面,点击下载所有DB Schema

    在这里插入图片描述

    再找到我们的内容,进行修改,修改完成一定要上传DB Schema
    在这里插入图片描述

    右键schema2code 这一步要执行,不然容易报表关联错误

    在这里插入图片描述
    这里几个的方法是类似的,我们需要注意,选择合并即可。

    代码如下,我们只需要在opendb-contacts.schema.json
    中添加两端代码,一个是民族的,一个是省市级联的,
    其他的都是自动生成,完全不需要我们手写,很是方便。

    "nation": {
    			"bsonType": "string",
    			"title": "民族",
    			"order": 2,
    			"enum": {
    				"collection": "opendb-nation-china",
    				"field": "_id as value,name as text"
    			},
    			"foreignKey": "opendb-nation-china._id"
    		},
    		"adress": {
    			"bsonType": "string",
    			"title": "地区",
    			"order": 2,
    			"enum": {
    				"collection": "opendb-city-china",
    				"field": "code as value,name as text"
    			},
    			"foreignKey": "opendb-city-china.code",
    			"enumType": "tree",
    			"componentForEdit": {
    				"name": "uni-data-picker"
    			}
    		},
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    到底啦,希望对你有帮助哦

  • 相关阅读:
    工业交换机ERPS环网协议工作原理介绍
    算法学习笔记(19): 树上启发式合并(DSU on tree)
    教你如何使用Zbrush雕刻复杂的角色模型!
    笨方法学Python
    C++类和对象【中】
    (JavaEE)线程的状态
    Jmeter结构体系——Jmeter目录结构详解
    Building Systems with the ChatGPT API
    三角形最小路径和
    NeuPhysics: Editable Neural Geometry and Physics from Monocular Videos 解读
  • 原文地址:https://blog.csdn.net/m0_55734030/article/details/128191345