位置: IT常识 - 正文

2022 uniapp基础掌握及面试题整理(uniapp零基础小白到项目实战)

编辑:rootadmin
2022 uniapp基础掌握及面试题整理 1.uniapp优缺点 

推荐整理分享2022 uniapp基础掌握及面试题整理(uniapp零基础小白到项目实战),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:uniapp快速入门,uniapp入门到实战,uniapp入门到精通,uniapp零基础教程,uniapp入门到实战,uniapp零基础小白到项目实战,uniapp入门到实战,uniapp零基础教程,内容如对您有帮助,希望把文章链接给更多的朋友!

    优点:     a. 一套代码可以生成多端     b. 学习成本低,语法是vue的,组件是小程序的     c. 拓展能力强     d. 使用HBuilderX开发,支持vue语法     e. 突破了系统对H5调用原生能力的限制     缺点:     a. 问世时间短,很多地方不完善     b. 社区不大     c. 官方对问题的反馈不及时     d. 在Android平台上比微信小程序和iOS差     e. 文件命名受限

2. uniapp的配置文件、入口文件、主组件、页面管理部分

 

 pages.json 配置文件,全局页面路径配置,应用的状态栏、导航条、标题、窗口背景色设置等 main.js 入口文件,主要作用是初始化vue实例、定义全局组件、使用需要的插件如 vuex,注意uniapp无法使用vue-router,路由须在pages.json中进行配置。如果开发者坚持使用vue-router,可以在插件市场找到转换插件。 App.vue 是uni-app的主组件,所有页面都是在App.vue下进行切换的,是页面入口文件。但App.vue本身不是页面,这里不能编写视图元素。除此之外,应用生命周期仅可在App.vue中监听,在页面监听无效。 pages 页面管理部分用于存放页面或者组件 manifest.json 文件是应用的配置文件,用于指定应用的名称、图标、权限等。HBuilderX 创建的工程此文件在根目录,CLI 创建的工程此文件在 src 目录。 package.json 配置扩展,详情内容请见官网描述package.json概述

3.基本开发流程新建一个工程项目,如下所示,我们可以直接使用一些模板进行开发,这些模板会有一些基础的页面和配置,能够让我们减少前期的配置直接上手开发

 4. 安装插件

我们可以从工具里面—>插件安装—>安装新插件—>前往插件市场安装来安装自己所需要的插件和组件,能够快速提高开发效率

5.tab页面及二级页面路径配置

pages.json pages数组中第一项表示应用启动页,参考官网:uni-app官网

{//页面路径配置,未设置root则path默认完整路径"pages": [ {"path": "pages/index/index","style": {"navigationBarTitleText": "首页","enablePullDownRefresh": true}}],//二级页面,设置了root根文件路径,则path可以简写"subPackages": [{"root": "pages/test-sub","pages": [{"path": "login/index","style": {"navigationBarTitleText": "登录"}}]}],//全局样式配置"globalStyle": {"navigationBarTextStyle": "black","navigationBarTitleText": "uni-app","navigationBarBackgroundColor": "#F8F8F8","backgroundColor": "#F8F8F8"},"tabBar": {//tab样式和选中后效果"color": "#7A7E83","selectedColor": "#2BD3DE","borderStyle": "black","backgroundColor": "#F8F8F8",//tab页面配置,包括图标路径,tab名称、路径"list": [{"pagePath": "pages/index/index","iconPath": "static/农场_24种子.png","selectedIconPath": "static/农场_31花草.png","text": "首页"},{"pagePath": "pages/user/index","iconPath": "static/农场_36稻草人.png","selectedIconPath": "static/农场_28蜜蜂.png","text": "个人中心"},{"pagePath": "pages/test/index","iconPath": "static/农场_36稻草人.png","selectedIconPath": "static/农场_28蜜蜂.png","text": "测试页面"}]}}6.页面设计开发

基础设置完成后就可以直接在页面上开发了,uniapp的语法承袭vue,熟悉vue的同学可以快速的上手

7.vue , 微信小程序 , uni-app属性的绑定

vue和uni-app动态绑定一个变量的值为元素的某个属性的时候,会在属性前面加上冒号":"; 小程序绑定某个变量的值为元素属性时,会用两个大括号{{}}括起来,如果不加括号,为被认为是字符串。

8.jQuery、vue、小程序、uni-app中的本地数据存储和接收 jQuery:存:$.cookie('key','value')取:$.cookie('key')vue:存储:localstorage.setItem(‘key’,‘value’)接收:localstorage.getItem(‘key’)微信小程序:存储:通过wx.setStorage/wx.setStorageSync写数据到缓存接收:通过wx.getStorage/wx.getStorageSync读取本地缓存,uni-app:存储:uni.setStorage({key:“属性名”,data:“值”}) //异步 uni.setStorageSync(KEY,DATA) //同步接收:uni.getStorage({key:“属性名”,success(res){res.data}}) //异步uni.getStorageSync(KEY) //同步移除:uni.removeStorage(OBJECT) //从本地缓存中异步移除指定 key。uni.removeStorageSync(KEY) //从本地缓存中同步移除指定 key。清除:uni.clearStorage() //清理本地数据缓存。uni.clearStorageSync() //同步清理本地数据缓存。9.页面调用接口

getApp() 函数 用于获取当前应用实例,一般用于获取globalData getCurrentPages() 函数 用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。 uni.e m i t ( e v e n t N a m e , O B J E C T ) 和 u n i . emit(eventName,OBJECT)和uni.emit(eventName,OBJECT)和uni.on(eventName,callback) :触发和监听全局的自定义事件 uni.o n c e ( e v e n t N a m e , c a l l b a c k ) :监听全局的自定义事件。事件可以由 u n i . once(eventName,callback) :监听全局的自定义事件。事件可以由 uni.once(eventName,callback):监听全局的自定义事件。事件可以由uni.emit 触发,但是只触发一次,在第一次触发之后移除监听器。 uni.$off([eventName, callback]):移除全局自定义事件监听器。

2022 uniapp基础掌握及面试题整理(uniapp零基础小白到项目实战)

注意:uni.e m i t 、 u n i . emit、 uni.emit、uni.on 、 uni.o n c e 、 u n i . once 、uni.once、uni.off 触发的事件都是 App 全局级别的,跨任意组件,页面,nvue,vue 等

10.全局变量globalData//app.vue<script> export default { globalData: { msg: 'hello world' } } </script>//在其他页面调用/修改全局变量getApp().globalData.msg= 'hello world'11. vue,小程序,uni-app的生命周期vue:beforeCreate(创建前)created(创建后)beforeMount(载入前,挂载)mounted(载入后)beforeUpdate(更新前)updated(更新后)beforeDestroy(销毁前)destroyed(销毁后)小程序/uni-app: 1. onLoad:首次进入页面加载时触发,可以在 onLoad 的参数中获取打开当前页面路径中的参数。2. onShow:加载完成后、后台切到前台或重新进入页面时触发3. onReady:页面首次渲染完成时触发4. onHide:从前台切到后台或进入其他页面触发5. onUnload:页面卸载时触发6. onPullDownRefresh:监听用户下拉动作7. onReachBottom:页面上拉触底事件的处理函数8. onShareAppMessage:用户点击右上角转发12.unaipp中组件生命周期:

 13.路由与页面跳转

uniapp的页面跳转和小程序是一样的,都是跳转配置好的页面路径, 并且tab页面也是需要使用switchTab才能实现跳转,总体上和小程序保持一致,对于熟练小程序的朋友上手没有难度,反之,当你习惯了uniapp的页面切换组件后上手小程序也很快。

14.跨端适配—条件编译

开发者按照 uni-app 规范开发即可保证多平台兼容,大部分业务均可直接满足。但每个平台有自己的一些特性,因此会存在一些无法跨平台的情况。因此就有了条件编译这个模式,不仅是js逻辑代码,template和css样式都可以设置成在某个环境中生效,在其他环境不生效

//template<!-- #ifdef MP-WEIXIN --><!-- 只在小程序中生效 --><view>我是微信小程序</view><!-- #endif --><!-- #ifdef APP-PLUS --><!-- 只在 app 中生效 --><view>我是 app </view><!-- #endif -->//js// #ifndef H5// 表示只有 h5 不使用这个 apiuni.createAnimation(OBJECT)// #endif//css/* #ifdef MP-WEIXIN *//* 只在小程序中生效 */.header {color:red}/* #endif */

更多详细信息及平台适配请看官方文档

15.uniapp上传文件时使用的api//选择文件uni.chooseFile({ count: 6, //默认100 extension:['.zip','.doc'], success: function (res) { console.log(JSON.stringify(res.tempFilePaths)); }});// 选择图片文件uni.chooseFile({ count: 10, type: 'image', success (res) { // tempFilePath可以作为img标签的src属性显示图片 const tempFilePaths = res.tempFiles }})16.简述 rpx、px、em、rem、%、vh、vw的区别rpx相当于把屏幕宽度分为750份,1份就是1rpxpx绝对单位,页面按精确像素展示em相对单位,相对于它的父节点字体进行计算rem相对单位,相对根节点html的字体大小来计算%一般来说就是相对于父元素vh视窗高度,1vh等于视窗高度的1%vw视窗宽度,1vw等于视窗宽度的1%17.jq、vue、uni-app、小程序的页面传参方式区别1、 jq传参通过url拼接参数进行传参。2、 vue传参一、 vue可以通过标签router-link跳转传参,通过path+路径,query+参数二、 也可以通过事件里的this.$router.push({})跳转传参3、 小程序/uniapp传参通过跳转路径后面拼接参数来进行跳转传参//示例// navigate.vue页面接受参数onLoad: function (option) {const item = JSON.parse(decodeURIComponent(option.item));}

或者我们也可以自己封装一个解析携带参数数据的函数,然后在所需的页面引用即可,详细应用及思想可以看我另一篇文章,分享了自己对于入参处理的函数 自行封装入参获取函数

18.组件间通信

uniapp的组件通信基本上与vue框架下组件通信是一致,如果是学习过vue框架的同学,那么基本上没有任何阻碍,能够快速的在uniapp上实现组件间通信,还有些许疑惑的同学可以看我之前整理的这篇短文回顾下组件间通信方法集

19.uni.request封装

详情可以看我之前写的封装uniapp request 封装及使用思想

20.uniapp实现下拉刷新

实现下拉刷新需要用到uni.onPullDownRefresh和uni.stopPullDownRefresh这个两个函数,函数与生命周期同等级可以监听页面下拉动作

//1.在pages.json文件里找到需要下拉刷新的页面pages节点,并在 style 选项中开启enablePullDownRefresh。{"path": "pages/index/index","style": {"navigationBarTitleText": "首页","enablePullDownRefresh": true}},//2.在页面中调用监听下拉事件函数onPullDownRefresh() {//do some this.Fn()}//3.获取数据完毕后调用停止下拉刷新动画Fn(){//可以在调用的函数中获取接口数据或则操作其他事项//调取完毕后停止下拉刷新动画 uni.stopPullDownRefresh();}21.uniapp实现上拉加载

uniapp中的上拉加载是通过onReachBottom()这个生命周期函数实现,当下拉触底时就会触发。我们可以在此函数内调用分页接口请求数据,用以获取更多的数据

onReachBottom() { let data = this.data; let pageNum = data.pageNum; let pageStatus = 'loadmore'; if (data.pageNum * data.pageSize >= data.pageTotal) { pageStatus = 'nomore'; } if (pageStatus === 'loadmore') { pageNum++; pageStatus = 'loading'; this.setData({ pageNum: pageNum }, () => { this.getDataList(); }) } this.setData({pageStatus}) },/*我司的做法是用total来判断是否还有数据可以请求,还有的话就继续请求接口数据,并更新状态及分页数据;22.scroll-view吸顶问题问题:

scroll-view 是常会用到的一个标签,我们可以使用 position:sticky 加一个边界条件例如top:0 属性实现一个粘性布局,在容器滚动的时候,如果我们的顶部标签栏触碰到了顶部就不会再滚动了,而是固定在顶部。但是在小程序中如果你在scroll-view元素中直接为子元素使用sticky属性,你给予sticky的元素在到达父元素的底部时会失效。

解决:

在scroll-view元素中,再增加一层view元素,然后在再将使用了sticky属性的子元素放入view中,就可以实现粘贴在某个位置的效果了

23.ios输入框字体移动bug问题:

在IOS端有时,当输入框在输入后没有点击其他位置使输入框失焦的话,如果滚动窗口内部的字体也会跟着滚动

解决:// 更改后的输入框,//1、尝试了下,发现textarea不会和input一样出现字体随着页面滚动的情况,这是一个兼容方案//2、还有个不优雅的方案是输入完成后使用其他事件让其失焦或者disable,例如弹窗或者弹出层出来的时候可以暂时让input禁止,然后弹窗交互完成后再放开<textarea fixed="true" auto-height="true" ></textarea>/** * 设置拼接后的参数 * @param {String} data 参数 * @return {String} */ setPageParam(data) { let url = ''; for (let k in data) { let value = data[k] !== undefined ? data[k] : ''; if (typeof value === 'object') { value = JSON.stringify(value) } url += '&' + k + '=' + encodeURIComponent(value); } url = url ? url.substring(1) : ''; return url },/** * 跳转到下一个页面 * @param {String} url 跳转页面的名称 * @param {Object} param 跳转页面的传参 * @return null */ jumpPage(url, param) { if (!url) { return } let arrSwitch = ['/pages/index/index'];//tab页面数组 if (arrSwitch.includes(url)) { return uni.switchTab({//tab页面需要uni.switchPage跳转 url }) } if (param) { url += (url.indexOf('?') < 0 ? '?' : '&') + this.setPageParam(param);//拼接参数 } if (getCurrentPages().length > 9) { return uni.redirectTo({//如果栈满或者溢出就重定向 url }) } else { uni.navigateTo({ url }) } },24.git基础命令1、 git init 把这个目录变成git可以管理的仓库2、 git add 不但可以跟单一文件,也可以跟通配符,更可以跟目录。一个点就把当前目录下所有未追踪的文件全部add了3、 git commit -m ‘first commit’把文件提交到仓库4、 git remote add origin +//仓库地址 //关联远程仓库 5、 git push -u origin master //把本地库的所有内容推送到远程库上
本文链接地址:https://www.jiuchutong.com/zhishi/299400.html 转载请保留说明!

上一篇:十大经典排序算法(下)(十大经典排序算法(动图演示C 实现))

下一篇:Web实训项目--网页设计(附源码)(web实训报告怎么写)

  • 支付宝小青松在哪领取(支付宝小青松在哪里找到)

    支付宝小青松在哪领取(支付宝小青松在哪里找到)

  • 鸿蒙系统如何打开OTG功能(鸿蒙系统如何打开压缩文件)

    鸿蒙系统如何打开OTG功能(鸿蒙系统如何打开压缩文件)

  • 剪映怎么改变视频尺寸(剪映怎么改变视频方向)

    剪映怎么改变视频尺寸(剪映怎么改变视频方向)

  • 电脑微信截屏退不出去(电脑微信截屏时退出聊天记录)

    电脑微信截屏退不出去(电脑微信截屏时退出聊天记录)

  • 微信视频的时候美颜在哪里打开(微信视频的时候退出微信就看不到人了)

    微信视频的时候美颜在哪里打开(微信视频的时候退出微信就看不到人了)

  • 华为p30pro怎么给别的手机充电(华为p30pro怎么给软件设置密码)

    华为p30pro怎么给别的手机充电(华为p30pro怎么给软件设置密码)

  • 换机微信记录如何导入(手机微信记录换手机怎么导)

    换机微信记录如何导入(手机微信记录换手机怎么导)

  • 华为p40pro微信视频有美颜功能吗(华为p40pro微信视频怎么开美颜功能设置)

    华为p40pro微信视频有美颜功能吗(华为p40pro微信视频怎么开美颜功能设置)

  • 快手我的钱包在哪里(快手我的钱包在哪里看得到)

    快手我的钱包在哪里(快手我的钱包在哪里看得到)

  • qq音乐怎么关闭车载模式(qq音乐怎么关闭自动续费会员)

    qq音乐怎么关闭车载模式(qq音乐怎么关闭自动续费会员)

  • ctrl w键的功能是(ctrl作用)

    ctrl w键的功能是(ctrl作用)

  • 快手登录异常怎么回事(快手异常怎么办怎么解)

    快手登录异常怎么回事(快手异常怎么办怎么解)

  • 京东已付款怎样退订单(京东已付款怎样取消订单)

    京东已付款怎样退订单(京东已付款怎样取消订单)

  • 腾讯地图怎么添加店铺位置(腾讯地图怎么添加自己的公司)

    腾讯地图怎么添加店铺位置(腾讯地图怎么添加自己的公司)

  • 苹果7适合升级ios13吗(苹果7适合升级15.6吗)

    苹果7适合升级ios13吗(苹果7适合升级15.6吗)

  • 苹果x怎么省电设置方法(苹果x怎么省电不发热)

    苹果x怎么省电设置方法(苹果x怎么省电不发热)

  • 手机淘宝如何领金币(手机淘宝怎样领劵)

    手机淘宝如何领金币(手机淘宝怎样领劵)

  • 扫地机器人充电原理(扫地机器人充电位置)

    扫地机器人充电原理(扫地机器人充电位置)

  • 该用户已归隐山林是什么意思(该用户已归隐山林图片)

    该用户已归隐山林是什么意思(该用户已归隐山林图片)

  • 1660ti配什么电源(1660ti配电脑)

    1660ti配什么电源(1660ti配电脑)

  • 华为音量怎样变成横屏(华为如何音量调节)

    华为音量怎样变成横屏(华为如何音量调节)

  • note8和note9区别(note8和9a)

    note8和note9区别(note8和9a)

  • 苹果7悬浮窗怎么设置(苹果7悬浮窗怎么点不了)

    苹果7悬浮窗怎么设置(苹果7悬浮窗怎么点不了)

  • uniApp h5项目通过命令行打包,并生成指定路径、文件名称(uniapp h5发布)

    uniApp h5项目通过命令行打包,并生成指定路径、文件名称(uniapp h5发布)

  • 2022个税手续费返还交增值税吗
  • 增值税专用发票是干什么用的
  • 变更法人代表要查征信吗
  • 年报会计师审计费用
  • 金三财务报表如何更正
  • 公司开户费用都包括哪些
  • 投资款返还案例
  • 票据贴现利息费用计入
  • 土地款抵扣增值税申报
  • 法人购买设备怎么入账
  • 小规模纳税人未开票收入填在哪里
  • 税收编码选错了,发票已经开出去几个月了,还有影响吗
  • 企业申报表填写错误
  • 外籍劳务费个税扣除标准
  • 营改增后哪些费用可以抵扣
  • 权益净利率计算公式推导
  • 一级代理价格
  • 劳务派遣差额征税税率是多少
  • 建筑公司异地预缴增值税
  • 业务招待费不超过销售收入的5‰
  • 认证成功次月何时补发
  • Mac怎么更改锁屏密码
  • 企业免征增值税证明怎么打印
  • 预付工程款计入在建工程吗
  • win7系统中回收站的内容清空后还能恢复吗
  • 因有减免税款不退怎么办
  • 反射调用set方法
  • 土地增值税的计税依据
  • PHP:mcrypt_ecb()的用法_Mcrypt函数
  • 非城市公交企业管理办法
  • 伊斯塔神
  • lumenrt
  • 企业取得的分红款要交税吗
  • 招待费增值税能抵扣吗
  • redis如何实现分布式事务
  • node-js
  • transformerss
  • node.js最新版本
  • 销项税大于进项税当月交税吗
  • 怎么实现宏的功能
  • sqlserver2008数据库可疑
  • 缓交社保个税怎么报?
  • 处置废品收入税率
  • 计入税金及附加的税种顺口溜
  • 接受投资的固定资产按什么入账
  • 配电箱安装步骤及要求
  • 拆迁房视同销售成本可以抵减吗?
  • 房地产企业抵押借款
  • 项目开票分录
  • 进口增值税与关税发票哪里打印?
  • 质量问题扣款怎么开票
  • 资产减值损失可以计入营业外支出吗
  • 销售净利润怎么算
  • mysql同步问题之Slave延迟很大优化方法
  • Windows server 2003 最后一代cpu
  • Mysql 5.6.37 winx64安装双版本mysql笔记记录
  • 阿里云linux 服务器 字符集
  • 服务主机windows错误报告
  • windf9
  • ubuntu笔记软件
  • mac在哪设置
  • 一键u盘装系统软件哪个好
  • 神之浩劫能玩吗
  • win8隐藏任务栏怎么恢复
  • 如何关闭win8的windows defender
  • win8和win10双系统安装教程
  • linux系统有哪几个
  • 装了linux后windows没有了
  • cocos2d drawcall
  • 批处理统计文件夹内文件大小
  • python读json文件和写json文件
  • js实现滑块拖动
  • iframe的替代方案
  • node.js怎么样
  • csgo视角指令锁定枪械摇晃
  • js中布尔值为false的六种情况
  • 陕西税务局稽查处处长
  • 税务系统干部选拔任用工作树立导向
  • 车库契税怎么收费
  • 江苏电子税务局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设