uni-app 知识点

摘要:
---:是使用vue的。

---【uni-app】:

  是一个使用vue。js开发所有前端应用的框架,开发者编写一套代码,可发布到ios,android,H5,以及各种小程序,

  (微信/支付宝/百度/头条/QQ/钉钉)等多个平台

---【环境搭建】:

  1,安装APP开发版HBuilderX

  2,安装微信开发者工具

---【使用HBuilderX初始化项目】:

  1,点击HBuilderX菜单栏文件》项目》新建》

  2,选择uni-app填写项目名称,项目创建的目录

---【项目的运行】 可以打包成H5网页,安卓/IOS应用,和各种小程序

  1,点击运行,选择运行在浏览器

  2,点击运行,运行在小程序》运行在微信开发者工具

    -第一次运行在微信开发者工具时需要注意两个问题,

    1,第一次运行会弹出一个框需要填写微信开发者工具的路径

    2,右键桌面的微信开着工具,打开文件夹所在位置,复制路径,然后把路径粘贴到弹出框里

    设置完路径打开微信小程序可能会报错,打不开,须在微信开发者工具里进行设置

    1,点击上方菜单的设置》安全设置》端口号,选择开启

  3,运行在安卓手机/ios手机,点击运行》运行在手机或者模拟器,前提是手机用数据线连接电脑

---【项目目录介绍以及开发规范简介】:

  1,page文件夹,存放页面的文件夹

  2,static文件夹,存放静态资源的文件夹 /图片/字体图标,等

  3,unpackage>dist     存放最终打包输出的文件

  4,App.vue 文件    是项目的根组件 是页面的入口文件,可调用应用的生命周期函数

  5,main.js 文件      是项目的入口文件 ,项目加载首先会加载main.js

  6,manifest.json 文件 用来配置应用的一些打包的东西

  7,pages.json  文件    用来设置整个项目的页面的存放路径,以及窗口的外观

  8,uni.scss  文件   常用的样式变量

开发规范:

  1,页面文件遵循vue中文件组件 ,后缀为vue

  2,组件标签靠近小程序规范  详见官方文档

  3,接口能力,靠近微信小程序规范,但需前缀wx替换为uni   详见官方文档

  4,数据绑定及事件处理同vue.js规范,同时补充了app及页面的生命周期

  5,为兼容多端运行,建议使用flex布局 进行开发

---【全局外观的样式,配置】:pages.json

  1,'globalStyle":{

    "navigationBarBackgroundColor":"#7FFF00"     //设置顶部导航栏的背景色  十六进制

    "navigationBarTextStyle":"black"                        //设置顶部导航栏标题的文字颜色 仅支持black/white     字符串

    "navigationBarTitleText":"xxxxxx"                       //自定义标题的文字

    "enablePullDownRefresh":true                            //是否开启全局下拉刷新 此时向下拉的部分,会出现背景色通过下边的属性可设置背景的颜色

    "backgroundColor":"#7CCD7C"                           //设置下拉出来的背景色,   十六进制

    "backgroundTextStyle":"dark"                             //设置下拉loading的样式: 仅支持dark/light    暗色和亮色的loading

    "onReachBottomDistance":50                           //页面上拉触底事件触发时距页面底部的距离,仅支持px

  }

 ---【创建新页面和页面的配置】:pages.json

  1,右键page文件夹,新建cart文件夹,在cart文件夹中新建cart.vue页面

  2,在全局pages.json 文件中加入页面的路径,"pages":[{"path":pages/cart/cart.vue}]     pages数组的第一项为默认展示页

页面的配置:style  配置局部页面的独有外观样式

  “pages”:[

    {

      "path":"pages/cart/cart.vue",

      "style":{

        "navigationBarTitleText":"xxxxxx"          //自定义标题的文字,style子页面配置和全局的配置一样,会覆盖全局外观配置的样式

        "h5":{          //h5页面单独设置特有的样式 //还有微信小程序,百度,之类的单独设置的样式 请查看官方文档

          "pullToRefresh":{      //下拉刷新的loading 颜色

            "color":"#7D26CD"

          }

        }

      }

    }

  ]

---【配置基本的tabbar】:在pages.json 文件里配置tabbar

  "tabBar":{

    "list":[     //是一个数组,数组里以对象方式放的是每一个tab 

      {

        "text":"首页",               //tab的文字

        "pagePath":"pages/index/index",     //点击跳转的路径

        "iconPath":"static/tabs/home.xxx" ,   //设置默认的图标

        "aslectedIconPath":"static/tabs/home2.xxx"   设置选中时的图标

                       }

    ],

    "color":"#xxxxx" ,                              //tab上的文字默认颜色    和list同级

    "selectedColor":"#xxxxxx"                //tab上的文字选中时的颜色

    “backgroundColor”:"#xxxxx"             //tab的背景色

    "position":"top"                                 //移到页面上方切换栏,  图标会消失

  }

---【condition启动模式配置】:在pages.json

  "condition":{      //配完之后在开发者工具上 点击普通编译,选择name=详情页,就跳转详情页了

    "current":0                 //当前激活的模式,list节点的索引值,, 选择的是list的【0】

    "list":[

      {

        "name":"详情页",

        "path":"pages/xxx/xxx",  //路径

        "query":"id=80"             //参数

      }

    ]

  }  

---【uni-app 组件】:

  1,<text></text>              相当于spann标签

    =selectable    布尔值   表示可以选中复制文字

    =space="emsp"      显示连续空格   ensp中文子一半/emsp中文字符大小/nbsp 根据字体设置的空格大小

  2,<view></view>  相当于div

    =hover-class="xxx"   .xxx{background:red}      //按下去会加入的样式的样式, 背景变红

    =hover-stop-propagetion      //加上这个属性可阻止事件冒泡

    =:hover-start-time="2000"    //点击之后过2秒触发事件

    =:hover-stay-time = "2000"    //点击离开之后,过两秒样式才消失

  3,<button></button> 按钮组件

    =<button size="mini">按钮</button>   小号按钮,默认是沾满

    =<button type="primary">按钮</button>     蓝色按钮

    =<button plain></button>                    按钮背景色透明

    =<button disabled></button>               按钮禁止点击

    =<button loading></button>               旋转的圆圈

  4,<image></image>   图片组件

    =<image src="http://t.zoukankan.com/xxxxxxx"></image>    图片默认宽高为  320/240px 

    =<image mode="aspectFit"></image>    保持纵横比例,可以完整的显示出来

    =<image mode="aspectFill"></image>    外层容器,的宽度贴满,高度剪掉了

  5,原生小程序的组件也可以用。例如轮播图等

---【样式的学习】:

  =使用@import url()  来导入外联样式表    page相当于body节点

  =定义在App.vue中的样式为全局样式,在pages目录下的vue文件中定义的样式为局部样式,并会覆盖App.vue中相同的选择器

---【使用字体图标】:

  1,把阿里字体的文件夹放入静态文件夹中、在iconfont.css文件中把url里的路径改成前缀是 -@/static/fonts

  2,在app.vue的样式中引入inconfont.css ///    @import url (''./static/fonts/iconfonts.css)

--[使用sass]:安装插件

  1,在上方菜单的工具》插件安装》选择sass编译 》安装       //安装成功直接保存 ,直接成功直接使用

---【uni-app 的数据绑定】:和vue 一摸一样,把数据定义在data中

  export default {

    data(){

      return{

        msg:"hello-nui"

      }

    }

  }

---【插值表达式 v-bind/基本的运算,三元运算符,v-for】 和vue一样

---【绑定事件,事件对象event,方法传参数和事件对象(20,$event)】和vue一样

---【关于键盘事件的问题】:e.target.keyCode进行响应但是不能响应回车。

 ---【input 回车事件响应】<input type="text" v-model="str" @confirm="ass"/> 要使用confirm

---【应用的生命周期函数】: 写在APP。vue  入口跟组件里定义

  1,onLaunch    应用打开 初始化完成时触发,只触发一次                  首先

  2,onShow      应用启动,应用显示出来了 或从后台进入前台显示     然后  =》会触发多次

  3,  onHide  从前台进入后台触发 应用隐藏了                                     

   

---【页面的生命周期函数】:

  1,onLoad            监听页面加载   可以拿到上个页面传递过来的参数(option)    首先

  2,onShow           监听页面显示                                                                               然后

  3,onReady          监听页面初次渲染完成                                                                 其次

  4,onHide             监听页面隐藏

  5,onUnload          监听页面卸载

  6,onPullDownRefresh   监听用户下拉动作页面需开启下拉刷新功能,用于下拉刷新》处理完数据刷新后,uni.stopPullDownRefresh()方法可停止下拉刷新

  6-1:点击事件触发下拉刷新,在事件中,调用  uni.startPullDownRefresh()方法来开启下拉刷新

  7,onReachBottom         页面滚动到底部触发,配合onReachBottomDistance可设置距离底部的距离 常用于上拉加载下一页数据

---【发送get请求】:uni.request(object)

  1,uni.request(url:'xxxxx',sussers(res){console.log(res)})

  培训讲的方法,nui.request({url:"xxxx"}).then((res)=>{console.log(res)})

---【设置分包】:

  在page.json 里使用subPackages 设置分包

---【数据缓存】:

  1,uni.setStorage    设置缓存  uni.setStorage({key:"id",data:80,succsee(){存成功的回调函数}  })

    let idd = uni.setStorageSync(id)  同步获取数据的方法

  2,uni.getStorage    获取缓存   uni.getStorage({key:"id",succsee(){获取成功的回调函数}  })

  3,  uni.removeStorage    删除缓存    uni.removeStorage({key:"id",succsee(){删除成功的回调函数}  })

---【图片的上传和预览】:uni.chooseImage(object) 从本地相册选择图片或使用相机拍照  具体可参考官文的媒体模块

  <button @click = "chooseImg">上传图片</button>

  methods:{

    chooseImg(){ 

      uni.chooseImage({

        count:5,   //限制上传图片的数量  在浏览器限制不了个数

        success:res=>{上传成功的回调函数 ---》this.imageArr = res.temFilePaths 可拿到上传成功的图片路径}

      })

    }   }

---【图片的预览】:uni.previewImage(object)   点击图片会 会显示点击的图片进行预览

    《image @click = "previewImag">   给点击的图片绑定点击事件

    previewImg(current){    //点击图片传过来图片的地址

      uni.previewImage({

        current:current,

        urls:this.imgArr    //所有的图片预览

        loop:true              //可循环预览   在APP上可以

      })

    }

---【条件编译 跨端兼容】:

  跨端兼容:

             按照uni-app规范开发即可保证多平台兼容,大部分业务均可直接满足

        但是:1,大量写if else 会造成性能低下 2,编译到不同工程后二次修改,会让后续升级变得很麻烦

        uni.app提供了条件编译手段,可在一个工程里优雅的完成平台个性化实现

   条件编译:   具体可参考 官文 的 条件注释实现跨端兼容

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

    写法是   以 #ifdef加平台标志 开头 以#endif 结尾

    <!-- #ifdef H5-->

    <view>我希望旨在H5页面中看见</view>

    <!-- #endif -->

---【导航跳转 和传参】:声明式跳转 // 编程式跳转

  声明式跳转:navigator

    <navigaor url="/pages/detail/detail?id=80&age = 19">跳转至详情页</navigator>    点击跳转到了详情页,带返回箭头 不能跳转到tab 组件的页面

      在生命周期函数里拿到参数   onLoad(options){  console.log(option)}   拿到传来的参数

              <navigaor url="/pages/detail/detail" open-type = "redirect">跳转至详情页</navigator>    点击跳转到了详情页当前页面关闭,不带返回箭头 不能跳转到tab 组件的页面

    <navigaor url="/pages/message/message" open-type = "switchTab">跳转至信息页</navigator>   跳信息页,时候tab组件上的页面    

  编程式跳转:

    <button @click = "goDetail"> 跳转至详情页</button>

    goDetail(){

      uni.navigateTo({

        url:"/pages/detail/detail?id=20"        //点击挑战到了详情页 带返回箭头 普通页面  不能跳转tab组件页面

      })

    }

    goDetail(){

      uni.switchTab({

        url:"/pages/message/message"        //点击挑战到tab页面,关闭其他非tab页面 

      })

    }

    goDetail(){

      uni.redirectTo({

        url:"/pages/message/message"        //点击挑战到详情页,关闭当前页面 

      })

    }

---【组件的使用创建】:

  和vue一样,其他组件通过 importd来导入,然后注册组件

  1,import login from "@/components/text.vue"

  2,conpinte:{  login   }

---【组件的生命周期函数 】:和vue的一样       

---【组件之间的通讯方式】:

  1,父传子 绑定数据   props 来接受数据  和vue一样

  2,子传父,$emit     自定义事件,来传值   和vue 一样

---需求,兄弟组件传值  点击a组件的按钮,修改b组件的数据

  》b组件

    created(){

      uni.$on('updateNum',num=>{          通过,unni.$on 注册一个全局事件,使用Num接受传来的参数

        this.num +=num

      })

    }

  》a组件

    <button @click=addNum"">按你牛</button>

    methods:{

      addNum(){

        uni.$emit("updateNum",10)

      }

    }

---【扩展组件uni-ui的使用】 详情官文  nui-ui

  :是跨端ui库,基于vue组件的,flex布局的,无dom的跨全段ui库,不包括基础组件,是基础组件的补充

---【uni-ui的特点】:

  1,高性能  是小程序和混合app领域,uni-ui是性能的标杆

  2,自动差量更新数据 

---【使用】:

  1,选择组件  没登陆要登录一下  使用HBuilderX导入插件

  2,使用import  来导入 components文件夹里的组件。然后挂载

  3,使用方式和vue一样

rpx

推荐设计稿使用ipone的375px尺寸等于750rpx

设计稿得px转为rpx只需要乘2就可以了

免责声明:文章转载自《uni-app 知识点》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Docker网络[6]寒假作业3:抓老鼠啊~亏了还是赚了?(指针法)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用jquery获取url以及jquery获取url参数的方法

使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1、jquery获取url很简单,代码如下 1.window.location.href; 其实只是用到了javascript的基础的window对象,并没有用jquery的知识 2、jquery获取url参数比较复杂,要用到正则表达式,所以学好javascrip...

vue刷新当前路由:router-view 复用组件时不刷新的3种解决方案总结

  vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换。   对于路由,不同的路由跳转,vue...

百度专家谈智能硬件测试探索

2013年-2018年,物联网整体规模呈现加速扩张趋势,智能设备数量直线增长。如下图: 2013年-2020年全球智能设备数量(亿台) 01 — 那什么是智能设备呢? 简单的说就是将硬件和app连接,通过软硬结合的方式,让传统设备附加到互联网,让其拥有智能化,并且通过移动软件app连接智能硬件,来实现对硬件的远程控制,例如共享单车、智能音箱、智能插座等几...

轻松玩转AI 与PDF文件的转化(完美解决字体问题)

经过漫长而坚苦卓绝的研究查阅了网上无数资料下载了众多相关软件进行试验终于,找到搞定PDF文件的方便并且有效的办法PDF文件!你这个魔鬼!退去吧!!!!难点一: 如何修改客户常常会提供不知道从哪里搞来的PDF文件然后要求修改上面的某个细节听上去很简单,但是真正捣鼓起来你会发现传说中的 Adobe Acrobat只能完成页面的增减,标签的添加,甚至可以做到添加...

IVR交互式语音应答系统

ZingServ平台IVR子系统介绍 IVR系统的中文译名为"交互式语音应答系统",然而,真正的IVR系统早已超出这种中文译名所描述的功能范围--IVR是一种功能强大的电话自动服务系统。对用户来说,只有理解了这一点,才能真正了解IVR系统的价值;而对产品提供商来说,也只有理解了这一点,才能真正明确产品的应用范围和设计目标。  在ZingServ一体化呼叫中...

Vue 基础篇一

Vue框架介绍 之前大家学过HTML,CSS,JS,JQuery,Bootstrap,,现在我们要接触一个新的框架Vue Vue是一个构建数据驱动的web界面的渐进式框架 目标是通过尽可能简单的API实现响应式的数据绑定和组合的视图组件. 能够构建复杂的单页面应用.现在我们开始认识一下Vue // HTML 页面 <div id="app">...