一、实战

  • HBuilderX:在微信小程序中运行页面,需要设置->安全 开启微信小程序服务端口,HBuilder工具->设置->配置程序路径
  1. 网络请求、模板语法、打开页面、页面传参
  2. 列表  api:  https://unidemo.dcloud.net.cn/api/news
    - 返回数据格式
    - id 新闻id 如: 72980
    - title 标题
    - created_at 创建时间
    - author_avatar 图标
  3. 详情  地址:
    https://unidemo.dcloud.net.cn/api/news/36kr/ + id  ( id 为新闻id,上个页面传过来的)  
  4. 使用 rich-text 【富文本组件来展示新闻内容】
    <rich-text class="richText" :nodes="strings" ></rich-text>
  5. pages:新建页面 -> 就会多一个文件夹 里面包含一个 同名.vue文件
  • 网络请求 api

    onLoad: function() {
    快捷写法 -> ureq
    }

    请求列表数据:

    onLoad:function(){
    uni.request({
    url: 'https://unidemo.dcloud.net.cn/api/news',
    method: 'GET',
    data: {},
    success: res => {
    console.log(res)
    },
    fail: () => {},
    complete: () => {}
    });
    }
  • 页面跳转(打开页面) - 两种方式
    //  ①   <navigator url=""></navigator>
    
    //  ②   @tap="openinfo"       //监听单击事件
    
    //       快捷写法 : me -> 选择 Vue methods方法代码块
    
    //       unav -> 选择 uni.navigateTo({ 代码块 })
    
    methods: {
    openinfo() {
    uni.navigateTo({
    url: '../info/info'
    });
    }
    },
  • 页面传参  ——  :data-变量名称="" 进行附加信息的传递,保存在监听事件的 e.currentTarget.dataset.变量名称
    //  index.vue 列表页
    
    :data-newsid="item.post_id"
    
    methods: {
    openinfo(e) {
    var newsid = e.currentTarget.dataset.newsid;
    //console.log(newsid)
    uni.navigateTo({
    url: '../info/info?newsid='+newsid
    });
    }
    }, // info.vue 详情页 // onLoad生命周期:页面加载成功,获取传递的参数,保存在onLoad方法的 e.变量名称 中 onLoad: function(e){
    console.log(e) //{newsid: "5219628" }
    }  
  • 数据加载中 
    uni.showLoading({
    title: "加载中...."
    })  
  • 加载完成后
    uni.hideLoading()  
  • 补充知识点: pages.json -- pages 页面路由数组
    "pages": [
    // pages数组中第一项表示应用启动页,参考:
    // https://uniapp.dcloud.io/collocation/pages
    {
    "path": "pages/index/index",
    "style": {
    "navigationBarTitleText": "uni-app"
    }
    } ,
    //在使用HBuilderX新建info页面文件夹时,自动创建
    {
    "path" : "pages/info/info",
    "style" : {}
    }
    ],
  • 开发小技巧:condition 设置模式配置--便于调试时,固定打开某一页面
    "condition": {       //模式配置,仅开发期间生效
    "current": 0, //当前激活的模式(list 的索引项)
    "list": [{
    "name": "test", //模式名称
    "path": "pages/info/info", //启动页面,必选
    "query": "newsid=5158607" //启动参数,在页面的onLoad函数里可得到
    }]
    }
  • ctrl + r 微信开发者工具-运行到页面

二、白话uni-app —— html、vue、小程序的区别

  • 网络模型:c/s ,前后端分离,通过ajax获取json数据
  • 文件类型:.vue文件
  • 文件内代码架构:template、script、style是并列的一级节点
  • 外部文件引用方式:es6写法,import引入外部的js模块或css
  • 组件/标签变化:以前是html标签,现在是小程序组件
  1. div 改成 view
  2. span、font 改成 text
  3. a 改成 navigator
  4. img 改成 image
  5. input 还在,但type属性改成了confirmtype
  6. form、button、checkbox、radio、label、textarea、canvas、video 这些还在。
  7. select 改成 picker
  8. iframe 改成 web-view
  9. ul、li没有了,都用view替代
  10. audio 不再推荐使用,改成api方式
  • https://uniapp.dcloud.io/api/media/background-audio-manager?id=getbackgroundaudiomanager
  • 其实老的HTML标签也可以在uni-app里使用,uni-app编译器会在编译时把老标签转为新标签,比如把div编译成view。但不推荐这种用法,调试H5端时容易混乱,基于元素的选择器也会出问题
  • 新增手机端常用的新组件:
  1. scroll-view 可区域滚动视图容器
  2. swiper 可滑动区域视图容器
  3. icon 图标
  4. rich-text 富文本(不可执行js,但可渲染各种文字格式和图片)
  5. progress 进度条
  6. slider 滑块指示器
  7. switch 开关选择器
  8. camera 相机
  9. live-player 直播
  10. map 地图
  • cover-view 可覆盖原生组件的视图容器。
  • uni-app的非h5端的video、map、canvas、textarea是原生组件,层级高于其他组件。
  • 如需覆盖原生组件,比如在map上加个遮罩,则需要使用cover-view组件
  • js变化:
  1. 运行环境从浏览器变成v8引擎。浏览器专用的window、document、navigator、location对象,包括cookie等存储,只有在浏览器中才有,app和小程序都不支持。但app和小程序支持web-view组件,里面可以加载标准HTML,这种页面仍然支持浏览器专用对象window、document、navigator、location。
  2. 数据绑定模式变化从DOM操作变成Vue的MVVM模式
  3. 注意: ① 小程序的数据绑定参考了vue,但自己修改了一些。在uni-app中只支持标准的vue,不支持小程序的数据绑定语法。②小程序里的setData在uni-app里并不存在,因为vue是自动双向数据绑定的。直接通过赋值方式修改数据,如果数据绑定到界面上,界面会自动更新渲染
  • Api变化
  1. alert、confirm 改成 uni.showmodel
  2. ajax 改成 uni.request
  3. cookie、session 没有了,local.storage 改成 uni.storage
  • uni-app的js api还有很多,但基本就是小程序的api,把wx.xxx改为uni.xxx即可
  • CSS变化:
  1. 不支持*选择器、元素选择器里body改为page
  2. 默认单位 upx、默认布局 flex布局
  3. 注意背景图和字体文件尽量不要大于40k。会影响性能。
  • 如果非要大于40k,需放到服务器侧远程引用或base64后引入,不能放到本地作为独立文件引用。
  • 在小程序里,其实小于40k的文件在css里也无法引用,uni-app编译器在编译时自动做了处理,把小于40k的文件编译为base64方式。
  • 工程结构和页面管理:
  1. 每个可显示的页面,都必须在 pages.json 中注册。pages.json类似与小程序的app.json,是配置文件。
  2. 与Vue相比:没有Vue的路由,路由都在pages.json中管理。
  • 与小程序相比: 原来app.json被一拆为二。
  1. 页面管理,被挪入了uni-app的pages.json;非页面管理,挪入了manifest.json。
  2. 原来的app.js和app.wxss被合并到了app.vue中
  • uni-app的首页,是在pages.json里配的,page节点下第一个页面就是首页。一般在/pages/xx的目录下。
  • 页面提供了原生的导航栏和底部tabbar,但必须在pages.json中配置。

三、基于Promise封装uni-app的request方法,实现类似axios形式的请求

  • 拦截器只能自己封装,uni-app仅提供网络请求的方法和中断连接的方法;
  • uni-app内置了flyio:https://wendux.github.io/dist/#/doc/flyio/readme

    var Fly=require("flyio/dist/npm/wx");
    var fly=new Fly; var server = "https://uniapp.dcloud.io/update";
    var req = {"appid":"123","version":"123"}; fly.request(server, req, {
    method:"get",
    timeout:5000 //超时设置为5s
    }) .then( d=>{
    console.log("request result:",d)
    }) .catch(
    (e) => console.log("error", e)
    );
  • 方法二【使用unifly代替uni-request】:unifly支持uni-request所有功能,而且更具有模块化思想。(uni-request不再维护,但历史版本仍然可以使用)
  1. uni-request 教程:https://www.liangzl.com/get-article-detail-39769.html
  2. uniFly 教程: https://www.jianshu.com/p/2729ac395cf5
  • 基于fly.js:是一个类似于axios的工具,可以设置拦截等需求

注:以上内容来自UniApp官网推荐教程

【重点突破】—— UniApp微信小程序开发教程学习Three的更多相关文章

  1. 微信小程序开发教程目录

    本系列教程是自己在工作中使用到而记录的,没有顺序之分 如有错误之处,请给与指正,也不希望误导了别人 微信小程序开发教程目录 微信小程序之注册和入门 微信小程序之HTTPS请求 微信小程序开发之选项卡 ...

  2. 微信小程序开发:学习笔记[7]——理解小程序的宿主环境

    微信小程序开发:学习笔记[7]——理解小程序的宿主环境 渲染层与逻辑层 小程序的运行环境分成渲染层和逻辑层. 程序构造器

  3. 微信小程序开发:学习笔记[5]——JavaScript脚本

    微信小程序开发:学习笔记[5]——JavaScript脚本 快速开始 介绍 小程序的主要开发语言是 JavaScript ,开发者使用 JavaScript 来开发业务逻辑以及调用小程序的 API 来 ...

  4. 微信小程序开发:学习笔记[4]——样式布局

    微信小程序开发:学习笔记[4]——样式布局 Flex布局 新的布局方式 在小程序开发中,我们需要考虑各种尺寸终端设备上的适配.在传统网页开发,我们用的是盒模型,通过display:inline | b ...

  5. 微信小程序开发:学习笔记[3]——WXSS样式

    微信小程序开发:学习笔记[3]——WXSS样式 快速开始 介绍 WXSS(WeiXin Style Sheets)是一套用于小程序的样式语言,用于描述WXML的组件样式,也就是视觉上的效果. WXSS ...

  6. 微信小程序开发:学习笔记[2]——WXML模板

    微信小程序开发:学习笔记[2]——WXML模板 快速开始 介绍 WXML 全称是 WeiXin Markup Language,是小程序框架设计的一套标签语言,结合小程序的基础组件.事件系统,可以构建 ...

  7. 微信小程序开发:学习笔记[1]——Hello World

    微信小程序开发:学习笔记[1]——Hello World 快速开始 1.前往微信公众平台下载微信开发者工具. 地址:https://mp.weixin.qq.com/debug/wxadoc/dev/ ...

  8. 微信小程序开发:学习笔记[9]——本地数据缓存

    微信小程序开发:学习笔记[9]——本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...

  9. 微信小程序开发:学习笔记[8]——页面跳转及传参

    微信小程序开发:学习笔记[8]——页面跳转及传参 页面跳转 一个小程序拥有多个页面,我们可以通过wx.navigateTo推入一个新的页面.在首页使用2次wx.navigateTo后,页面层级会有三层 ...

随机推荐

  1. ElasticSearch5.3安装IK分词器并验证

    ElasticSearch5.3安装IK分词器 之前使用Elasticsearch安装head插件成功了,但是安装IK分词器却失败了.貌似是ElasticSearch5.0以后就不支持直接在elast ...

  2. MySql 5.7关键字和保留字-附表

    现在使用navicat图形界面或者Hibernate做映射生成表的时候,渐渐的会忽视掉关键字这个问题,而后续也会不断的产生错误提示,一遍遍的查询代码无果,甚至开始怀疑人生,但是其实很多情况下只是使用了 ...

  3. springboot中的编码设置

    在springboot中编码配置可以通过filter也可以通过springboot的核心配置文件application.properties中配置如下信息: #配置字符编码spring.http.en ...

  4. 定义一个Book类,有书名,价格,作者等信息。定义相应的方法来改变这些属性的值。定义一个方法来显示Book的所有信息。

    package com.fs.test; public class Test { public static void main(String[] args) { // 先声明后赋值 book b;/ ...

  5. 十三、LaTex中的参考文献BibTex

    将默认文献工具设置为bibtex

  6. IDEA启动软件可以选择进入项目而不是直接进入项目

    1.File--->Settings 2.Appearance & behavior --->System Settings --->Reopen last project ...

  7. Java 从后向前依次比较两个数组

    这是华为往年的一道上机题 题目: 给定两个数组,以及两个数组的长度,要求从最后一个元素开始,依次比较两个数组对应的元素.如果有一个数组较短,则以短数组为准.返回不同元素的个数. 解答: int fun ...

  8. Python3使运行暂停的方法

    在Python3中已经有很大一部分语句与Python2不互通了,运行暂停的方法也有所不同. 1.input(); 这种方法不用包含模块,因此这也是最常用的一种暂停手段. Python2中的raw_in ...

  9. 如何给自己的Python项目制作安装包

    Packaging Python Projects¶ 本教程将指导您如何打包一个简单的Python项目.它将向您展示如何添加必要的文件和结构来创建包,如何构建包以及如何将其上载到Python包索引. ...

  10. GUI学习之三十四——QSS样式表

    今天是一个大课题:QSS样式表 一.概念: QSS是Qt Style Sheet——Qt样式表,是用来自定义控件外观的一种机制;可以把他类比成CSS,但是不及其功能强大. 二.使用: 我们做一个模板, ...