【微信小程序】语法笔记及开发心得

好久没有写代码了,今天自己开发了一个快递查询的微信小程序,把自己心得记录下来方便以后巩固。ps,小程序学的太晚了,人家去年好多都会了,我那时在干啥。。

1、学习脑图和思路:

2、学习资源:

A、微信小程序官方文档:https://mp.weixin.qq.com/debug/wxadocs

B、视频教程:

http://m.bilibili.com/video/av9085879.html?from=singlemessage#page=8

C、案例,Demo


3、学习脑图中的一些需要详细了解的地方:

A、小程序实现原理和程序架构:

这篇 文章:写的很详细。

还有这篇

B、Flex布局和相对绝对定位

包括了解容器元素、属性及属性值、属性应用场景。

Flex布局:其中有display,主轴和交叉轴,flex-direction排列方向,flex-wrap是否换行,justify-content元素在主轴上的对其方式,align-items在交叉轴的对其方式,align-self元素自身的对其方式,order定义元素的排列顺序,flex-grow当有多余空间时该元素放大比列,flex-shrink当空间不足时放大缩小比列,flex-basis元素在主轴上占据的空间。

相对和绝对定位:相对定位是和自身来比较,绝对定位是和离他最近的已经设置定位的上级元素比。


C、视图层要熟悉有哪些组件,组件对应属性,组件对应事件:

1)视图容器:View,scroll-view含滚动条的视图,swipe幻灯片,画布canvas;

var context = wx.createContext()
   context.setStrokeStyle("#00ff00")
   context.setLineWidth(5)
   context.rect(0, 0, 200, 200)
   context.stroke()
   context.setStrokeStyle("#ff0000")
   context.setLineWidth(2)
   context.moveTo(160, 100)

context.stroke()
   // 调用 wx.drawCanvas,通过 canvasId 指定在哪张画布上绘制,通过 actions 指定绘制行为
   wx.drawCanvas({canvasId: 'firstCanvas',actions: context.getActions() // 获取绘图动作数组})}

2)自定义组件和表单组件:自定义有icon,text,process,navigator:url;表单组件有label:for,picker:range和value,picker-view,slider:,switch等;

3)媒体组件:audio:src,image:src,video:src;

4)地图:map ,markers,longitude,latitude,scale,markers。

5)操作反馈小工具:action-sheet从底部弹出来,modal确认框,toast会自动消失,loading加载

6)组件数据绑定,组件数据内容展示(变量,if,for),组件事件绑定,引用,尺寸。引用案例如下:

<include src="../templates/header" />或

<import src="../templates/footer" />
<template is="footer2" />


D、逻辑层要熟悉的内容有:

1)组件数据怎么赋值:data及this.setdata({x:y})方法。

2)组件事件怎么处理:各个组件对应的常用事件要熟悉掌握,如:bindtap,bindchange(复选框,单选框,日期选择器,滑动选择器,交互反馈小工具),bindsubmit,bindreset,bindinput,bindfocus,bindblur,bindconfirm,bindplay播放时,bindpause暂停时,bindended结束时,bindload加载完毕时,bindmarkertap点击地图标记时触发,bindcontroltap点击地图时触发,bindtouchstart手指触摸动作开始,bindtouchmove手指触摸后移动,bindtouchend手指触摸动作结束,bindtouchcancel手指触摸动作被打断如来电,bindViewTap。

另外,注意的是组件事件区分冒泡和非冒泡,基本事件如下:

事件对象属性有:


3)组件之间数据怎么传输。

4)页面与页面之间数据怎么传输(在navigateto方法里?后传参数)。

5)网络怎么传输(和服务器,包括web socket等):

向服务器发起请求:wx.request({
 url: 'http://baidu/com',   data: {x: '' , y: '' //请求参数},header: {  'content-type': 'application/json'},success: function(res) { console.log(res.data) }});

6)web socket:连接,发送消息,收到消息,关闭连接。服务器代码部分如下:


@ServerEndPoint(value="/websocket/{user}")定义路径

public class MyWebSocketServlet{

   private Session session;

@OnOpen接收消息

public void open(Session session,@PathParam(value="user")String user){

this.session=session;

.........}

@OnMessage发送消息

public void inMessage(String msg){this.session.....;var t=message;....

try{session.getBasicRemote().sendText('msg') catch(Exception e){e.....}}

}

}


客户端代码部分:开启连接,发送消息,收到消息,关闭连接

开启连接wx.connection(){url:"www.baidu.com",data:{},methed:'GET',success:function(){},fail:functon(){},complete(){}}

发送消息:wx.sendSocketMessage(){data:'您好',sucess:function(){},fail:function(){},complete(){}}

收到消息:wx.onSocketMessage(function(res){var msg=this.date.testStr msg.push(res.data)   this.setData({testStr:msg})})

关闭连接:wx.closeSocket()

   

7)数据缓存(读取,保存,删除,数据异步操作)。

获取和保存数据:var logs=wx.getStorageSync('logs')[][]   logs.unshift(Date.now())   wx.setStoreSync('logs',logs)

删除数据:wx.removeStoreage({key:'',success:function(){'key:'',success:function(res)(),fail:function(){},complete:function(){}}})

数据异步:wx.setStorage({key:"",data:"",success:function(res){},fail:function(){},complete:function(){}})   wx.getStorage({key:"String",success:function(res){}})

8)媒体及其他文件怎么传输:

客户端代码部分:

wx.chooseImage({
 success: function(res) {
   var tempFilePaths = res.tempFilePaths
   wx.uploadFile({
url: 'http://localost:8080/iprest/test', //仅为示例,非真实的接口地址
     filePath: tempFilePaths[0], name: 'file', formData:{ 'user': 'test'},
     success: function(res){
       var data = res.data} })}})

如果是上传图片呢?客户端上传图片代码又是怎么样

wx.chooseImage({

 count:1,//选择第一张图片

 sizeType:['ariginal','compressed'],

  sourceTpe:['album','camera'],
 success: function(res) {
   var tempFilePaths = res.tempFilePaths
   wx.uploadFile({
url: 'http://localost:8080/iprest/test', //仅为示例,非真实的接口地址
     filePath: tempFilePaths[0], name: 'file', formData:{ 'user': 'test'},
     success: function(res){
       var tempPath = res.tempFilePaths  this.setData({imgUrl:tempPath})} })}})

保存下载音频或图片wx.downloadFile({
 url: 'http://example.com/audio/123.jpg',
 success: function(res) {wx.playVoice({filePath: res.tempFilePath }) }})

服务器端代码部分:收到上传的文件。




E、其他语法点必记:

返回:wx.navigateback({delta:1,success:function(res){},fail...,complete..}).

设置导航文本:.setNavigationBarTitle

页面加载时,加载完,展示时事件:onload和onready,onSHow

登录:wx.login()

打电话;wx.makePhoneCall

获取网络类型:wx.getNetworkType,如wifi,4G等,如果网络正常就success。

            wx.getNetworkType({success.function(res){var t=tes.networkTpye}})

获取设备信息:wx.getSystemInfo(){success;function(res){resmodel,res.pixelRatio,res.windoeWidth,rex.windowHeight,rex.language,res.version}}

交互反馈工具事件监听:wx.showModal和wx.showActionSheet,wx.showToast。

            如wx.showToast({title:'加载中,icon:"成功",duration:1000})

                setTimeout({function(){wx.hideToase(),1000}});

地图获取地理位置和查看位置:wx.getLocationres.latitude和longitude,wx.openLocation。

wx.getLocation({type:"wgs84",success:function(res){var latitude=res.lastitude   var lagitude=res.longitude   wx.openlocation({latitude:latitude,longitude:longitude,sacle:28})}})


F、实战:

产品设计--》框架搭建,配置-》界面设计和开发-》API设计和开发-》部署上线


G、数据统计:

用户分析,图文分析,菜单分析,消息分析,接口分析,网页分析。


有时间要做一个公益产品,做一点小小贡献。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容