欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于uniapp的知识点

程序员文章站 2022-06-13 20:47:27
...

1、uniapp怎么进行路由跳转?

一、uni.navigateTo(OBJECT)
保留当前页面(跳转新的页面),跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面(非tabBar注册页面使用该方法)
methods: {
toPath(){
//跳转非pages.json>tabbar>配置过的页面,使用navigateTo
//跳转时保留老页面,一般用于需要返回
uni.navigateTo({
url:"…/one/one"
})
}
}
uni.navigateTo(object)必填参数url
其他参数:
关于uniapp的知识点
传参:
//在起始页面跳转到test.vue页面并传递参数
uni.navigateTo({
url: ‘test?id=1&name=uniapp’
});
在test.vue页面接受参数:
export default {
onLoad: function (option) { //option为object类型,会序列化上个页面传递的参数
console.log(option.id); //打印出上个页面传递的参数。
console.log(option.name); //打印出上个页面传递的参数。
}
}
二、uni.redirectTo(OBJECT)
关闭当前页面,跳转到应用内的某个页面。(url参数必须填写)
实例:
methods: {
toPath(){
uni.redirectTo({
url:"…/two/two"//关闭当前页面跳转到two页面
})
}
}
关于uniapp的知识点
实例:uni.reLaunch({
url: ‘test?id=1’//带参数(如果跳转的页面路径是 tabBar 页面则不能带参数)
});
export default {
onLoad: function (option) {
console.log(option.id);
}
}
四、uni.switchTab(OBJECT)
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面(url参数必须填写)
跳转到 tabBar 页面只能使用 switchTab 跳转
methods: {
toPath(){
//跳转pages.json>tabbar>配置过的页面,使用switchTab
uni.switchTab({
url:"…/news/news"//需要跳转的 tabBar 页面的路径(需在 pages.json 的 tabBar 字段定义的页面),路径后不能带参数
})
}
}
关于uniapp的知识点
注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,而 redirectTo 方法则不会
// 此处是A页面
uni.navigateTo({
url: ‘B?id=1’
});

// 此处是B页面
uni.navigateTo({
url: ‘C?id=1’
});

// 在C页面内 navigateBack,将返回A页面
uni.navigateBack({
delta: 2
});
提示:

navigateTo, redirectTo 只能打开非 tabBar 页面。
switchTab 只能打开 tabBar 页面。
reLaunch 可以打开任意页面。
页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。
不能在 App.vue 里面进行页面跳转。

2、怎么配置tabbar

详情在:https://uniapp.dcloud.io/collocation/pages?id=tabbar
在pages.json中配置:
“tabBar”: {
“color”: “#7A7E83”,
“selectedColor”: “#3cc51f”,
“borderStyle”: “black”,
“backgroundColor”: “#ffffff”,
“list”: [{
“pagePath”: “pages/component/index”,
“iconPath”: “static/image/icon_component.png”,
“selectedIconPath”: “static/image/icon_component_HL.png”,
“text”: “首页”
}, {
“pagePath”: “pages/API/index”,
“iconPath”: “static/image/icon_API.png”,
“selectedIconPath”: “static/image/icon_API_HL.png”,
“text”: “我的”
}]
}

3、如何请求接口

请求接口是自己封装的
const baseUrl =“http://ceshi2.dishait.cn/api/v1/”;

let request = function(url,data={},method=“GET”){
uni.showLoading({
title: “加载中”
})

return new Promise((resolve,reject)=>{
	uni.request({
	    url: "/api"+url, //仅为示例,并非真实接口地址。
	    data,
		method,
		timeout:6000,
	    header: {
	        'custom-header': 'hello', //自定义请求头信息
			"content-type": "application/x-www-form-urlencoded",
			"token":uni.getStorageSync("token")
	    },
	
	    success: (res) => {
	        resolve(res)
	    },
		fail:(res)=>{
			reject(res)
		},
		// 结束loading
		complete: (e) => {
			uni.hideLoading()
		}
	});
})

}
module.exports=request
然后在main.js中引入全局设置
import hmw from ‘./utils/hmw.js’
Vue.prototype.hmw = hmw
在页面中是
this.hmw(")

4、 从uniapp使用的开发软件,到创建,到运行,如何打包不同平台的代码,如何打包apk,云打包,如何运行在不同的端

先进入HBuilder X,里面有个文件然后新建然后项目创建就可以了
打包:
关于uniapp的知识点
关于uniapp的知识点
关于uniapp的知识点

如何运行在不同端:
关于uniapp的知识点

5、如何使用组件

https://uniapp.dcloud.io/component/README

6、基础语法是什么

开发工具
HBuilderX,如果要开发uni-app肯定是官方的工具支持最好。

介绍
uni-app官方推荐使用flex布局,兼容性最好。
代码里的语法是小程序和vue的结合,uni-app之所以能兼容多平台也是因为小程序的出现。
并不是所有的代码都可以跑不同平台,有时候需要对不同平台进行独立编写。
工具
在HBuilderX工具里直接创建一个uni-app项目,就可以开始基础语法练习了。
模版语法与数据绑定
//正确用法,使用函数返回对象
data() {
return {
title: ‘Hello’
}
}

//错误写法,会导致再次打开页面时,显示上次数据
data: {
title: ‘Hello’
}
通过下面的方法引用数据:
标题: {{ title }}
条件渲染
v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别。
在data数据里,awesome为true的时候展示Vue is awesome.

Vue is awesome!

Oh no ????

**列表渲染** in和of都可以用做循环,没有区别 item是循环的内容,index是索引
  • {{ item.message }}

var example1 = new Vue({
el: ‘#example-1’,
data: {
items: [
{ message: ‘Foo’ },
{ message: ‘Bar’ }
]
}
})

基础组建
uni-app为开发者提供了一系列基础组件,类似HTML里的基础标签元素。但uni-app的组件与HTML不同,而是与小程序相同,更适合手机端使用。

了解View和ScrollView的内容(点击小标题可以传送过去)
自定义组件
先了解Vue组件的基础

传统vue组件,需要安装、引用、注册,三个步骤后才能使用组件。在uni-app里的easycom将其精简为一步。 只要组件安装在项目的components目录下,并符合components/组件名称/组件名称.vue目录结构。就可以不用引用、注册,直接在页面中使用。 如下:







注:HBuilderX 2.5.5起支持easycom组件模式。

条件编译
条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。
下面的简单例子,点我见更多详细https://blog.csdn.net/Aaren_Jiang/article/details/105923431?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522160708516219195265138671%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=160708516219195265138671&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-10-105923431.nonecase&utm_term=uniapp%E7%9A%84%E5%9F%BA%E7%A1%80%E8%AF%AD%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88。
#ifdef APP-PLUS
这里是app平台的代码
#endif

7、生命周期

在uni-app里面有三种什么周期:app生命周期、页面生命周期、组件生命周期。关于uniapp的知识点

8、uniapp中 nvue是什么?描述一下他的特点

uni-app App端内置了一个基于 weex 改进的原生渲染引擎,提供了原生渲染能力。
适用场景
nvue的组件和API写法与vue页面一致,其内置组件还比vue页面内置组件增加了更多,详见。

如果你熟悉 weex或react native 开发,那么 nvue 是你的更优选择,能切实提升你的开发效率,降低成本。

如果你是web前端,不熟悉原生排版,那么建议你仍然以使用vue页面为主,在App端某些vue页面表现不佳的场景下使用 nvue 作为强化补充。这些场景如下:

需要高性能的区域长列表或瀑布流滚动。webview的页面级长列表滚动时没有性能问题的(就是滚动条覆盖webview整体高度),但页面中某个区域做长列表滚动,则需要使用nvue的list、recycle-list、waterfall等组件(详见)。这些组件的性能要高于vue页面里的区域滚动组件scroll-view。
复杂高性能的自定义下拉刷新。uni-app的pages.json里可以配置原生下拉刷新,但引擎内置的下拉刷新样式只有雪花和circle圈2种样式。如果你需要自己做复杂的下拉刷新,推荐使用nvue的refresh组件。当然插件市场里也有很多vue下的自定义下拉刷新插件,只要是基于renderjs或wxs的,性能也可以商用,只是没有nvue的refresh组件更极致。
左右拖动的长列表。在webview里,通过swiper+scroll-view实现左右拖动的长列表,前端模拟下拉刷新,这套方案的性能不好。此时推荐使用nvue,比如新建uni-app项目时的新闻示例模板,就采用了nvue,切换很流畅。
实现区域滚动长列表+左右拖动列表+吸顶的复杂排版效果,效果可参考hello uni-app模板里的swiper-list。详见
如需要将软键盘右下角按钮文字改为“发送”,则需要使用nvue。比如聊天场景,除了软键盘右下角的按钮文字处理外,还涉及聊天记录区域长列表滚动,适合nvue来做。
解决前端控件无法覆盖原生控件的层级问题。当你使用map、video、live-pusher等原生组件时,会发现前端写的view等组件无法覆盖原生组件,层级问题处理比较麻烦,此时使用nvue更好。或者在vue页面上也可以覆盖一个subnvue(一种非全屏的nvue页面覆盖在webview上),以解决App上的原生控件层级问题。详见
如深度使用map组件,建议使用nvue。除了层级问题,App端nvue文件的map功能更完善,和小程序拉齐度更高,多端一致性更好。
如深度使用video,建议使用nvue。比如如下2个场景:video内嵌到swiper中,以实现抖音式视频滑动切换,例子见插件市场;nvue的视频全屏后,通过cover-view实现内容覆盖,比如增加文字标题、分享按钮。
直播推流:nvue下有live-pusher组件,和小程序对齐,功能更完善,也没有层级问题。
对App启动速度要求极致化。App端v3编译器模式下,如果首页使用nvue且在manifest里配置fast模式,那么App的启动速度可以控制在1秒左右。而使用vue页面的话,App的启动速度一般是3秒起,取决于你的代码性能和体积。
但注意,在某些场景下,nvue不如vue页面,如下:

canvas。nvue的canvas性能不高,尤其是Android App平台,所以这个组件干脆没有内置,而是需要单独引入。操作canvas动画,最高性能的方式是使用vue页面的renderjs技术,在hello uni-app里的canvas示例就是如此。
动态横竖屏。nvue页面的css不支持媒体查询,所以横竖屏动态切换、动态适配屏幕是很困难的。在HBuilderX的 uni-app 项目中,新建页面,弹出界面右上角可以选择是建立vue页面还是nvue页面,或者2个同时建。

不管是vue页面还是nvue页面,都需要在pages.json中注册。如果在HBuilderX中新建页面是会自动注册的,如果使用其他编辑器,则需要自行在pages.json里注册。

如果一个页面路由下同时有vue页面和nvue页面,即出现同名的vue和nvue文件。那么在App端,会仅使用nvue页面,同名的vue文件将不会被编译到App端。而在非App端,会优先使用vue页面。

如果不同名,只有nvue页面,则在非app端,只有uni-app编译模式的nvue文件才会编译。
详情见:https://uniapp.dcloud.io/nvue-outline?id=%e5%bf%ab%e9%80%9f%e4%b8%8a%e6%89%8b

如何进行存储数据,获取数据

存储:
uni.setStorage(OBJECT)
uni.setStorageSync(KEY,DATA)
获取:
uni.getStorage(OBJECT)
uni.getStorageSync(KEY)
uni.getStorageInfo(OBJECT)
uni.getStorageInfoSync()
详情见:https://uniapp.dcloud.io/api/storage/storage?id=getstorage

css像素单位使用什么最合适

移动端:rem vw vh
pc端:px rem响应式布局
微信小程序:rpx

都有哪些项目上出现的问题,以及如何解决的

https://blog.csdn.net/weixin_46648362/article/details/110670977

相关标签: uni-app