基于uniapp的QQ小程序开发(前端篇)

一、uniapp简单介绍

1.什么是uniapp

        uni-app 是使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS、Android、H5、小程序等多个平台。

2.uni-app的优点

  • 与小程序的组件、API一致;
  • 支持vue语法,微信小程序API
  • 支持微信小程序自定义组件及JS SDK
  • App端支持和原生混合编码
  • 插件丰富,DCloud将发布插件到市场

3.配置及下载

        由于Hbuilder是uniapp的内置开发工具,下载hbuilder即可HBuilderX-高效极客技巧

二、开发前准备

1.下载hbuilder与QQ小程序开发者工具

        QQ小程序开发者工具下载地址小程序开发者工具 | 文档

        hbuilder下载请参见上文

2.在hbuilder中创建uniapp项目

        依次点击“文件->新建”后,弹出如下弹窗,

基于uniapp的QQ小程序开发(前端篇)

         创建好之后这就是我们项目中的各个文件夹

基于uniapp的QQ小程序开发(前端篇)

        其中各个文件用途如下(图片转自uni-app入门_呱呱的博客-CSDN博客_uni-app)。

        需要注意的是初次创建时components、htbrids、platforms、wxcomponents是不存在的。

基于uniapp的QQ小程序开发(前端篇)

3.运行项目

        点击“工具栏”中的运行符号,弹出各个运行平台。开发不同平台的小程序可以选择不同的开发者工具。需要注意的是,当我们运行到qq开发者工具时,需要添加项目。我们找到项目目录下的mp-qq进行在qq开发者工具中的加载。

基于uniapp的QQ小程序开发(前端篇)基于uniapp的QQ小程序开发(前端篇)

         加载完毕之后我们就已经可以在qq开发者工具中实时查看自己项目运行情况了。由于用的uniapp开发,初始界面是默认的,如下图。

基于uniapp的QQ小程序开发(前端篇)

         这时我们已经做好了开发前的准备,现在可以在hbuilder中进行开发了。

三、进行开发

1.开发规范

        页面文件需要遵从Vue 单文件组件规范,具体文档请看单文件组件 — Vue.js

2.开发需要语言

        由于是Vue框架,我们需要三门基础语言进行页面开发。 .vue 文件包含三种类型的*语言块 <template><script><style>,用到的语言分别是html、css、JavaScript。

        这几门语言的学习可以参照B站课程2022年度全网最全Web前端学习路线 - 哔哩哔哩

3.如何开发

        uniapp开发的框架可以参照uniapp的官方文档uni-app官网。按照需求进行页面配置和全局配置,配置好之后我们可以进行单个页面的开发。

        由于uniapp自带的组件的用途并不是很广泛,我们可以再官方的组件市场下载需要的插件,插架市场链接DCloud 插件市场,可以将完整的插件下载直接下载到hbuilder中进行代码的参照和学习。

基于uniapp的QQ小程序开发(前端篇)

 四、实例

        这是我的用uni-forms、uni-easyinput等插件开发的一个简单的投稿页面。

        操作端图片如下:

        基于uniapp的QQ小程序开发(前端篇)基于uniapp的QQ小程序开发(前端篇)

         下面是此页面的源码,供大家参考。

<template>
	<view class="container">
		<uni-card :is-shadow="false" is-full>
			<text class="uni-h6">你好!这是申申如也的一个测试</text>
		</uni-card>

		<uni-section title="请填写表单" type="line">
			<view class="example">

				<uni-forms ref="Form" :rules="rules" :modelValue="FormData" labelPosition="top">
					<uni-forms-item label="类型" required name="theme">
						<uni-data-checkbox v-model="FormData.theme" :localdata="themes" />
					</uni-forms-item>

					<uni-forms-item label="标题" required name="title">
						<uni-easyinput v-model="FormData.title" placeholder="请输入标题" />
					</uni-forms-item>

					<uni-forms-item label="详细描述" name="introduction">
						<uni-easyinput type="textarea" v-model="FormData.introduction" placeholder="请输入描述" />
					</uni-forms-item>

					<uni-forms-item label="填入照片" name="image">
						<view class="imag">
							<image class="imagclass" style="height: 150rpx;width: 150rpx;" :src="FormData.imagsrc"
								@tap="chooseImag"></image>
						</view>
					</uni-forms-item>

					<uni-forms-item label="联系方式">
						<uni-forms-item label="QQ" name="QQ" labelPosition="left">
							<uni-easyinput v-model="FormData.qq" placeholder="QQ" />
						</uni-forms-item>
						<uni-forms-item label="手机" name="phonenumber" labelPosition="left">
							<uni-easyinput  v-model="FormData.phonenumber" placeholder="手机" />
						</uni-forms-item>
					</uni-forms-item>

				</uni-forms>
				<button type="primary" @click="submit('Form')">提交</button>
			</view>
		</uni-section>

	</view>
</template>

<script>
	var that = this;
	export default {

		data() {
			return {
				//基础数据

				FormData: {
					imagsrc: "../../static/logo.png",
					title: "",
					theme: 0,
					introduction: "",
					qq: "",
					phonenumber: ""
				},
				themes: [{
					text: '表白捞人',
					value: 0
				}, {
					text: '求助提问',
					value: 1
				}, {
					text: '寻物启事',
					value: 2
				}, {
					text: '失物招领',
					value: 3
				}, {
					text: '分享安利',
					value: 4
				}, {
					text: '吐槽',
					value: 5
				}],

				rules: {
					title: {
						rules: [{
							required: true,
							errorMessage: '请输入标题'
						}]
					}
				}
			}
		},



		onLoad() {},
		/* onReady() {
			// 设置自定义表单校验规则,必须在节点渲染完毕后执行
			this.$refs.Form.setRules(this.rules)
		}, */

		methods: {
			onClickItem(e) {
				console.log(e);
				this.current = e.currentIndex
			},
			submit(ref) {
				this.$refs[ref].validate().then(res => {
					console.log('success', res);
					uni.showToast({
						title: `校验通过`
					})
				}).catch(err => {
					console.log('err', err);
				})
			},
			chooseImag() {
				var _this = this;
				uni.chooseImage({
					count: 1, //默认9
					sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有
					sourceType: ['album'], //从相册选择
					success: function(res) {
						console.log(JSON.stringify(res.tempFilePaths));
						_this.FormData.imagsrc = res.tempFilePaths[0];
					}
				});
			}

		}
	}
</script>

<style lang="scss">
	.example {
		padding: 15px;
		background-color: #fff;
	}

	.form-item {
		display: flex;
		align-items: center;
	}

	.button {
		display: flex;
		align-items: center;
		height: 35px;
		margin-left: 10px;
	}
</style>

 五、结语

        本人由于是第一次开发小程序的前端,对vue没有一个很深的理解,如果文中有什么问题还请大家批评指正。我也在学习前后端链接和后端的一些东西,后期会写一写学习日记,也给大家提供一个参考,目前想的是后端用java做~

        文章多有瑕疵,若得诸位共赏,不胜欢喜,请诸君畅所欲言,以待下次相约,谢观!

 

上一篇:【实用工具】HBuilder


下一篇:1068_MISRA_C规范学习_2004_Rule_3.6