uni-app②

news2024/9/22 17:32:34

文章目录

二、微信小程序简介(一)

文档相关

  1. 开发文档:https://developers.weixin.qq.com/miniprogram/dev/framework/
  2. 微信公众平台:https://mp.weixin.qq.com/

开发者工具

​ 下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

使用

必选项处理

在这里插入图片描述

appID 获取

微信公众平台进行 appID 获取

在这里插入图片描述

小程序代码构成

参考地址:https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/code.html#JSON-%E9%85%8D%E7%BD%AE

  1. .json 后缀的 JSON 配置文件
  2. .wxml 后缀的 WXML 模板文件
  3. .wxss 后缀的 WXSS 样式文件
  4. .js 后缀的 JS 脚本逻辑文件

小程序基本结构

<view class="container">
    <view class="userinfo">
        <button wx:if="{{!hasUserInfo && canIUse}}">获取头像昵称</button>
        <block wx:else>
            <image src="{{userInfo.avatarUrl}}" background-size="cover"></image>
            <text class="userinfo-nickname">{{userInfo.nickName}}</text>
        </block>
    </view>
    <view class="usermotto">
        <text class="user-motto">{{motto}}</text>
    </view>
</view>

小程序基本操作

  • 配置信息 app.json

    • 全局配置 -> https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html

      {
          "pages": ["pages/index/index", "pages/logs/index"],
          "window": {
              "navigationBarTitleText": "Demo"
          },
          "tabBar": {
              "list": [
                  {
                      "pagePath": "pages/index/index",
                      "text": "首页"
                  },
                  {
                      "pagePath": "pages/logs/index",
                      "text": "日志"
                  }
              ]
          },
          "networkTimeout": {
              "request": 10000,
              "downloadFile": 10000
          },
          "debug": true
      }
      
    • 页面配置 app.json

      {
          "navigationBarBackgroundColor": "#ffffff",
          "navigationBarTextStyle": "black",
          "navigationBarTitleText": "微信接口功能演示",
          "backgroundColor": "#eeeeee",
          "backgroundTextStyle": "light"
      }
      
  • 全局生命周期函数 app.js

      /**
       * 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
       */
      onLaunch: function () {
    
      },
    
      /**
       * 当小程序启动,或从后台进入前台显示,会触发 onShow
       */
      onShow: function (options) {
    
      },
    
      /**
       * 当小程序从前台进入后台,会触发 onHide
       */
      onHide: function () {
    
      },
    
      /**
       * 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
       */
      onError: function (msg) {
    
      }
    
    • 页面生命周期函数 -> https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page-life-cycle.html
     onLoad: function(options) {
        // 页面创建时执行
      },
      onShow: function() {
        // 页面出现在前台时执行
      },
      onReady: function() {
        // 页面首次渲染完毕时执行
      },
      onHide: function() {
        // 页面从前台变为后台时执行
      },
      onUnload: function() {
        // 页面销毁时执行
      },
      onPullDownRefresh: function() {
        // 触发下拉刷新时执行
      },
      onReachBottom: function() {
        // 页面触底时执行
      },
      onShareAppMessage: function () {
        // 页面被用户分享时执行
      },
      onPageScroll: function() {
        // 页面滚动时执行
      },
      onResize: function() {
        // 页面尺寸变化时执行
      }
    

定义组件

引用组件:在 json 文件

使用组件

  • 组件生命周期->https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.html

    Component({
        lifetimes: {
            created() {
                console.log(
                    'created,组件实例刚刚被创建好时, created 生命周期被触发'
                )
            },
            attached() {
                console.log('组件实力进入页面节点树时候进行执行')
            },
            detached() {
                console.log('在组件实例被从页面节点树移除时执行')
            },
        },
    })
    
  • 界面跳转

    • 新界面打开=>https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/route.html

      调用 API wx.navigateTo
      历史记录椎
      使用组件 <navigator open-type="navigateTo" url=""/>
      
    • 页面重定向

      调用 API wx.redirectTo
      使用组件 <navigator open-type="redirectTo"/>
      
    • 页面返回

      调用 API wx.navigateBack
      使用组件<navigator open-type="navigateBack">
      用户按左上角返回按钮
      
    • Tab 切换

      调用 API wx.switchTab
      使用组件 <navigator open-type="switchTab"/>
      用户切换 Tab
      
    • 重启动

      调用 API wx.reLaunch
      使用组件 <navigator open-type="reLaunch"/>
      
  • 数据绑定

    <view>{{message}}</view>
    
    Page({
        data: {
            message: 'hello world',
        },
    })
    
  • 条件渲染

    <view wx:if="{{isShow}}">条件判断显示</view>
    
    Page({
    	data:{
    		isShow:false
    	}
    })
    
  • 列表渲染

    <view wx:for="{{list}}" wx:for-index="idx" wx:for-item="itemName">
        {{idx}}: {{itemName.name}}
    </view>
    
    Page({
        data: {
            list: [{ name: 'a' }, { name: 'b' }],
        },
    })
    

    三、uniapp 开发规范

    • 页面文件遵循 Vue 单文件组件(SFC)规范

    • 组件标签靠近小程序规范 =>https://uniapp.dcloud.io/component/README

      <template>
          <view> 页面内容 </view>
      </template>
      
      <script>
      export default {
          data() {
              return {}
          },
          methods: {},
      }
      </script>
      
      <style></style>
      
    • 接口能力(JS API)靠近微信小程序规范 => https://uniapp.dcloud.io/api/README

      uni.getStorageInfoSync()
      
    • 数据绑定事件处理同 Vue.js 规范

      <template>
          <view @click="onClickFn"> 点击事件绑定 </view>
      </template>
      
      <script>
      export default {
          methods: {
              onClickFn() {
                  console.log('click事件')
              },
          },
      }
      </script>
      
      <style lang="scss" scoped></style>
      
    • 兼容多端运行,使用 flex 布局进行开发


    uniapp 开发环境

    开发工具

    uni-app 官方推荐使用 HBuilderX 来开发 uni-app 类型的项目。主要好处:

    • 模板丰富
    • 完善的智能提示
    • 一键运行

    下载 HBuilderX

    1. 访问 HBuilderX 的官网首页 https://www.dcloud.io/hbuilderx.html
    2. 点击首页的 DOWNLOAD 按钮
    3. 选择下载 正式版/alpha -> App 开发版
    4. 将下载的 zip包 进行解压缩
    5. 将解压之后的文件夹,存放到纯英文的目录中(且不能包含括号等特殊字符)
    6. 双击 HBuilderX.exe 即可启动 HBuilderX
    7. 详细安装文档:=> https://hx.dcloud.net.cn/Tutorial/install/windows

    工程搭建

    1. 文件 -> 新建 -> 项目
      在这里插入图片描述

    2. 填写项目基本信息
      在这里插入图片描述

    3. 项目创建成功
      在这里插入图片描述

    基本目录结构

    项目名称
    ----【pages】    内部存放所有页面
    ----【static】   存放所有静态资源,比如图片,字体图标
    ----【unpackage】存放所有打包生成后的文件
    ----app.vue     应用配置,用来配置App全局样式以及监听 应用生命周期
    ----main.js			Vue初始化入口文件
    ----mainfast.json  配置应用名称、appid、logo、版本等打包信息
    ----pages.json    配置页面路由、导航条、选项卡等页面类信息
    ----uni.scss      用途是为了方便整体控制应用的风格。比如按钮颜色、边框风格,uni.scss文件里预置了一批scss变量预置。
    

    项目运行

    浏览器运行

在这里插入图片描述

### 小程序运行

1. 填写自己的微信小程序的 AppID:

在这里插入图片描述

2. 在 HBuilderX 中,配置“微信开发者工具”的**安装路径**:

在这里插入图片描述

3. 在微信开发者工具中,通过 `设置 -> 安全设置` 面板,开启“微信开发者工具”的**服务端口**:

在这里插入图片描述

4. 在 HBuilderX 中,点击菜单栏中的 `运行 -> 运行到小程序模拟器 -> 微信开发者工具`,将当前 uni-app 项目编译之后,自动运行到微信开发者工具中,从而方便查看项目效果与调试:

在这里插入图片描述

5. 初次运行成功之后的项目效果:

在这里插入图片描述

### app 真机运行

> 确保你的手机与电脑是在同一个局域网下面

1. 手机开启开发者模式
2. 选择数据管理
3. hbuildeX 选择真机运行
4. 等待基座安装
5. 安装完成手机运行项目

### IOS 模拟器运行

1. Xcode 下载
2. 定义版本进行模拟器运行

***

四、组件

文档参考地址:https://uniapp.dcloud.net.cn/component/

基础组件

基础组件在 uni-app 框架中已经内置,无需将内置组件的文件导入项目,也无需注册内置组件,随时可以直接使用,比如<view>组件。

组件演示参考地址 => https://hellouniapp.dcloud.net.cn/pages/component/view/view

基础组件列表

  • 视图容器
    • view 视图容器,类似于 html 中的 div
    • scroll-view 可滚动试图容器 => https://uniapp.dcloud.net.cn/component/scroll-view
    • swiper 滑块视图容器,比如用于轮播 banner
  • 基础内容
    • icon 图标 => uni-icons
    • text 文字
    • rich-text 文字 (可以解析标签)
    • progress 进度条
  • 表单组件(Form)
    • button 按钮
    • checkbox 多项选择器
    • editor 富文本输入框
    • form 表单
    • input 输入框
    • label 标签
    • picker 弹出式聊表选择器
    • picker-view 窗体内嵌入式聊表选择器
    • radio 单项选择器
    • slider 滑动选择器
    • switch 开关选择器
    • textarea 多行文本输入框
  • 路由与页面跳转(Navigation)
    • navigator 页面链接,类似于 html 中的 a 标签
  • 媒体组件
    • audio 音频
    • camera 相机
    • image 图片
    • video 视频

组件公共属性集合

在这里插入图片描述

除了上述公共属性,还有一类特殊属性以v-开头,称之为 vue 指令,如 v-if、v-else、v-for、v-model。

扩展组件

Demo 地址:https://hellouniapp.dcloud.net.cn/pages/component/scroll-view/scroll-view

参考地址:https://ext.dcloud.net.cn/search?q=uni-icons

自定义组件

  1. componets 文件夹下定定义组件
  2. 页面引用组件,无需倒入适量,直接使用即可
  3. 其他操作(组件传值,事件绑定同 vue)

UNI-ICON

插件市场 --> 搜索 uni-icons --> uni-icons 图标 -->

小程序的域名处理:

在小程序—>开发管理—>开发设置—>服务器域名

五、基础 API

参考地址:https://uniapp.dcloud.net.cn/api/README

API 列表

  • 网络请求

    • uni.request 发起网络请求

      为了解决 uni.request 网络请求 API 相对简单的问题,可使用@escook/request-miniprogram 进行网路请求的处理

      参考地址:https://www.npmjs.com/package/@escook/request-miniprogram

      在小程序中,无法使用 fetch 及 axios 进行网络请求发送

      测试接口地址:https://study.duyiedu.com/api/herolist

  • 上传、下载

    • uni.unloadFile 上传文件 => https://uniapp.dcloud.net.cn/api/request/network-file
    • uni.downloadFile 下载文件
  • 图片处理

    • uni.chooseImage 从相册选择图片,或者拍照 =>https://uniapp.dcloud.net.cn/api/media/image?id=chooseimage
    • uni.previewImage 预览图片
    • uni.getImageInfo 获取图片信息
  • 数据缓存 => https://uniapp.dcloud.net.cn/api/storage/storage?id=setstorage

    • uni.getStorage 异步获取本地数据缓存
    • uni.getStorageSync 同步获取本地数据缓存
    • uni.setStorage 异步设置本地数据缓存
    • uni.setStorageSync 同步设置本地数据缓存
    • uni.removeStorage 异步删除本地数据缓存
    • uni.reoveStorageSync 同步删除本地数据缓存
  • 交互反馈 => https://uniapp.dcloud.net.cn/api/ui/prompt?id=showtoast

    • uni.showToast 显示提示框
    • uni.showLoading 显示加载提示框
    • uni.hideToast 隐藏提示框
    • uni.hideLoading 隐藏加载提示框
    • uni.showModal 显示模态框
    • uni.showActionSheet 显示菜单列表
  • 路由

    • uni.navigateTo 保留当前页面,跳转到应用内某个界面,使用 uni.navigateBack 返回原页面
    • uni.redirectTo 关闭当前界面,跳转到应用内的某个界面
    • uni.reLaunch 关闭所有界面,打开应用内的某个界面
    • uni.switchTab 跳转到 tab Bar 页面

页面布局相关

page

页面容器 css 属性

page: {
    height: 100%;
    background-color: red;
}

尺寸单位

可使用单位:px rpx,upx, rem vh vw

外部样式文件引入

同 vue 使用相同

uniapp 生命周期

**参考地址:**https://uniapp.dcloud.net.cn/collocation/frame/lifecycle?id=应用生命周期

应用生命周期

  • onLaunch 初始化完成时触发(全局 🈯️ 触发一次)

  • onShow uni-app 启动,或从后台进入前台显示

  • onHide 当 uni-app 应用从前台进入后台

    只能在 App.vue 里面进行监听,在其他界面监听无效

页面生命周期

  • onLoad 监听页面加载(可获取上个界面传递的参数)
  • onShow 监听页面显示,每次出现在屏幕上都进行触发
  • onReady 监听页面初次渲染完成
  • onHide 监听页面隐藏
  • onUnload 监听页面卸载
  • onReachBottom 页面滚动到底部事件

组件生命周期

  • beofreCreate
  • created
  • boforeMount
  • mounted
  • boforeDestroy
  • destroyed

uniApp 特色

条件编译

条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。

语法
在这里插入图片描述

取值

在这里插入图片描述

条件编译支持的文件

  • .vue
  • .js
  • .css
  • pages.json
  • 各预编译语言文件,如:.scss、.less、.stylus、.ts、.pug

条件编译是利用注释实现的,在不同语法里注释写法不一样,js 使用 // 注释、css 使用 /* 注释 */、vue/nvue 模板里使用 <!-- 注释 -->

插件安装

  1. scss 安装

可以使用多种预编译处理器进行安装使用,以 scss 文件为例

下载地址:https://ext.dcloud.net.cn/plugin?name=compile-node-sass

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/343055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis笔记【JavaEE】

1.MyBatis是什么 持久层框架 【也是一个ORM框架 对象关系映射】 是一个优秀的ORM持久层框架 特点&#xff1a;灵活 支持自定义SQL、存储过程以及高级映射。MyBatis去除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类…

分布式缓存服务DCS-企业版性能更强,稳定性更高

背景介绍 近年来&#xff0c;随着各行业业务需求急速增加&#xff0c;数据量和并发访问量呈指数级增长&#xff0c;原来只能依附于关系型数据库的传统“缓存”逐渐难以支撑上层业务&#xff0c;开源Redis也面临着如“容量有限”、 “可靠性有限”、 “数据重复拷贝&#xff0c…

GeniE 实用教程(二)几何与网格

目 录一、前言二、Guiding Geometry2.1 Guide Point2.2 Guide Line2.3 Guide Plane2.4 Polyline三、Structure3.1 结构梁3.2 结构板3.1 结构壳四、Mesh4.1 网格属性4.2 网格划分4.3 查看网格五、参考文献一、前言 SESAM &#xff08;Super Element Structure Analysis Module&a…

操作系统(day08)内存

存储单元 内存的几个基本概念 存储单元 内存地址从0开始&#xff0c;每个地址对应一个存储单元 存储单元大小根据计算机按照什么方式编址 按字节编址 则每个存储单元大小为一字节&#xff0c;即1B&#xff0c;即8个二进制位按字编址 看这个计算的字长是多少位&#xff0c;如…

一到重要时刻就大脑空白?

很多人可能都经历过这样一幕&#xff1a;花了好多精力准备的一场考试、面试、演讲&#xff0c;到了上场的那一刻&#xff0c;之前准备的东西全都忘了&#xff0c;大脑一片空白。为什么会这样呢&#xff1f;我们所学到的东西都要经过三个步骤才能成为记忆&#xff1a;获取&#…

Leetcode 每日一题 1234. 替换子串得到平衡字符串

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…

深入解析golang几种非常主流的依赖注入框架,附实现案例及原理解析

什么是依赖注入&#xff1f; 依赖注入 &#xff0c;英文全名是 dependency injection&#xff0c;简写为 DI。 百科解释&#xff1a; 依赖注入是指程序运行过程中&#xff0c;如果需要调用另一个对象协助时&#xff0c;无须在代码中创建被调用者&#xff0c;而是依赖于外部的注…

【情人节专属】AI一键预测你和Ta的CP值

如何预测你和心仪的Ta有没有夫妻相&#xff1f;基于华为云ModelArts开发的【一键预测你和Ta的CP值】Demo帮你预测CP指数。该模型利用ssim算法综合计算五官特征相似程度&#xff0c;从而得出CP值。//夫妻相的原理在当今心理学、生物学仍有很大争议&#xff0c;夫妻相指数高并不意…

nVisual综合布线可视化管理系统解决方案

​一、综合布线管理系统的必要性 如今企事业单位办公人员变化很快&#xff0c;如果还是采用传统方式通过工程竣工图或者网络拓扑图来进行网络维护工作会非常麻烦&#xff0c;并且对管理人员的要求也会很高&#xff0c;管理人员需要清楚的知道工作区的信息点与配线架点之间的对…

java微信小程序旅游管理系统

本旅游服务软件,主要实现了管理员后端&#xff1a;首页、个人中心、旅游攻略管理、旅游资讯管理、景点信息管理、门票预定管理、用户管理、酒店信息管理、酒店预定管理、推荐路线管理、论坛管理、系统管理,用户前端&#xff1a;首页、景点信息、酒店信息、论坛中心、我的等。总…

剑指 Offer II 020. 回文子字符串的个数 马拉车算法

这里写自定义目录标题马拉车算法剑指 Offer II 020. 回文子字符串的个数马拉车算法 马拉车算法可以以接近线性时间判断计算回文串长度&#xff0c;遍历每一个中心点&#xff0c;再向两遍扩充 填充字符 其中$ ! 作为边界&#xff0c;添加#可以避开对偶数回文串的讨论&#xff…

博客系统--测试用例编写

目录一&#xff0c;整体概览1.1&#xff0c;登录页面测试用例1.2&#xff0c;注册页面测试用例1.3&#xff0c;发布博客功能测试1.4&#xff0c;删除博客功能测试二&#xff0c;具体设计2.1&#xff0c;注册页面测试--等价类法2.2&#xff0c;删除博客功能测试--判定表法一&…

【csdn首发】全网爆火的从零到一落地接口自动化测试

前段时间写了一系列自动化测试相关的文章&#xff0c;当然更多的是方法和解决问题的思路角度去阐述我的一些观点。结合我自己实践自动化测试的一些经验以及个人理解&#xff0c;这篇文章来聊聊新手如何从零到一落地实践接口自动化测试。 为什么要做接口测试 测试理念的演变 早…

热启动预示生态起航的Smart Finance,与深度赋能的SMART通证

2023年初加密市场的回暖&#xff0c;意味着各个赛道都将在新的一年里走向新的叙事。最近&#xff0c;我们看到GameFi赛道也在市场回暖的背景下&#xff0c;逐渐走出阴霾。从融资数据上看&#xff0c;1月获得融资的GameFi项目共12个&#xff0c;融资突破8000万美元&#xff0c;1…

肝一波,这个网站居然可以免费使用ChatGpt功能

一、肝一波&#xff0c;体验真爽 废话不多少&#xff0c;小码哥直接提大家感兴趣的问题&#xff0c;截图分享给大家。 问题一&#xff1a;如何在一年内赚到100万元 答&#xff1a; 一、赚钱的方式 开公司&#xff1a;在一年内开拓新业务模式&#xff0c;寻求投资&#xff…

2023软件测试工程师涨薪攻略,3年如何达到月薪30K?

1.软件测试如何实现涨薪 首先涨薪并不是从8000涨到9000这种涨薪&#xff0c;而是从8000涨到15K加到25K的涨薪。基本上三年之内就可以实现。 如果我们只是普通的有应届毕业生或者是普通本科那我们就只能从小公司开始慢慢往上走。 有些同学想去做测试&#xff0c;是希望能够日…

33、基于51单片机老人防跌倒蜂鸣器报警系统加速度检测

背景技术 老年人出门由于身体不灵活、视力较差&#xff0c;容易发生跌倒&#xff0c;现用的老年人跌倒报警装置是通过无线对讲系统研发的&#xff0c;它外观精美&#xff0c;自动化程度高&#xff0c;有很强的专业性&#xff0c;但是&#xff0c;设计者忽略了一个问题&#xf…

【项目精选】JAVAWEB校园二手平台项目

点击下载源码 JAVAWEB校园二手平台项目&#xff0c;基本功能包括&#xff1a;个人信息、商品管理&#xff1b;交易商品板块管理等。本系统结构如下&#xff1a; &#xff08;1&#xff09;本月推荐交易板块&#xff1a; 电脑及配件&#xff1a;实现对该类商品的查询、用户留言…

如何选择O2OA(翱途)开发平台的部署架构?

O2OA(翱途)开发平台[下称O2OA开发平台或者O2OA]支持公有云&#xff0c;私有云和混合云部署&#xff0c;也支持复杂的网络结构下的分布式部署。本篇主要介绍O2OA(翱途)开发平台支持的部署环境以及常用的集群部署架构。软硬件环境说明支持的云化平台&#xff1a;华为云(包括鲲鹏)…

前后端开发过程中的跨域问题总结

1.何为跨域问题 出于浏览器的同源策略限制。同源策略是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;则浏览器的正常功能不能使用。可以说web是构建在同源策略基础之上的&#xff0c;浏览器只是针对同源策略的一种实现。…