uni - app 跨平台开发

uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,可发布到 iOS、Android、Web(响应式)、以及各种小程序(微信 / 支付宝 / 百度 / 头条 / QQ / 钉钉 / 淘宝)等多个平台,真正实现了 "一次开发,多端部署"。

核心特点
  1. 跨平台一致性:一套代码同时运行在 iOS、Android、H5 和小程序等多个平台,大大降低开发成本。

  2. 原生性能体验:通过条件编译可以针对不同平台编写专用代码,调用各平台的原生能力,保证良好的用户体验。

  3. 丰富的组件与 API:提供了丰富的内置组件和 API,支持微信小程序语法、支付宝小程序语法等,方便开发者快速上手。

  4. 开发效率高:使用 Vue 语法开发,支持热更新,开发体验接近 Web 开发,同时支持使用 npm 安装第三方模块。

开发环境搭建

首先需要安装 HBuilderX 开发工具,它是 uni-app 官方推荐的开发工具,集成了完整的开发、调试、打包流程:

  1. 下载并安装 HBuilderX
  2. 创建 uni-app 项目:通过 HBuilderX 菜单【文件】->【新建】->【项目】,选择 "uni-app" 模板
  3. 运行项目:选择运行到浏览器、模拟器或真机
项目结构

典型的 uni-app 项目结构如下:

plaintext

├── App.vue               # 应用配置,用来配置App全局样式以及监听应用生命周期
├── main.js               # Vue初始化入口文件
├── manifest.json         # 配置应用名称、图标、权限等打包信息
├── pages.json            # 配置页面路由、导航条、选项卡等页面类信息
├── uni.scss              # 全局样式
├── pages                 # 业务页面文件存放目录
│   ├── index
│   │   ├── index.vue
│   └── logs
│       └── logs.vue
├── static                # 静态资源目录,如图片、字体等
├── components            # 组件目录
├── platform              # 存放各平台专用代码
├── uni_modules           # uni-app插件规范目录
├── package.json          # npm包管理配置文件
└── nativeplugins         # 原生插件目录
条件编译

条件编译是 uni-app 中非常重要的特性,允许在同一个项目中针对不同平台编写不同的代码:

javascript

// #ifdef H5
console.log('这段代码只在H5平台执行');
// #endif

// #ifdef APP-PLUS
console.log('这段代码只在App平台执行');
// #endif

// #ifdef MP-WEIXIN
console.log('这段代码只在微信小程序平台执行');
// #endif
页面与路由

uni-app 的路由基于配置式,在pages.json中配置路由信息:

json

{
  "pages": [
    {
      "path": "pages/index/index",
      "style": {
        "navigationBarTitleText": "首页"
      }
    },
    {
      "path": "pages/detail/detail",
      "style": {
        "navigationBarTitleText": "详情页"
      }
    }
  ],
  "globalStyle": {
    "navigationBarBackgroundColor": "#FFFFFF",
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "uni-app",
    "backgroundColor": "#F8F8F8",
    "backgroundTextStyle": "dark"
  }
}

使用uni.navigateTouni.redirectTo等 API 进行页面跳转:

javascript

// 保留当前页面,跳转到应用内的某个页面
uni.navigateTo({
  url: '/pages/detail/detail?id=123'
});

// 关闭当前页面,跳转到应用内的某个页面
uni.redirectTo({
  url: '/pages/login/login'
});
UI 组件开发

uni-app 提供了丰富的内置组件,同时也支持使用第三方 UI 库:

vue

<template>
  <view class="container">
    <!-- 按钮组件 -->
    <button type="primary" @click="submitForm">提交</button>
    
    <!-- 列表组件 -->
    <scroll-view scroll-y="true" style="height: 300rpx;">
      <view class="list-item" v-for="(item, index) in list" :key="index">
        {{item.title}}
      </view>
    </scroll-view>
    
    <!-- 条件编译示例 -->
    <!-- #ifdef H5 -->
    <view class="h5-only">这个组件只在H5平台显示</view>
    <!-- #endif -->
  </view>
</template>

<script>
export default {
  data() {
    return {
      list: [
        { id: 1, title: '项目1' },
        { id: 2, title: '项目2' },
        { id: 3, title: '项目3' }
      ]
    }
  },
  methods: {
    submitForm() {
      uni.showToast({
        title: '提交成功',
        icon: 'success'
      });
    }
  }
}
</script>

<style>
.container {
  padding: 20rpx;
}

.list-item {
  padding: 15rpx;
  border-bottom: 1rpx solid #eee;
}

.h5-only {
  color: red;
  margin-top: 20rpx;
}
</style>
生命周期

uni-app 应用和页面都有各自的生命周期函数:

javascript

// App.vue 应用生命周期
export default {
  onLaunch: function() {
    console.log('App Launch');
  },
  onShow: function() {
    console.log('App Show');
  },
  onHide: function() {
    console.log('App Hide');
  }
}

// 页面生命周期
export default {
  data() {
    return {
      title: '页面标题'
    }
  },
  onLoad(options) {
    // 页面加载时执行
    console.log('页面加载', options);
  },
  onReady() {
    // 页面初次渲染完成时执行
    console.log('页面初次渲染完成');
  },
  onShow() {
    // 页面显示时执行
    console.log('页面显示');
  },
  onHide() {
    // 页面隐藏时执行
    console.log('页面隐藏');
  },
  onUnload() {
    // 页面卸载时执行
    console.log('页面卸载');
  }
}
网络请求

使用uni.request进行网络请求:

javascript

uni.request({
  url: 'https://api.example.com/data',
  method: 'GET',
  data: {
    page: 1,
    size: 10
  },
  success: (res) => {
    console.log('请求成功', res.data);
    this.list = res.data.data;
  },
  fail: (err) => {
    console.error('请求失败', err);
    uni.showToast({
      title: '网络错误,请稍后重试',
      icon: 'none'
    });
  }
});

打包发布

通过 HBuilderX 可以方便地将 uni-app 项目打包发布到各个平台:

  1. H5 发布:菜单【发行】->【网站 - H5 手机版】
  2. 小程序发布:菜单【发行】->【小程序 - 微信 / 支付宝等】,需要配置小程序开发者工具路径
  3. App 发布:菜单【发行】->【原生 App - 云打包】或【原生 App - 本地打包】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值