运用Hbuilder X创建一个项目
管理项目:dev.dcloud.net.cn/pages/app/l…
通过Hbuilder创建的项目可以登录开发者中心,对项目和成员进行管理
小程序到uni-app的转换器
目前已经有作者开源了小程序转uni-app的转换器
- 使用HBuilderX插件ext.dcloud.net.cn/plugin?id=2…,直接转换小程序到uni-app
- 微信小程序转换uni-app指南及转换器: ask.dcloud.net.cn/article/357…
- 插件使用常见问题汇总:www.yuque.com/docs/share/…
- GitHup地址:github.com/zhangdaren/…
使用转换器不是100%转换的,有些组件和语法、第三方框架暂时还不支持,只能手动修改。转完是vue2版本的
h5转uni-app
目前没有插件可用,只能手动修改
Hbuilder创建的项目转npm包,脱离Hbuilder:uniapp.dcloud.net.cn/quickstart-…
css
- 不支持兄弟、父子选择器等,比如 “>,~”不支持,会报错
html
- 标签会被转成view ,建议用span替代
JS
- 不认识window.location.href 、createElement、document等元素,需要用uni提供的api(小程序端)
//获取页面元素
let query = uni.createSelectorQuery().in(this);
//获取windows信息
uni.getWindowInfo()
// 获取系统信息
uni.getSystemInfo()
-
请求接口必须带协议头,小程序内它不给补
-
外部JS引入,外链引入?小程序报错
组件更换
image:<image> 不重置宽高,组件默认宽度 320px、高度 240px,值得注意的是如果设置height:auto浏览器渲染结果是高度为0.
表单组件、 swiper
滚动踩坑
滚动分为页面滚动和scroll-view滚动
页面滚动:
onPageScroll(e) {
//通过这个函数钩子获取页面滚动信息
e.scrollTop
//页面滚动的高度
}
uni.getWindowInfo().screenHeight
//获取页面可视区的高度
// 计算文档总高度
const query = uni.createSelectorQuery().in(this);
uni.getSystemInfo({
success: resu => {
const query = uni.createSelectorQuery()
query.select('.list-main').boundingClientRect()
query.exec(res => {
res[0].height //获取文档的总高度
//可以通过计算实现加载更多
})
}
})
scroll-view滚动
//使用scroll-view必须设置高度,否则获取不到滚动信息,走的还是页面的滚动条
<scroll-view class="list-main" scroll-with-animation scroll-y="true" :scroll-top="scrollTop" @scroll="scroll">
scroll (e) {
let self = this;
// console.log(e)
//记录scroll 位置
self.oldScrollTop = e.detail.scrollTop;
//滚动的高度
self.isShowGoTop = self.oldScrollTop>500;
//显示返回顶部按钮
e.detail.scrollHeight
//scroll-view的总高度
},
//返回顶部
goTop(){
//视图会发生重新渲染
this.scrollTop = this.oldScrollTop
//当视图渲染结束 重新设置为0
this.$nextTick(() =>{
this.scrollTop = 0
});
this.isShowGoTop = false;
}
如果需要使用router,需要单独安装插件uni-simple-router
npm包开发模式 直接执行
npm install uni-simple-router
hbuilder创建的项目可以去插件市场安装插件
有一些插件只能通过npm包的形式安装,比如:weixin-js-sdk
npm install weixin-js-sdk
如果你是hbuilder创建的项目,可以引入cdn地址,最好不要放在index.html中(index.html可以在manifest.json中设置),可以通过js的方式添加,如果是全局引入,可以放在main.js中
自定义模板参考:uniapp.dcloud.net.cn/collocation…
一个分享的例子
main.js
// #ifdef H5 var shareDesc = "XXXX";
var shareTitle = "XXXXX";
var shareLink = window.location.href;
var photourl = "分享图片";
let script0 = document.createElement('script') let script1 = document.createElement('script') let script2 = document.createElement('script') let script3 = document.createElement('script') script0.type = 'text/javascript'
script1.type = 'text/javascript'
script2.type = 'text/javascript'
script3.type = 'text/javascript'
script0.innerText = `var photourl ='${photourl}';var shareTitle ='${shareTitle}';var shareLink ='${shareLink}';var shareDesc ='${shareDesc}';`
script1.src = 'jquery-1.4.2.min.js'
script2.src = '//res.wx.qq.com/open/js/jweixin-1.0.0.js'
script3.src = '分享方法封装'
document.getElementsByTagName('head')[0].appendChild(script0)
document.getElementsByTagName('head')[0].appendChild(script1)
script1.onload = function () {
document.getElementsByTagName('head')[0].appendChild(script2)
script2.onload = function(){
document.getElementsByTagName('head')[0].appendChild(script3) } } // #endif
单页面添加小程序分享
/** * 用户点击右上角分享 */
onShareAppMessage(res) {
return {
title: "分享标题文案",
path: "/pages/sharkList/sharkList",//分享页面路径
imageUrl: "分享图片链接",
}
},