wfm542171065

微信小程序开发教程

2018-02-08 10:03  据呵呵  阅读(116)  评论(0编辑  收藏  举报

一、微信小程序的优缺点先简单的说一下

优点:

  1、即用即走——这个是从微信小程序上线就开始打的概念。即用即走使得小程序可以代替许多APP,或是做APP的整体嫁接,或是作为阉割版功能的承载体。

  2、倚靠微信流量——相比APP,小程序一个突出的优点是完全嵌入了微信的聊天、公众号体系,完美进行微信体系内的流量引导。这一方面令小程序更加容易获客,另一方面也可以借助微信的成熟社交网络达到爆发式传播。

  3、连接线上线下——连接线上线下场景也是微信小程序重要的一环,甚至最先开始为了推动线下习惯的养成,小程序在线上场景方面做了较强的限制。 由于人们用微信扫描二维码的习惯培养得比较好,小程序相比APP更容易达成线上线下场景的连接与互动。

缺点:

  1、留存——虽然有部分小程序已经杀出重围,但是普遍来讲,主打“即用即走”的小程序在用户留存上仍存在很大的提升空间。阿拉丁发布的小程序白皮书中显示,小程序的平均次日留存在13%左右,但是双周留存骤降到仅有1%。轻易拥有的也不在意失去,这大概是小程序目前的一个症结所在。

  2、受控于微信——比起APP,尤其是安卓版的高自由度,小程序要面对很多来自微信的限制,从功能接口,甚至到类别内容,都要接受微信的管控,部分敏感内容还很容易遭受封禁威胁。

 

二、小程序与app的比较

序号 优点 缺点
1 快速进入,快速使用,快速走 很多服务无法实现,比如:提醒功能
2

几乎没有下载功能,社交分享的转发率极高,

更让容易让客户了解到产品所提供的服务和品牌

做了更多减法,促销运营模式无法在其运作,

实现交互还是比app要麻烦多

3 跨平台,一套代码可以适配
IOS和Android节省了很多时间和人力成本
大量数据无法存储
4 开发起来更加方便 小程序大小限制在1MB,许多功能受大小限制不太好提供
5 安全性更高 原生App的用户体验更加丰富

 

三、开发的准备

  1.成为微信公众平台开发者

          微信公众平台官网 注册 (https://mp.weixin.qq.com)

        2.获取AppID(小程序ID)

   3. 下载并安装开发工具 IDE

    登录微信小程序官网下载对应的版本:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

          4. 微信小程序的API  :https://mp.weixin.qq.com/debug/wxadoc/dev/api/

三、小程序的最后的一些总结

  1. 不支持HTML、没有 Dom。网页用的 JS、CSS 基本要全部重写,WXML 的语法和 HTML 差异还挺大,基本是一个个照着手册的属性去改。CSS 选择器不支持级联。

  2. 小程序源码打包后的大小限制为1M,超大传不上去。单次通过 wx.request传输的数据最大也是1M。

  3. MINA 框架实现的 tab bar,最多5个 tab;通过 wx. navigateTo 推入后台的页面最多5层,超过会无法打开新页面。

  4. 小程序没有 webview 控件,自带的 view 和 text 又不支持图文混排,还不能动态 set WXML …… 所以小程序上的富文本也就只能做到固定焦点图+纯文本+表情

  5. 不支持 A 标签,无法打开普通网页。

  • 整体上来讲,小程序本身被设计为处理简单逻辑的「工具型」应用;同时具有很强的内容封闭性。

 四、小程序的开发

      1.项目目录及文件构成

目录结构显示,在小程序项目的根目录下面包含3个app开头的文件(app.js、app.json、app.wxss)以及pages目录与utils目录。其中pages目录存放页面(index和log)的构成文件。每个页面都是一个目录,目录名就是唯一的页面名,其下由以页面名为前缀的2~4个文件组成。

 小程序的目录文件结构如上,左侧的3个app文件必须放在小程序根目录下面,其他文件由开发者自由控制。

 app.js是小程序的脚本代码,用来监听并处理小程序的生命周期、声明全局变量、调用框架提供的丰富API等。 

//app.js
App({
  onLaunch: function () {
    //调用API从本地缓存中获取数据
    var logs = wx.getStorageSync(\'logs\') || []
    logs.unshift(Date.now())
    wx.setStorageSync(\'logs\', logs)
  },
  getUserInfo:function(cb){
    var that = this
    if(this.globalData.userInfo){
      typeof cb == "function" && cb(this.globalData.userInfo)
    }else{
      //调用登录接口
      wx.login({
        success: function () {
          wx.getUserInfo({
            success: function (res) {
              that.globalData.userInfo = res.userInfo
              typeof cb == "function" && cb(that.globalData.userInfo)
            }
          })
        }
      })
    }
  },
  globalData:{
    userInfo:null
  }
})
View Code

 app.json是对整个小程序的全局配置,配置小程序是由哪些页面组成,配置小程序的窗口背景颜色、配置导航条样式、配置默认标题等。(json文件中不可以加注释)

{
  "pages":[
    "pages/index/index",
    "pages/logs/logs",
    "pages/login/login",
    "pages/help/help",
    "pages/setting/setting"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#BBDEF8",
    "navigationBarTitleText": "我的小程序",
    "navigationBarTextStyle":"black",
    "enablePullDownRefresh":true
  },
  "tabBar": {
    "selectedColor": "#1296db",
    "borderStyle":"black",
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页"
      },
      {
        "pagePath": "pages/setting/setting",
        "text": "设置"
      },
      {
        "pagePath": "pages/help/help",
        "text": "帮助"
      }
    ]
  },
    "networkTimeout": {
      "request": 10000,
      "downloadFile": 10000
    },
    "debug": true
}
View Code

app.wxss是整个小程序的公共样式表。

/**app.wxss**/
.container {
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  padding: 200rpx 0;
  box-sizing: border-box;
} 
View Code

 

小程序页面是由同路径下同名不同后缀的2~4个文件组成:

.js后缀的文件是脚本文件。

//index.js
//获取应用实例
var app = getApp()
Page({
  data: {
    motto: \'Hello World\',
    userInfo: {}
  },
  //事件处理函数
  bindViewTap: function() {
    wx.navigateTo({
      url: \'../logs/logs\'
    })
  },
  onLoad: function () {
    console.log(\'onLoad\')
    var that = this
    //调用应用实例的方法获取全局数据
    app.getUserInfo(function(userInfo){
      //更新数据
      that.setData({
        userInfo:userInfo
      })
    })
  }
})
View Code

.json后缀的文件是配置文件。(如存在,会层叠覆盖app.json的window中相同的配置项,json文件中不可以加注释)

.wxss后缀的样式表文件。(如存在,会层叠覆盖app.wxss中的样式规则)

/**index.wxss**/
.userinfo {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.userinfo-avatar {
  width: 128rpx;
  height: 128rpx;
  margin: 20rpx;
  border-radius: 50%;
}

.userinfo-nickname {
  color: #aaa;
}

.usermotto {
  margin-top: 200px;
}
View Code

.wxml后缀的文件是页面结构文件。

<!--index.wxml-->
<view class="container">
  <view  bindtap="bindViewTap" class="userinfo">
    <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
    <text class="userinfo-nickname">{{userInfo.nickName}}</text>
  </view>
  <view class="usermotto">
    <text class="user-motto">{{motto}}</text>
  </view>
</view>
index.wxml

 

分类:

技术点:

相关文章: