uni-app 开发入门

本文详细介绍了uni-app的基础概念,环境配置,包括HBuilderX的使用,项目创建,以及uni-app的开发流程,涵盖了框架结构、页面结构、独有拓展内容如视图容器、表单组件、导航和媒体组件等,强调了其在简化跨平台应用开发中的作用。
摘要由CSDN通过智能技术生成

一、什么是 uni-app?

uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架。开发者编写一套代码,可发布到 iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台,几乎覆盖所有流量平台。

二、环境搭建

1. 开发工具

在开始开发之前,你需要确保已经安装了:

  • HBuilderX:这是官方推荐的 IDE,提供了代码提示、项目模板、插件市场等功能。
  • Node.js:uni-app 的编译过程依赖于 Node.js 环境。
  • 微信开发者工具:如果你需要编译到微信小程序,这个工具是必须的。
  • WebStrome:基于 JetBrains 编写的前端开发 IDE,相对于 HBuilderX 有更多的智能提示,可选。

HBuilderX 是通用的前端开发工具,但为 uni-app 做了特别强化。

建议下载App开发版,可开箱即用;如使用cli方式创建项目,可下载标准版。

2. 创建 uni-app 项目

打开 HBuilderX,点击工具栏里的文件 -> 新建 -> 项目:

  • 选择uni-app类型,输入工程名,选择模板,点击创建,即可成功创建 uni-app。

3. 运行 uni-app 项目

  • 浏览器运行:进入项目,点击工具栏的运行 -> 运行到浏览器 -> 选择浏览器,即可在浏览器里面体验uni-app 的 H5 版。

  • 真机运行:连接手机,开启USB调试,进入项目,点击工具栏的运行 -> 真机运行 -> 选择运行的设备,即可在该设备上体验uni-app。

  • 小程序运行:进入项目,点击工具栏的运行 -> 运行到小程序模拟器 -> 微信开发者工具,即可在微信开发者工具里面体验uni-app。

三、uni-app 开发

1. 框架结构

uni-app 采用了 Vue.js 语法规范,同时补充了App及页面的生命周期。

  • pages: 业务页面文件存放的目录

  • static: 存放应用引用静态资源(如图片、视频等)的地方,static 目录下的文件不会被编译

  • App.vue: 应用配置,用来配置App全局样式以及监听、应用生命周期

  • main.js: Vue初始化入口文件

  • manifest.json: 配置应用名称、appid、logo、版本等打包信息。

  • pages.json: 配置页面路由、导航条、选项卡等页面类信息。

在开发之前,你需要在 manifest.json 填入你的 appid。

2. 页面结构

uni-app 页面文件遵循 Vue 单文件组件 (SFC) 规范,每个 .vue 文件包含三个部分:

<template>
</template>

<script>
	export default {
		data() {
			return {
			}
		},
		methods: {
			
		},
	}
</script>

<style>
</style>
  • template: 模板,用 HTML 语法描述页面的结构

  • script: 脚本,用 JavaScript 编写页面的业务逻辑

  • style: 样式,用 CSS 语法描述页面的样式

3. 独有拓展内容

有关 Vue 的部分,此处不再赘述,下面介绍 uni-app 独有的内容。

a. 视图容器

view: 类似于 HTML 中的 div 标签,是视图层的基本组成单元。

<view>
  <text>Hello, Uni-app!</text>
</view>

scroll-view: 可滚动视图区域,常用于展示长列表或内容超过屏幕范围的情况。

<template>
  <scroll-view style="height: 300rpx;">
    <view v-for="item in items" :key="item.id">{{ item.text }}</view>
  </scroll-view>
</template>

swiper: 轮播图组件,常用于展示图片或广告等内容。

<template>
  <view>
    <!-- indicator-dots 显示指示点,autoplay 自动播放,interval 间隔时间 -->
    <uni-swiper :indicator-dots="true" :autoplay="true" :interval="3000">
      <uni-swiper-item>
        <image src="https://example.com/image1.jpg"></image>
      </uni-swiper-item>
      <uni-swiper-item>
        <image src="https://example.com/image2.jpg"></image>
      </uni-swiper-item>
      <uni-swiper-item>
        <image src="https://example.com/image3.jpg"></image>
      </uni-swiper-item>
    </uni-swiper>
  </view>
</template>

b. 基础内容

text: 用于显示文本,支持丰富的文本样式设置。

<template>
  <view>
    <!-- text 组件不可被点击 -->
    <text>{{ message }}</text>
    
    <!-- 使用 <view> 组件显示可点击文本 -->
    <view @click="handleClick">{{ clickableText }}</view>
  </view>
</template>

rich-text: 用于显示富文本内容,支持 HTML 标签渲染。

<template>
  <view>
    <!-- 使用 <rich-text> 组件显示富文本内容 -->
    <rich-text :nodes="richTextContent"></rich-text>
  </view>
</template>

<script>
export default {
  data() {
    return {
      richTextContent: '<div style="color: red;">This is <b>rich text</b> content.</div>'
    };
  }
}
</script>

image: 用于显示图片,支持设置图片路径、模式、裁剪等属性。

<template>
  <view>
    <!-- 显示本地图片 -->
    <image src="/static/logo.png"></image>
    
    <!-- 显示远程图片 -->
    <image src="https://example.com/image.jpg"></image>
  </view>
</template>

uni-icons: 用于显示图标,支持使用 iconfont 图标库。

<template>
  <view>
    <!-- 使用 <uni-icons> 组件显示图标 -->
    <uni-icons type="star" size="24" color="#f90"></uni-icons>
  </view>
</template>

progress: 进度条组件,用于展示任务进度

<template>
  <view>
    <!-- 使用 <uni-progress> 组件显示进度条 -->
    <uni-progress :percent="progressPercent" />
  </view>
</template>

<script>
export default {
  data() {
    return {
      progressPercent: 50
    };
  }
}
</script>

c. 表单组件

picker: 选择器组件,支持日期选择、时间选择、地区选择等。

<template>
  <view>
    <picker mode="date" start="2022-01-01" end="2024-12-31" @change="handleChange">
      <view>{{ selectedDate }}</view>
    </picker>
  </view>
</template>

<script>
export default {
  data() {
    return {
      selectedDate: ''
    };
  },
  methods: {
    handleChange(event) {
      this.selectedDate = event.mp.detail.value;
      uni.showToast({
        title: '已选择日期:' + this.selectedDate,
        icon: 'none'
      });
    }
  }
}
</script>

switch: 开关组件,用于切换状态。

<template>
  <view>
    <switch v-model="switchValue" @change="handleChange" />
  </view>
</template>

<script>
export default {
  data() {
    return {
      switchValue: false
    };
  },
  methods: {
    handleChange(value) {
      uni.showToast({
        title: '开关状态:' + value,
        icon: 'none'
      });
    }
  }
}
</script>

d. 导航

navigator: 页面链接组件,用于跳转到其他页面。

<template>
  <view>
    <navigator url="/pages/otherPage">跳转到其他页面</navigator>
  </view>
</template>

tabbar: 底部选项卡导航,常用于切换不同的页面模块。

<template>
  <view>
    <tabbar>
      <tabbar-item icon="home" text="首页" url="/pages/home"></tabbar-item>
      <tabbar-item icon="list" text="列表" url="/pages/list"></tabbar-item>
      <tabbar-item icon="user" text="我的" url="/pages/my"></tabbar-item>
    </tabbar>
  </view>
</template>

navigation-bar: 自定义导航栏,用于定制导航栏样式和功能。

<template>
  <view>
    <navigation-bar title="自定义标题" background="#fff" color="#000" />
  </view>
</template>

e. 媒体组件

video: 视频播放组件,支持播放网络视频或本地视频。

audio: 音频播放组件,支持播放网络音频或本地音频。

camera: 摄像头组件,用于拍摄照片或视频。

live-player: 直播播放器组件,用于播放直播流。

f. 地图

map: 地图组件,支持显示地图、标记点、路线等功能。

g. 画布

canvas: 画布组件,用于绘制图形、图像等内容。

h. 开放能力

open-data: 用于展示微信开放数据,如用户信息、微信运动步数等。

web-view: 用于嵌入网页视图,支持加载外部网页。

四、总结

uni-app 提供的丰富组件极大地简化了跨平台应用开发流程,开发者可以根据项目需求选择合适的组件进行开发,并通过组件的属性、事件等进行定制化配置。

以上只是一些常用组件的介绍,更多组件信息请参考 uni-app 官方文档

  • 32
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值