微信小程序入门

day01

微信小程序
Mini program
免安装,不用安装就可以运行的程序
发布小程序的包不能大于1M。路由最多有5级/a/b/c/d/e
微信开发者工具
新建项目
项目目录,先在目录里创建好文件夹,选择 demo
AppID 发布小程序的时候需要的。可以注册,也可以使用测试id
项目名称
选项:创建一个快速启动的模板

三大功能区
	模拟器 手机
	编辑器 文件目录和代码
	调试器 控制面板,network

小程序
rpx

px
分辨率分为:
	逻辑分辨率 设备的尺寸
		pt
	物理分辨率 像素点的多少
		px

rpx
	单位
	度量衡
	
		iph在不同的设备上保持一样的比例one 6 400*400px
			100*100rpx
			100*100px
		ipad  800*800px
			100*100rpx
			200*200px

	在iphone6手机上
		1rpx = 1px(物理分辨率)
	如果是布局尽量使用rpx单位
	如果是字体的话,尽量使用px单位
flex布局
	flex-direction 布局方向
		row   排在一行	
	.one{
		display:flex;
		flex-direction:column;
		//交叉轴的对齐方式  x
		align-item:
		//主轴的对齐方式 y
		justify-content:
	}
	<div class="one"> //容器
		<div></div>  //项目
		<div></div>
		<div></div>
	</div>	
		div   div    div
	主轴
	交叉轴
		row:主轴x 交叉轴y
			div   div    div
		column:主轴y  交叉轴x
			div
			div
			div

项目目录
pages
index
index.js
index.wxml
index.wxss
index.json
log
log.js
log.wxml
log.wxss
log.json
utils
app.js
app.json
{
“pages”:[
“pages/index/index”
]
}
app.wxss
project.config.json

.wxml
	html  结构  div
	wxml  view  text
.wxss
	css   样式
	.wxss文件
		对css选择器的支持程度不太好
		.one{
			margin:10px;
			padding:10px;

		}
.js
	逻辑代码

小程序分为视图层(wxml)和逻辑层(js)
index.js
Page({
data:{
msg:‘hello’
}
})
index.wxml

{{msg}}

	v-if
	v-else
	v-for

	wx:if
	wx:else
	wx:for

day02

微信小程序
微信开发者工具 模拟器,编辑器,调试器,
预览 真机调试
发布:
小于1M
路由最多有5级
项目结构
快速启动项目模板
app.js 注册小程序
App({
//小程序的生命周期
})
app.json 小程序的配置文件
{
“pages”:[
“pages/index/index”,
“pages/logs/log”
],
“window”:{
导航栏的颜色
导航栏的文字
}
}
app.wxss
写小程序的样式
project.config.json 项目的配置文件
pages 文件夹
index
index.js
Page({
data:{},
sayHello(){},
//页面的生命周期
})
index.json
{
window属性
导航栏的颜色
导航栏的文字
}
index.wxml

hello

index.wxss
index页面的样式设置
logs
log.js
log.wxml
log.json
log.wxss

view是块级元素
text,image是行内元素

rpx 单位
可以自适应
小程序页面的度量衡

px
分辨率
	逻辑分辨率 pt  屏幕越大逻辑分辨率越大
		设备的尺寸  宽高  375*667
	物理分辨率 px  越高清晰度越高
		750*1334

在iphone6 
	1px(物理分辨率)=1rpx
	750rpx;  
		1rpx=1px
	750rpx;
		1rpx= 1.X px
在设置宽  使用rpx
字体  使用px



逻辑分辨率 物理分辨率     rpx
    pt        px      统一的度量衡

在iphone6 375px
1物理分辨率=1rpx
平常咱们在代码中使用px,是逻辑分辨率 375px
width:750px;

设计图给的是物理分辨率
	750*1334px
	750rpx
	1rpx=1px(物理分辨率)

设备尺寸
375667px 逻辑分辨率
代码中的
375
667px 逻辑分辨率
ps设计图中
750*1334px 物理分辨率

设计图上放图片的位置400*300px
手机上需要留多少位置?200*150px

rpx
1rpx=1物理分辨率(px)=0.5逻辑分辨率(px)

页面的跳转
1.事件绑定(绑定触摸事件bindtap)
wxml中:

js中:
Page({
data:{},
test(){
//路由切换、页面跳转
},
})
2.页面跳转-API(路由切换)
1)navigateTo
父子页面之间的跳转,可以再返回父页面
wx.navigateTo({
url:’’,
//页面跳转成功
success(res){},
//页面跳转失败
fail(err){},
//页面无论跳转成功还是失败都会执行的函数
complete(){}
})
2)redirectTo
兄弟页面之间的跳转,不可以再返回上一个兄弟页面
wx.redirectTo({
url:’’,
//页面跳转成功
success(res){},
//页面跳转失败
fail(err){},
//页面无论跳转成功还是失败都会执行的函数
complete(){}
})

	a父->b子
		navigateTo
		父页面是隐藏掉了 onHide()
	a兄->b兄
		redirectTo
		a兄弟页面被卸载了 onUnload()

声明周期
应用程序的生命周期
app.js
App({

		})
页面的生命周期
	index.js
		Page({

		})

day03

列表渲染

wx:for="{{arr}}"
		{{item}}  {{index}}
	wx:for-item="it"
		{{it}}
	wx:for-index="in"
		{{in}}
	wx:key="{{index}}"
给data中赋值
	Page({
		data:{
			<!-- obj:{
				name:'',
				age:''
			}; -->
			<!-- arr:[1,2,3] -->
		},
		onLoad(){
			let obj = {
				name:'',
				age:''
			};
			this.setData({obj});
			let arr = [1,2,3];
			this.setData({arr});
		},
	})
如何使用data中的值
	data:{
		a:1,
		b:2
	}
	{{msg}}
	{{msg+'hello'}}
	{{a+b}}

事件

事件的绑定
		bindtap	  基础绑定事件
		catchtap  阻止冒泡的绑定事件的方式
	事件对象
		<view bindtap="test"></view>
		Page({
			data:{},
			test(event){
				event.target
				event.currentTarget
				event.type
				....
			},
		})

路由跳转 页面跳转

父子页面的跳转
		wx.navigateTo({
			url:'./test/test?id=5',
			success(){},
			fail(){},
			complete(){}
		})
		父->子  父页面隐藏 onHide()
	兄弟页面的跳转
		wx.redirectTo({
			url:'./test/test?id=5',
			success(){},
			fail(){},
			complete(){}
		})
		a兄->b兄  a页面卸载了 onUnload()

生命周期

小程序的生命周期
		app.js
			App({
				//小程序初始化完成时(全局只触发一次)
				onLaunch(){},
				//小程序启动,或从后台进入前台显示时
				onShow(){},
				//小程序从前台进入后台时
				onHide(){},
				//小程序发生脚本错误,或者 api 调用失败时触发,会带上错误信息
				onError(){},
				//小程序要打开的页面不存在时触发,会带上页面信息回调该函数
				onPageNotFound(){}
			})
页面的生命周期
	index.js
		Page({
			data:{},
			//页面加载时触发。一个页面只会调用一次。query是跳转到改页面时的参数
			onLoad(Object query){
				//{id:5}
			}
			//页面显示/切入前台时触发。
			onShow()(){},
			//页面渲染完毕
			onReady(){},
			//隐藏
			onHide(){}
			//页面卸载时触发
			onUnload(){}
		})

给事件处理程序传参

<view bindtap="test" data-web="hello" data-web-title="hello"></view>
	test(event){
		event.currentTarget.dataset--->对象
			{	web:'hello',
				webTitle:'hello'
			}
	},

给页面传参

从A页面->B页面
	在A页面点击跳转的时候,携带参数
		wx.redirectTo
		wx.navigateTo({
			url:'../test/test?id='+id,
		})
	在B页面接受参数
		Page({
			onLoad(option){
				option--对象
				{id:3}
			}
		})

条件渲染

<text wx:if="{{false}}">hello</text>
<text wx:else>world</text>

走马灯

//布尔属性   {{false}}
	autoplay="false"

模板

封装
	A页面  1,2,3
	B页面  1,2,3
	模板的封装
		test.wxml文件  
			name属性是模板的名字
			<template name="test">
				1
				2
				3
				{{name}}
				{{age}}
			</template>
		test.wxss文件中
			......
模板的使用
	1.使用模板的wxml文档
		A页面  
		let obj = {
			name:'zhangsan',
			age:12
		};
		<import src="./test/test.wxml" />
		<view>
			{{obj}}
			<!-- is属性表示模板的名字 data给模板内部传数据 -->
			<template data="{{...obj}}" is="test"></template>
		</view>	

		B页面
		let stu = {
			name:'zhangsan',
			age:12
		};
		<import src="./test/test.wxml" />
		<view>
			{{stu}}
			<!-- is属性表示模板的名字 data给模板内部传数据 -->
			<template data="{{...stu}}" is="test"></template>
		</view>	
	2.使用模板的样式
		A页面引入模板的样式,在A页面的wxss中使用@import来引入

		a.wxss
			@import '../test/test.wxss'
			A页面的其他样式

1rpx = 1物理分辨率
1rpx = 2逻辑分辨率

pt是逻辑分辨率
1pt = 2rpx

px是逻辑分辨率,即屏幕尺寸

day04

页面跳转

wx.navigateTo({
		url:'pages/index/index'
	})
		父页面->子页面  父页面隐藏
						onHide()
		返回箭头					
	wx.redirectTo({
		url:'pages/index/index'
	})
		A兄弟页面->B兄弟页面 A卸载 onUnload()
		没有返回的向左的箭头

页面传参

A->B传参
	wx.navigateTo({
		url:'pages/index/index?id=3'
	})
	index页面的js文件中
		onLoad(option){
			option->{id:3}
		}

事件的传参

<view catchtap="test" data-id="333" data-true-name="zhangsan">
	js
		test(event){
			event.currentTarget.dataset---对象
			{
				id:333,
				trueName:'zhangsan'
			}
		}

模板和模板传参

模板页面不需要引入到小程序中,需要在使用的页面引入
	定义模板
		wxml
			<template name="one">
				<view></view>
				{{name}}
				{{age}}
				......
			</template>	
		wxss
			view{}
	使用模板
		wxml的使用
			A页面的js
				data:{
					obj:{
						name:"",
						age:'',
					}
				},
			A页面的wxml
			<import src="../template/template.wxml">
			<template is="one" data="{{...obj}}"></template>
		wxss的使用
			A页面的wxss中引入模板的wxss
				@import "../template/template.wxss"

ES6中的模块化

data.js
		export default {
			arr:[{},{},{}]
		}
	在页面的js中,使用其他js文件中的数据
		import obj from './data.js';
		obj = {
			arr:[{},{},{}]
		}
		obj.arr  访问数据

导航,也可以进行页面的跳转
	list 最少2个、最多5个 tab
	在app.json里面配置,产生导航

条件渲染

wx:if="{{false}}" 
wx:else

缓存

交互

    提示框
		wx.showToast({
			title:'提示的内容',
			mask:false,// 不防止物理穿透
		})
	加载框

	模态对话框
		wx.showModal({

		})
	操作菜单



libscore.com  js库的发展趋势,被多少个站点在引用
	jQuery   682981 -1.55
	angular  12084  4.7
	react		 1455   -31.72
	vue    	 287  	20.87
		MVVm
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值