因为我之前的项目工程化程度很高,所以在刚开始用的时候因为惯性思维遇到了一些问题。
在 kbone + vue 的项目中可以使用 vue-router,但是web用一个router文件,小程序的 router 要另写。
我们在官方给出的 vue 项目模版的基础上做了一些目录调整:
现在我们要新增一个页面,文章详情页面, /article/:id ,首先我们需要在 src/article/mp/main.mp.js 中添加路由:
这里要注意:
tabbar 的配置主要写在 miniprogram.config.js 中的 generate 属性里:
这里要注意:
所有 tabbar 的页面在注册路由时,需要有一个 / 路径,比如,我洞卜们把 article 页面作为一个 tab 页,那么我们需要改写一下注册的路由写法:
因为在微信小程序中不能直接使用 axios ,需要用 wx.request ,而 web 端不能用 wx.request ,所以我们需要找一个在 web 端和小程序上都能进行正常网络请求的方案。这里我们采用了 axios + adapter ,即 axios-miniprogram-adapter 。
使用的时候注意做一下环境判断:
微信小程序和qq小程序都可以用官方推荐的 rpx 做适配,我们要做的是对 web 端做一下兼容。
我们可纳友穗以在 webpack 中的 sass-loader 里写一个全局变量 $isMini 做环境的区分,然后我们就可以写一个转换设计稿尺寸的方法,在这个方法里借助前面注册的变量进行尺寸转换(假设设计稿是 750px 宽的):
这里要注意的是 rpx 和 px 的转换关系,以 iphone6 为例: 750rpx = 375px。
微信小程序也支持 rem,设置的时候需要在 miniprogram.config.js 的 global 字段中配置:
因为我们用的是 sass,而官方模版用的是 less,这里就顺便提一下,如果要用 sass,记得要在 build 目录下的各个 webpack 文件中进行对应的 loader 配置哦。
这个库可以在小程序和 web 端都能正常使用。
要注意的是使用的时候,不要忘记引入样式文件哦:
刚接触小程序的朋友还可以看一下微信原生组件的使用,因为 kbone-ui 的文档写的不是很详细,有些还是结合原生组件的文档好理解一点。
包括内置组件的使用,也可以结合原生组件的文档使用。
微信小程序现在支持单页面自定义导航,但是 kbone 如果要自定义导航,所有页面的导航都需要自己写。
导航条分为两部分,statusbar(显示时间的部分)和 titlebar (标题栏)。
statusbar 的高度:
titlebar 的高度:
导航条的高度告指:
如果是用在微信小程序上,那么现在这两个 api 的使用时机不需要特别注意,但如果是同时要用在qq小程序上,就需要注意使用的时机啦,如果直接在计算属性或者 created 中使用会出现报错,取不到内容的情况。
我是在created 中用了 settimeout 延迟使用这两个 api来解决这个问题的。
getMenuBarRect 这个方法是参考了网上找到的一个作者的方法,做了点修改,修改后可以正常使用,但是有个问题,因为 systeminfo 一开始取不到值,会用默认值,后来取到正确值时自定义头部的高度会有个突变,就是会跳一下。这个还没有优化。
比如,自定义分享内容的path要写全;
appid在微信小程序里叫appid,在qq小程序配置里叫qqappid;
微信小程序图片可以只设置宽度不设置高度,这样不会变形;
qq小程序图片只设置宽度不设置高度,图片会显示不出来,需要加属性 mode="widthFix" ;
页面的下拉刷新、加载中提示、上拉加载更多等配置需要在miniprogram.config.js 里配置;
全局滚动事件也需要先配置,才能用 window.addEventListener('scroll', () =>{...})
而且要取到 scrolltop 要用 document.body.$$getBoundingClientRect ;
总而言之呢就是多看文档、仔细看文档啦。
window.open相当于 navigateTo,页面打开方式为 open;
window.location.href相当于redirectTo,页面打开方式为 jump;
不可否认它确实有很多方便的地方,但是在样式方面和组件支持方面简直令人抓狂。另外,编译速度和开发者工具都很慢。真的是一言难尽。今天又是修bug的一天,修到吐。
一个uni-app工程,默认包含如下目录及文件:
┌─common用于存放一些通用的 js/css/less/scss
│─cloudfunctions云函数目录(阿里云为aliyun,腾讯云为tcb)
│─ components 符合vue组件规范的uni-app组件目录
│ └─comp-a.vue 可复用的a组件
├─hybrid存放用于webview的本地网页的目录, 详见
├─platforms 存放各平台专用页面的目录, 详见
│ ├─ app-plus app
│ ├─ h5 h5
│ ├─ mp-weixin 微信小程序
├─ pages 业务页面文件存放的目录
│ ├─index
│ └─index.vue index页面
├─ static 存放静态资源(如图片、视频等)的目录, 打包时其内容直接拷贝而不编译
├─wxcomponents 存放小程序组件的目录, 详见
│ └──custom 微信小程序自定义组件
│├─index.js
│├─index.wxml
│├─index.json
│└─index.wxss
├─ main.jsVue初始化入口文件
├─ App.vue应用配置,用来配置App全局样困隐迟式以及监听 应用生命周期
├─ manifest.json 配置应用名称、appid、logo、版本等打包信息, 详见
└─ pages.json 配置页面路由、导航条、选项卡等页面类信息, 详见
运行在视图层的js,避免逻辑层和渲染层汪李交互通信折损。
仅支持编译到微信小程序、H5、app-vue
nvue可用bindingx代替
运行在视图层的js,避免逻辑层和渲染层交互通信折损。
性能比WXS更好。
仅支持编译到 app-vue 和 H5
在视图层 *** 作dom,因此可接触到dom、bom API,可使用f2、echarts、threejs库,但不可直接访问逻辑层数据,因此不可以使用 uni 相关接口(如:uni.request)
基于 weex 改进的原生渲染引擎,提供了原生渲染能力。
vue页面使用webview渲染;nvue页面使用原生渲染。一个项目中两种页面可以混用。
仅可在App.vue中监听,在其它页面监听无效。
onLaunch 、onShow、onHide 、onError 等
onLoad 、onShow 、onReady 、onHide 、onUnload 、onPullDownRefresh 、onReachBottom 、onBackPress、onPageScroll等
同vue组件生命周期
beforeCreate、created、beforeMount、mounted、beforeDestroy、destroyed
通过pages.json配置,通过 navigator 组件或调用 API 跳转,类似小程序
可以在 vue-config.js 中配置更多环境
vue页面是webview渲染的、app端的nvue页面是原生渲染的。
为保证通用,应使用flex布局
rpx和px是通用的,但 rem、vw、vh、百分比等在nvue中不支持
rpx不支持动态横竖屏切换计算,使用rpx建议锁定屏幕方向
App端,在 pages.json 里的 titleNView 或页面里写的 plus api 中涉及的携薯单位,只支持 px,不支持 rpx
没有 * 选择器
page 代替了 body 选择器
App.vue 中的样式为全局样式,nvue页面不支持全局样式
不支持 / 的绝对路径
引入字体图标请参考, 字体图标
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)