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等。 

  1. //app.js
  2. App({
  3. onLaunch: function () {
  4. //调用API从本地缓存中获取数据
  5. var logs = wx.getStorageSync(\'logs\') || []
  6. logs.unshift(Date.now())
  7. wx.setStorageSync(\'logs\', logs)
  8. },
  9. getUserInfo:function(cb){
  10. var that = this
  11. if(this.globalData.userInfo){
  12. typeof cb == "function" && cb(this.globalData.userInfo)
  13. }else{
  14. //调用登录接口
  15. wx.login({
  16. success: function () {
  17. wx.getUserInfo({
  18. success: function (res) {
  19. that.globalData.userInfo = res.userInfo
  20. typeof cb == "function" && cb(that.globalData.userInfo)
  21. }
  22. })
  23. }
  24. })
  25. }
  26. },
  27. globalData:{
  28. userInfo:null
  29. }
  30. })

View Code

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

  1. {
  2. "pages":[
  3. "pages/index/index",
  4. "pages/logs/logs",
  5. "pages/login/login",
  6. "pages/help/help",
  7. "pages/setting/setting"
  8. ],
  9. "window":{
  10. "backgroundTextStyle":"light",
  11. "navigationBarBackgroundColor": "#BBDEF8",
  12. "navigationBarTitleText": "我的小程序",
  13. "navigationBarTextStyle":"black",
  14. "enablePullDownRefresh":true
  15. },
  16. "tabBar": {
  17. "selectedColor": "#1296db",
  18. "borderStyle":"black",
  19. "list": [
  20. {
  21. "pagePath": "pages/index/index",
  22. "text": "首页"
  23. },
  24. {
  25. "pagePath": "pages/setting/setting",
  26. "text": "设置"
  27. },
  28. {
  29. "pagePath": "pages/help/help",
  30. "text": "帮助"
  31. }
  32. ]
  33. },
  34. "networkTimeout": {
  35. "request": 10000,
  36. "downloadFile": 10000
  37. },
  38. "debug": true
  39. }

View Code

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

  1. /**app.wxss**/
  2. .container {
  3. height: 100%;
  4. display: flex;
  5. flex-direction: column;
  6. align-items: center;
  7. justify-content: space-between;
  8. padding: 200rpx 0;
  9. box-sizing: border-box;
  10. }

View Code

 

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

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

  1. //index.js
  2. //获取应用实例
  3. var app = getApp()
  4. Page({
  5. data: {
  6. motto: \'Hello World\',
  7. userInfo: {}
  8. },
  9. //事件处理函数
  10. bindViewTap: function() {
  11. wx.navigateTo({
  12. url: \'../logs/logs\'
  13. })
  14. },
  15. onLoad: function () {
  16. console.log(\'onLoad\')
  17. var that = this
  18. //调用应用实例的方法获取全局数据
  19. app.getUserInfo(function(userInfo){
  20. //更新数据
  21. that.setData({
  22. userInfo:userInfo
  23. })
  24. })
  25. }
  26. })

View Code

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

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

  1. /**index.wxss**/
  2. .userinfo {
  3. display: flex;
  4. flex-direction: column;
  5. align-items: center;
  6. }
  7. .userinfo-avatar {
  8. width: 128rpx;
  9. height: 128rpx;
  10. margin: 20rpx;
  11. border-radius: 50%;
  12. }
  13. .userinfo-nickname {
  14. color: #aaa;
  15. }
  16. .usermotto {
  17. margin-top: 200px;
  18. }

View Code

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

  1. <!--index.wxml-->
  2. <view class="container">
  3. <view bindtap="bindViewTap" class="userinfo">
  4. <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
  5. <text class="userinfo-nickname">{{userInfo.nickName}}</text>
  6. </view>
  7. <view class="usermotto">
  8. <text class="user-motto">{{motto}}</text>
  9. </view>
  10. </view>

index.wxml

 

版权声明:本文为wfm542171065原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wfm542171065/articles/8428194.html