1基础组件:
什么是组件:
<ul>
<li>组件是视图层的基本组成单元。</li>
<li>组件自带一些功能与微信风格的样式。</li>
<li>一个组件通常包括开始标签
和结束标签
,属性
用来修饰这个组件,内容
在两个标签之内。</li>
</ul>
2属性类型
<ul>
<li>Boolean 布尔值 组件写上该属性,不管该属性等于什么,其值都为true
,只有组件上没有写该属性时,属性值才为false
。如果属性值为变量,变量的值会被转换为Boolean类型</li>
<li>Number 数字 1
, 25</li>
<li>String 字符串 "string"</li>
<li>Array 数组 [ 1, "string" ] </li>
<li>Object 对象 { key: value } </li>
<li>EventHandler 事件处理函数名 "handlerName"
是 Page中定义的事件处理函数名</li>
<li>Any 任意属性 </li>
</ul>
3共同属性类型
id , class , style , hidden , data- , bind / catch
4特殊属性
几乎所有组件都有各自定义的属性,可以对该组件的功能或样式进行修饰
5组件列表
基础组件分为以下八大类:
视图容器(View Container):
view 视图容器 , scroll-view 可滚动视图容器, swiper 滑块视图容器
基础内容(Basic Content):
icon 图标, text 文字, progress 进度条
表单(Form):
button 按钮, form 表单, input 输入框, checkbox 多想选择器, radio 单选器, picker 列表选择器, slider 滚动选择器, switch 开关选择器, label 标签
*** 作反馈(Interaction)
action-sheet 上拉菜单
modal 模态d窗
toast 消息提示框
loading 加载提示符
导航Navigation
navigator 应用链接
多媒体(Media)
audio 音频, image , video 视频
地图
map 地图
画布Canvas
canvas 画布
flex: vt折曲,使收缩; vi玩去,收缩
使用kbone开发的微信小程序,只需要做稍微的修改就可以用到 web 端和 qq 小程序,很方便。
因为我之前的项目工程化程度很高,所以在刚开始用的时候因为惯性思维遇到了一些问题。
在 kbone + vue 的项目中可以使用 vue-router,但是web用一个router文件,小程序的 router 要另写。
我们在官方给出的 vue 项目模版的基础上做了一些目录调整:
现在我们要新增一个页面,文章详情页面, /article/:id ,首先我们需要在 src/article/mp/mainmpjs 中添加路由:
这里要注意:
tabbar 的配置主要写在 miniprogramconfigjs 中的 generate 属性里:
这里要注意:
所有 tabbar 的页面在注册路由时,需要有一个 / 路径,比如,我们把 article 页面作为一个 tab 页,那么我们需要改写一下注册的路由写法:
因为在微信小程序中不能直接使用 axios ,需要用 wxrequest ,而 web 端不能用 wxrequest ,所以我们需要找一个在 web 端和小程序上都能进行正常网络请求的方案。这里我们采用了 axios + adapter ,即 axios-miniprogram-adapter 。
使用的时候注意做一下环境判断:
微信小程序和qq小程序都可以用官方推荐的 rpx 做适配,我们要做的是对 web 端做一下兼容。
我们可以在 webpack 中的 sass-loader 里写一个全局变量 $isMini 做环境的区分,然后我们就可以写一个转换设计稿尺寸的方法,在这个方法里借助前面注册的变量进行尺寸转换(假设设计稿是 750px 宽的):
这里要注意的是 rpx 和 px 的转换关系,以 iphone6 为例: 750rpx = 375px。
微信小程序也支持 rem,设置的时候需要在 miniprogramconfigjs 的 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" ;
页面的下拉刷新、加载中提示、上拉加载更多等配置需要在miniprogramconfigjs 里配置;
全局滚动事件也需要先配置,才能用 windowaddEventListener('scroll', () => {})
而且要取到 scrolltop 要用 documentbody$$getBoundingClientRect ;
总而言之呢就是多看文档、仔细看文档啦。
windowopen相当于 navigateTo,页面打开方式为 open;
windowlocationhref相当于redirectTo,页面打开方式为 jump;
不可否认它确实有很多方便的地方,但是在样式方面和组件支持方面简直令人抓狂。另外,编译速度和开发者工具都很慢。真的是一言难尽。今天又是修bug的一天,修到吐。
自学前端其实很辛苦,需要有强大的自制力和坚持下去的学习心,并且做好详细的学习规划严格执行;如果你想学前端,下面的学习路线或许对你有帮助。
前端完整学习路线
第一阶段:
HTML CSS:HTML进阶、CSS进阶、div css布局、HTML css整站开发。
JavaScript基础:Js基础教程、js内置对象常用方法、常见DOM树 *** 作大全、ECMAscript、DOM、BOM、定时器和焦点图。
JS基本特效:常见特效、例如:tab、导航、整页滚动、轮播图、JS制作幻灯片、d出层、手风琴菜单、瀑布流布局、滚动事件、滚差视图。
JS高级特征:正则表达式、排序算法、递归算法、闭包、函数节流、作用域链、基于距离运动框架、面向对象基础。
JQuery:基础使用悬着器、DOM *** 作、特效和动画、方法链、拖拽、变形、JQueryUI组件基本使用。
第二阶段:HTML5和移动Web开发
HTML5:HTML5新语义标签、HTML5表单、音频和视频、离线和本地存储、SVG、Web Socket、Canvas。
CSS3:CSS3新选择器、伪元素、脸色表示法、边框、阴影、background系列属性改变、Transition、动画、景深和深透、3D效果制作、Velocityjs框架、元素进场、出场策略、炫酷CSS3网页制作。
Bootstrap:响应式概念、媒体查询、响应式网站制作、删格系统、删格系统原理、Bootstrap常用模板、LESS和SASS。
移动Web开发:跨终端WEB和主流设备简介、视口、流式布局、d性盒子、rem、移动终端JavaScript事件、手机中常见JS效果制作、Zeptojs、手机聚划算页面、手机滚屏。
第三阶段:>
WEB服务器基础:服务器基础知识、Apache服务器和其他WEB服务器介绍、Apache服务器搭建、>
PHP基础:PHP基础语法、使用PHP处理简单的GET或者POST请求。
AJAX上篇:Ajax简介和异步的概念、Ajax框架的封装、XML>
AJAX下篇:JSON和JSON解析、数据绑定和模板技术、JSONP、跨域技术、预读取和lazy-load技术、JQuery框架中的AjaxAPI、使用Ajax实现爆布流案例额。
第四阶段:面向对象进阶
面向对象终极篇:从内存角度到理解JS面向对象、基本类型、复杂类型、原型链、ES6中的面向对象、属性读写权限、设置器、访问器。
面向对象三大特征:继承性、多态性、封装性、接口。
设计模式:面向对象编程思维、单例模式、工厂模式、策略模式、观察者模式、模板方法模式、代理模式、装饰者模式、适配器模式、面向切面编程。
第五阶段:封装一个属于自己的框架
框架封装基础:事件流、冒泡、捕获、事件对象、事件框架、选择框架。
框架封装中级:运动原理、单物体运动框架、多物体运动框架、运动框架面向对象封装。
框架封装高级和补充:JQuery框架雏形、可扩展性、模块化、封装属于传智自己的框架。
第六阶段:模块化组件开发
面向组件编程:面向组件编程的方式、面向组件编程的实现原理、面向组件编程实战、基于组件化思想开发网站应用程序。
面向模块编程:AMD设计规范、CMD设计规范、RequireJS,LoadJS、淘宝的SeaJS。
第七阶段:主流的流行框架
Web开发工作流:GIT/SVN、Yeoman脚手架、NPMer依赖管理工具、Grunt/Gulp/Webpack。
MVC/MVVM/MVW框架:Angularjs、Backbonejs、Knockout/Ember。
常用库:Reactjs、Vuejs、Zeptojs。
第八阶段:HTML5原生移动应用开发
Cordova:WebApp/NativeApp/HybirdApp简介、Cordova简介、与PhoneGap之间的关系、开发环境搭建、Cordova实战(创建项目,配置,编译,调试,部署发布)。
Ionic:Ionic简介和同类对比、模板项目解析、常见组件及使用、结合Angular构建APP、常见效果(下拉刷新,上拉加载,侧滑导航,选项卡)。
React Native:React Native简介、React Native环境配置、创建项目,配置,编译,调试,部署发布、原生模块和UI组件、原生常用API。
HTML5 :HTML5 中国产业联盟、HTML5 Plus Runtime环境、HBuilder开发工具、MUI框架、H5 开发和部署。
第九阶段: Nodejs全栈开发:
快速入门:Nodejs发展、生态圈、Iojs、Linux/Windows/OS X环境配置、REPL环境和控制台程序、异步编程,非阻塞I/O、模块概念,模块管理工具、开发流程,调试,测试。
核心模块和对象:全局对象global,process,console,util、事件驱动,事件发射器、加密解密,路径 *** 做。
祝你学有所成!
首先看看官方提供的模态d窗
api如下:
示例:
这样的模态d窗,充其量只能做个alert,提示一下信息。
但是并不能使用它来处理复杂性的d窗业务,因此写了Michael从新自定义了一个,采用了仿原生的样式写法
wxml:
wxss:
js:
相关连接: >
只需要关闭当前页面的下拉刷新功能,只要在当前页面的json文件中配置:
!!!注意:值为布尔类型,不是字符串类型。
关闭或打开真整个小程序的下拉刷新功能,在appjson里面配置就OK了,true为开启下拉刷新,false为关闭下拉刷新功能。
enablePullDownRefresh的值默认时为false,但有些页面在IOS手机上面会有下拉刷新功能,这时只要在当前页面JSON文件配置这个参数就可以了。
首先在微信中点击打开一个聊天页面,然后点击右下角的“+”按钮。 2、然后在下方的页面中点击左侧的“+”图案。 3、此页面上点击右上角的“整理”选项。 4、然后在点击此处的“完成”,保存的就会展现出来了。 微信里为什么有的表情显示不出来 这是微信的bug,点击表情后,下面右边数第二个位置有个设置的按钮,点击它。然后会出现一个列表,继续上拉,看到“我收藏的表情”点击进入。 这时候你会发现和外面一样收藏的表情还是看不到,但是格子都在。点击右上角“编辑”。收藏的表情都出现了。
在容器内向下滚动内容至底部的时候,偶尔会出现不触发bindscrolltolower事件,还是可以触发,但是必须先下滑再上拉才能触发
应该是因为安卓手机下拉滑动到底部时,系统监听到距离底部的距离通常大于50,所以不能触发相应的函数;而小程序默认下拉离底部50px时触发函数(ios没有这种情况)
可以通过官网给出的属性让他在滑动到底部之前执行加载
将lower-threshold设置成200
wxml内容:
<view bindtap="a" data-f="{{flag}}">123</view>
<!-- wx:for="{{数组}}" 循环需要绑定key wx:key="index"-->
<!-- 自带定义 item 表示数组的每一项 index 表示数组的索引 -->
<!-- 使用wx:for-item修改每一项值的key -->
<!-- 使用wx:for-index修改每一项值的index -->
<view wx:for="{{list}}" class="t" wx:key="i"
wx:for-item="r" wx:for-index="i"
style="color:{{rstyFlag'red':''}};"
data-i="{{i}}"
bindtap="choose"
>
{{rname}}--{{i}}
</view>
js内容:
data: {
flag:1,
list:['冰墩墩','雪融融','小泡菜'],
list:[{
name:'冰墩墩',
styFlag:true
},{
name:'雪融融',
styFlag:false
},{
name:'小泡菜',
styFlag:false
}]
},
choose:function(e){
let { currentTarget:{ dataset:{i} } } = e;
/ 第一步获取点击的当前的内容的索引 /
consolelog(i)
/ 排他 把所有的先置空 /
thisdatalistforEach(r=>{
rstyFlag = false
})
thisdatalist[i]styFlag = true;
/ 数据变了 视图没变 必须要使用setData实现数据和视图的双向数据绑定 /
thissetData({
list:thisdatalist
})
},
a:function(e){
consolelog(e)
},
效果:
wxml内容:
<button bindtap="go1" style="margin: 3px;">张三</button>
<button bindtap="go2" style="margin: 3px;">李四</button>
<button bindtap="go3" style="margin: 3px;">24号</button>
<button bindtap="go4" style="margin: 3px;">不带参数</button>
<button bindtap="goBack">返回上一级</button>
<!-- wx:if 和 wx:elif 以及wx:else之间不可以被其他的标签打断 -->
<block>
<view wx:if="{{msg=='zhangsan'}}" class="t">欢迎回来主人</view>
<view wx:elif="{{msg=='lisi'}}" class="t">家里水龙头没有坏不要过来</view>
<view wx:elif="{{msg=='24'}}" class="t">您好欢迎为您服务</view>
<view wx:else class="t">显示家里没人</view>
</block>
js内容:
Page({
/
页面的初始数据
/
data: {
msg:""
},
goBack:function(){
wxnavigateBack()
},
/
生命周期函数--监听页面加载
/
onLoad: function (options) {
consolelog(optionsname)
/ 多次使用setData会影响性能 尽量把多次setData 使用一次setData来实现
尽量少的使用setData来提高小程序的性能 /
thissetData({
msg:optionsname
})
/ 如果名字叫张三 页面显示欢迎回来主人 /
/ 如果名字叫李四 页面显示家里水龙头没有坏不要过来 /
/ 如果名字叫24号 页面显示您好欢迎为您服务 /
/ 都不是 显示家里没人 /
},
/
生命周期函数--监听页面初次渲染完成
/
onReady: function () {
},
/
生命周期函数--监听页面显示
/
onShow: function () {
},
/
生命周期函数--监听页面隐藏
/
onHide: function () {
},
/
生命周期函数--监听页面卸载
/
onUnload: function () {
},
/
页面相关事件处理函数--监听用户下拉动作
/
onPullDownRefresh: function () {
},
/
页面上拉触底事件的处理函数
/
onReachBottom: function () {
},
/
用户点击右上角分享
/
onShareAppMessage: function () {
}
})
{
"pages": [
"pages/index/index",
"pages/forpage/forpage",
"pages/mypage/mypage",
"pages/logs/logs",
"pages/fenglei/fenglei"
],
"window": {
"backgroundTextStyle": "dark",
"navigationBarBackgroundColor": "#FF0000",
"navigationBarTitleText": "kw47page",
"navigationBarTextStyle": "white"
},
"tabBar": {
"color": "#fff",
"selectedColor": "#FFCA28",
"backgroundColor": "#000",
"list": [{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath": "",
"selectedIconPath": ""
}, {
"pagePath": "pages/logs/logs",
"text": "日志",
"iconPath": "",
"selectedIconPath": ""
}]
},
"style": "v2",
"sitemapLocation": "sitemapjson"
}
效果图:
以上就是关于微信小程序_组件全部的内容,包括:微信小程序_组件、kbone + vue 问题集合、自学前端,前端开发的学习路线是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)