
小程序是什么?
小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载
小程序目录结构
.js/,json/.wxml/.wxss组成页面
小程序配置.json
小程序根目录下的 app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。
Pages:配置小程序页面路径
Window:用于设置小程序的状态栏、导航条、标题、窗口背景色。
tabBar:如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面
小程序生命周期
onLaunch:监听小程序初始化时
onShow:监听小程序启动或切前台
onHide:监听小程序切后台。
onError:错误监听函数。
App:共享给所有页面使用在页面值使用getApp()得到app实例并使用里面定义的方法与变量
页面生命周期
- // pages/index.js
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- type:""
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
-
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {
- },
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: function () {
- },
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
- },
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
- },
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {
- },
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {
- },
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
- }
- })
页面跳转(路由)
组件跳转:navigator
- url:跳转的路径
- open-type:跳转方式
- navigatorTo:打开新页面 默认打开方式
- redirectTo :重定向
- navigateBack :返回上一页
- switchTab :打开tab选项卡 在app.js中的tabbar配置过得页面这位tab选项卡页面而选项页面只能用该类型打开
- reLaunch :重新打开
js跳转:
- wx.navigatorTo:打开新页面
- wx. redirectTo :重定向
- wx. navigateBack :返回上一页
- wx. switchTab :打开tab选项卡
- wx. reLaunch :重新打开
页面与页面之间路由传值:
路径传值:pages/info/info?id=1
得值:在页面的onload生命周期中使用options.id即可
数据绑定
在wxml中使用“{{str}}”的方式绑定数据
循环绑定数据
使用wx:for=”{{obj}}”
可以使用wx:for-index设置索引的名称如果不设置默认为index
Wx:for-item设置循环后每项值得名称不设置默认为item
- <view wx:for="{{arr}}" wx:key="{{this}}">
- {{index}}----{{item}}
- </view>
模板
注意:模板不是组件
模板只是一个被template包裹的一个代码块而已并不是组件
- <template name="mytemp">
- <view>我是一个模板传递进来的值为:{{name}}</view>
- </template>
- <template is="mytemp" data="{{name}}"></template>
- <template is="mytemp" data="{{name}}"></template>
引用模板:
创建一个.wxml文件在里面编写模板
使用import引入模板文件
- <template name="myclass">
- <view class="list-box">
- <view wx:for="{{datalist}}" wx:key="{{this}}" class="list-item">
- <view>
- <image src="{{item.src}}"></image>
- </view>
- <view>{{item.title}}</view>
- </view>
- </view>
- </template>
引用:
- <import src="../../template/list.wxml" />
- <template is="myclass" data="{{datalist}}"></template>
组件
小程序中的组件原理vue、angular等js框架原理类似。可以父组件向子组件传值、子组件向父组件传值、
注意组件不是页面:创建的组件的js文件中构造函数是component而页面的js中是page、同时创建的组件也不会存在app.js中的pages字段中
slot
Component的slot(slot意思是插槽),主要是让你在外部的wxml可以自由的在你的Component的wxml里插入模块。默认情况下,一个组件的wxml只可能有一个slot。需要使用多个时,可以在组件js中声明启用。
- Component({
- options: {
- multipleSlots: true // 在组件定义时的选项中启用多slot支持
- },
- properties: { /* ... */ },
- methods: { /* ... */ }
- })
使用多个插槽
- <web39-nav><view slot="one">123456</view><view slot="two">哈哈哈</view></web39-nav>
组件样式编写注意事项
? 组件和引用组件的页面不能使用id选择器(#a)、属性选择器([a])和标签名选择器,请改用class选择器。
? 组件和引用组件的页面中使用后代选择器(.a .b)在一些极端情况下会有非预期的表现,如遇,请避免使用。
? 子元素选择器(.a>.b)只能用于 view 组件与其子节点之间,用于其他组件可能导致非预期的情况。
? 继承样式,如 font 、 color ,会从组件外继承到组件内。
? 除继承样式外, app.wxss 中的样式、组件所在页面的的样式对自定义组件无效
创建一个组件
一个组件需要包括json、wxml、wxss、js四个文件组成
创建一个文件夹component来存放公共组件
在component文件夹中穿件自己的组件选择新建component即可
创建组件后组件.json中存在声明组件配置
- Component:true
Data:
初始化数据
- data: {
- obj:"小明"
- },
Methods
组件内自定义函数
- <text bindtap="myclick" data-index="{{index}}">{{item}}</text>
- myclick:function(e){
- var index = e.target.dataset.index
- console.log(this.data.datalist[index]);
- }
使用组件
在需要使用组件的页面json文件中引入与配置组件名如:
- "usingComponents": {
- "web39-nav":"/components/nav/nav"
- }
在页面wxml中使用并向nav组件传值
- <web39-nav title=”{{shoptitle}}”></web39-nav>
父组件向子组件传值:
1、 创建接受传值的参数:
在js文件中的component函数中的properties用于声明属性(也就是接受的参数):
- properties: {
- title:{
- type:String,
- value:"这是标题"
- }
- },
组件向页面传值
组件向页面传值是使用的出发自定义事件的方式传递
在组件中使用this.triggerEvent()出发页面中定义的自定义事件并传值页面中定义函数来接受传值
页面中自定义事件使用bind:xxx 其中getdata为接收组件传递过来值得函数
<web39-nav bind:getcom="getdata" title="首页" datalist="{{listdata}}"></web39-nav>
组件中出发自定义事件
- myclick:function(e){
- var index = e.target.dataset.index
- //出发页面上自定义的事件名
- this.triggerEvent("getcom", this.data.datalist[index])
- }
创建组件步骤:
1、 声明组件
2、 接收传值
3、 挂载子组件
4、 使用子组件并传递数据
小程序api
界面设置
交互:
- ShowToast:消息提示框
- wx.showToast({
- title: ‘提示框会自动消失’,
- icon:“none”
- })
- showModal:模态对话框
- wx.showModal({
- title: ‘对话框’,
- content: ‘是否xxx?’,
- success:function(res){
- if(res.confirm){
- console.log(“点击了确定”)
- }
- }
- })
- showLoading:显示预加载效果
- hideLoading:隐藏预加载效果
- wx.showLoading({
- title: ‘加载中’,
- })
- setTimeout(function(){
- wx.hideLoading();
- },2000)
导航栏
showNavigationBarLoading
在当前页面显示导航条加载动画
hideNavigationBarLoading
在当前页面隐藏导航条加载动画
setNavigationBarTitle
动态设置当前页面的标题
setNavigationBarColor
设置页面导航条颜色
hideHomeButton
隐藏返回首页按钮
pagescrollTo滚动到页面指定位置(可以设置指定px位置也可以滚动到指定节点)
- wx.pageScrollTo({
- selector:"#"+id
- })
网络
request
发起请求
注意:在发起网络请求是一定要在开发设置中去配置服务器地址
downloadFile
文件下载
WebSocket即时通讯(聊天)
分为4个步骤
1、 链接socket地址
connectSocket
创建一个 WebSocket 连接
2、 接受响应数据
onSocketMessage
接受响应数据
3、 发生数据
sendSocketMessage
4、 关闭链接
closeSocket
数据缓存
Storage
视频
使用createVideoContext方法创建一个视频对象返回一个VideoContext对象所有视频操作方法属性都在其中
Ui框架的使用vant weapp
引入方式有两种
下载vant组件包放置到项目更目录进行引入使用
下载ui组件库下载地址:https://github.com/youzan/vant-weapp
下载完毕后把解压出来的dist文件拷贝到项目根目录即可
使用:在app.json或指定的页面.json中引入如下:
- “usingComponents”:{
- “van- field”:”/dist/ field/index”
- }
使用npm下载并引入使用
使用npm安装引用
1、 在项目根目录下命令行工具中输入npm init
2、 输入 npm install –production
3、 安装 npm i vant-weapp –S –production
4、 点击菜单中的工具构建npm 并选择使用npm包
组件中使用:
在app.json或指定的页面.json中引入如下:
- “usingComponents”:{
- “van- field”:”vant-weapp/ field”
- }
在wxml中使用即可
xixi和buxixi
给赞了![[鼓掌]](http://www.tnblog.net/content/static/layui/images/face/39.gif)