微信小程序开发总结

前段时间,开发了几个官网的小程序,当然还没用到现在mpvue,只是单纯的在微信开发者工具开发的简单的几个页面,作为小程序的初级入门,下面就是这次开发的总结。

几个文件的作用

webchat.jpeg
一:app.wxss: 公用样式文件

小程序现在还未支持sass、less编写样式,对于习惯用这两种编码的码农来说无疑是痛苦的。虽然小程序本身不支持,但是可以用另外的方式去实现,(使用各种打包工具将sass、less文件打包成wxss文件),百度一堆,这里就不详细介绍了。

二:app.json: 配置全局的属性
{
  //pages: 所有要加载的页面
  "pages": [
    "pages/index/index", //写在第一个的页面是编译后最先加载的页面,知道这个很重要,在开发页面的时候很有用,开发哪个页面就把哪个页面放在第一个加载,可以节省很多调试的时间
    "pages/product/product",
    "pages/news/news",
    "pages/about/about",
    "pages/detail/detail"
  ],
  //window: 用于设置小程序的状态栏、导航条、标题、窗口背景色。enablePullDownRefresh 是否可以下拉刷新
  "window": {
    "enablePullDownRefresh": false
  },
  //tabBar: 底部导航
  "tabBar": {
    "borderStyle": "white",
    "color": "#6e6e6e",
    "selectedColor": "#333333",
    "backgroundColor": "#FFFFFF",
    "list": [
      {
        "iconPath": "images/nav-icon1.png",
        "selectedIconPath": "images/nav-icon1-1.png",
        "text": "首页",
        "pagePath": "pages/index/index"
      },
      {
        "iconPath": "images/nav-icon2.png",
        "selectedIconPath": "images/nav-icon2-1.png",
        "text": "产品",
        "pagePath": "pages/product/product"
      },
      {
        "iconPath": "images/nav-icon3.png",
        "selectedIconPath": "images/nav-icon3-1.png",
        "text": "新闻",
        "pagePath": "pages/news/news"
      },
      {
        "iconPath": "images/nav-icon4.png",
        "selectedIconPath": "images/nav-icon4-1.png",
        "text": "我们",
        "pagePath": "pages/about/about"
      }
    ]
  },
  //networkTimeout:设置网络超时时间 
  "networkTimeout": {
    "request": 10000,
    "connectSocket": 10000,
    "uploadFile": 10000,
    "downloadFile": 10000
  },
  //debug: 设置是否开启 debug 模式
  "debug": false
}
三:app.js: 配置全局变量

获取全局信息:用户登录信息,全局变量

四:内页文件,一个页面一个文件夹,比如index页面,每个文件夹下都有四个文件

index.wxss: 单页面样式
index.json: 配置页面顶部title样式
index.js: 单页面数据的请求地
index.wxml: 页面标签html

常用的功能

一:小程序的数据缓存

wx.setStorag(wx.setStorageSync)、wx.getStorage(wx.getStorageSync)、wx.clearStorage(wx.clearStorageSync)可以对本地缓存进行设置、获取和清理。同一个微信用户,同一个小程序 storage 上限为 10MB
wx.setStorag 和 wx.setStorageSync 的区别在与前者是异步,后者是同步
wx.setStorag用法:

wx.setStorage({
  key:"key",
  data:"value"
});

wx.setStorageSync用法:

try {
    wx.setStorageSync('key', 'value')
} catch (e) {   
}
二:模板

定义模板:/template/template.wxml

<template name="footer">
    <text>{{data.copyrightInfo}}</text><!-- data为引用模板传入的数据-->
</template>

引用模板:

<import src="../../template/template.wxml"/>
<template is="footer" data="{{data:companyInfo}}"></template>
三:获取用户信息

获取位置wx.getLocation(OBJECT):

wx.getLocation({
  type: 'wgs84',
  success: function(res) {
    var latitude = res.latitude
    var longitude = res.longitude
    var speed = res.speed
    var accuracy = res.accuracy
  }
})

获取用户信息wx.getUserInfo(OBJECT):

<!--wxml-->
<!-- 如果只是展示用户头像昵称,可以使用 <open-data /> 组件 -->
<open-data type="userAvatarUrl"></open-data>
<open-data type="userNickName"></open-data>
<!-- 需要使用 button 来授权登录 -->
<button wx:if="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授权登录</button>
<view wx:else>请升级微信版本</view>
Page({
  data: {
    canIUse: wx.canIUse('button.open-type.getUserInfo')
  },
  onLoad: function() {
    // 查看是否授权
    wx.getSetting({
      success: function(res){
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称
          wx.getUserInfo({
            success: function(res) {
              console.log(res.userInfo)
            }
          })
        }
      }
    })
  },
  bindGetUserInfo: function(e) {
    console.log(e.detail.userInfo)
  }
})
四:发送请求
wx.request({
    url: 'http://boss.4w1t.com/ajax.php',
    data: { //数据
        api: 'getNewsClass',
        qid: that.data.qid
    },
    method: "POST", //请求方式
    header: {
         "Content-Type": "application/x-www-form-urlencoded" //post
    },
    complete: function (res) {//成功或失败都会指行
        if (res == null || res.data == null) {
             reject(new Error('网络请求失败'))
        }
    },
    success: function (res) {//成功调用
        that.setData({
               newsCategory: res.data
        });
    }
});
五:生命周期
/** * 1.监听页面开在加载的状态 * 页面加载完成之后就不会在执行 */
onLoad: function () {  console.log('index---------onLoad()')},
/** * 2.5.监听页面显示, * 当从当前页面调转到另一个页面 * 另一个页面销毁时会再次执行 */
onShow: function() { console.log('index---------onShow()') },
/** * 3.监听页面渲染完成 * 完成之后不会在执行 */
onReady: function() { console.log('index---------onReaday()'); },
/** * 4.监听页面隐藏 * 当前页面调到另一个页面时会执行 */
onHide: function() { console.log('index---------onHide()') },
/** * 当页面销毁时调用 */
onUnload: function() { console.log('index---------onUnload') }
六:富文本插件 wxParse
七:分享页面
//页面分享  article_id页面文章id,从系统缓存中取出
onShareAppMessage: function (res) {
    var article_id = wx.getStorageSync('current_article_id');//获取当前页的页面id
    var path = '/pages/index/index?article_id=' + article_id + '';//要分享的页面链接
    return {
        title: article_title,
        path: path
    }
}

小程序的爬坑之路

一:页面用navigator不能直接跳转底部tabBar页面,需要多加一个参数open-type='switchTab':
<navigator url="/pages/index/index"  open-type='switchTab'>开始</navigator>
二:在页面做了一个下拉菜单,设置了可以水平滚动overflow-x: auto,并没有设置overflow-y: hidden;安卓手机可以显示下拉菜单,结果苹果手机死活不显示,后来终于找到原因:
iphone 设置了overflow-x: auto,滚动时自动隐藏y轴
三:产品需求改变底部tabBar的字体大小,查了各种资料发现小程序还未开放这个小功能,可以换另外一种方式实现:

将tabBar的图标和文字一起做成一个小图标,可以改变图标的大小

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

推荐阅读更多精彩内容