uni-app入门详解

uni-app是一个基于Vue.js的跨平台开发框架,支持创建iOS、Android、H5等多端应用。本文将介绍uni-app的项目构建、生命周期、路由跳转、基础语法、样式布局和自定义组件等内容,帮助开发者快速上手uni-app开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

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

二、项目构建

1. 创建项目详见: https://uniapp.dcloud.io/quickstart

2. 目录结构

在这里插入图片描述

3. xx.vue页面构成

1.后缀.vue是vue的自定义文件类型,类html语法描述一个Vue
2.vue文件三部分组成:template 视图层 组件script 逻辑层style 样式层
3.常用的基础组件
view -> div ( view相当于html中的div )
text -> span
image -> img

在这里插入图片描述

三、uniapp 生命周期

1. 应用的生命周期

应用的生命周期

onLaunch: function() {    
console.log('App Launch')    
	//登录    
	//用户信息    
	//存储我们的用户信息
	}
,onShow: function() 
{    
	console.log('App Show')    
	//时间戳    
	//停留时长
},onHide: function() {    
	console.log('App Hide')    
	//进入后台后需要做什么
},
onError(e) {    
	console.log('error',e)
} 

2. 页面的生命周期

页面的生命周期

//页面加载
onLoad() {    
	console.log("onLoad");    
	// 请求后台接口   
	 // 渲染前的操作},
	 //页面渲染完成
	 onReady() {    
	 console.log("onReady");    
	 // 获取节点信息
},
 //页面显示
 onShow(){    
 	console.log("onShow");
 },
 //页面隐藏
 onHide() {    
 	console.log("onHide");
 },
 //页面卸载
 onUnload() {   
	console.log("onUnload");
}

3. uniapp完整支持Vue生命周期

uniapp生命周期

四、uniapp 路由与页面跳转

1. uni.navigateTo(OBJECT)

  保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。

2. uni.redirectTo(OBJECT)

  关闭当前页面,跳转到应用内的某个页面。

3. uni.reLaunch(OBJECT)

  关闭所有页面,打开到应用内的某个页面。

4. uni.switchTab(OBJECT)

  跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。

5. uni.navigateBack(OBJECT)

  关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层。

五、基础语法

1. 数据绑定

<text class="title">{{title}}</text> 
export default {    
  data() {       
    return {            
      title: 'Hello'       
    }    
  }
}

2. 属性渲染

<image :src="src"></image>
export default {    
  data() {        
    return {           
      src: './aa.jpg'       
    }    
  }
}

3. 动态样式

<view :class="content"><view :class="[content,bg]"> 
<!--数组-->
<view :class="{'cc':cc}"> 
<!--对象写法-->
</view>
export default {   
  data() {       
    return {            
      content: 'content',            
      bg:'bg',            
      cc:true        
    }    
  }
}
<style>
.content{    
  color:red;
}.
bg{    
  color:blue;
}
</style>

4.条件渲染

v-if 与 v-else(详见 https://cn.vuejs.org/v2/guide/conditional.html )

v-for 列表渲染

<view v-for="(item,index) in items" :key="index">{{item}}{{index}}</view>
export default {   
  data() {        
    return {           
      items:['aaa','bbb','ccc','ddd']        
    }     
  },
}

5.事件处理

@click为点击事件,事件名为ccc,方法统一放在methods中

<button type="primary" @click="ccc('uniapp')">被点击</button>
<button type="primary" @click="ccc('uniapp')">被点击</button>
export default {    
  data() {        
  return {            
    show:false        
  }    
},    
methods: {        
  ccc(e){            
    console.log('被点击'+e)            
    this.inti()            
    console.log('被点击'+this.show)        
  },        
  inti(){          
    this.show = true        
  } 
}

注:uniapp的Api详见: https://uniapp.dcloud.io/api/README

六、样式与布局

1. 尺寸:px固定长度,rpx自适应长度( rpx主要用于微信小程序)

尺寸

2. App.vue 存放全局样式

3. 外部样式引用 :

在style标签下加上: @import ‘@/common/asp.css’;

4. uniapp完整支持flex布局

flex布局详见http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

七、自定义组件

1. 在项目的根目录创建文件夹components,然后新建list.vue组件页面

components

注:自定义组件页面与vue页面基本一致,就是多了props属性,接受来自页面的传参。

在这里插入图片描述

2. 将组件内容写入template里

<!-- 组件 -->
<template>
 <view class="list" @click="onClick">
  <text>{{name}}</text>
 </view>
</template>

<script>
 export default {
  props:{  //接受使用组件的页面传入参数
   name:{  //参数name
    type:String,
    default:''
   }
  },
  data() {
   return {
    
   }
  },
  methods:{
   onClick(){
    this.$emit('onClick',this.name)  
    //派发事件(参数一:事件名;参数二:参数)传递给组件
    // console.log('组件内容被点击'+this.name)
   }
  }
  
 }
</script>
<style>
.list{
 height: 50px;
 line-height: 50px;
 border-bottom: 1px solid #999999;
 margin: 15px;
}
</style>

这样基本的组件布局就完成了

3. 引用: 在需要引入的页面,这里使用index.vue页面为例

<!--使用组件 参数name的值传给list组件 -->
<template>
 <view>
  <list name="uniapp" @onClick="onClick"></list>
  <list name="vue" @onClick="onClick"></list>
  <list name="nodeJs" @onClick="onClick"></list>
 </view>
</template>

<script>
 //首先在script标签中输入代码,引用组件并注册组件
 //1.引用组件
 import list from '@/components/list.vue'  //@绝对路径
 export default {
  //2.注册组件
  components:{
   list
  },
  data() {
   return {
    
   }
  },
  methods: {  //方法
   onClick(e){  //接受list传递来的派发事件
    console.log(e)
   }
  }
<script>

效果如下
效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值