微信小程序开发:MINA

MINA是微信开发小程序的框架:

MINA的目标是通过尽可能简单,高效的方式让开发者可以在微信中开发具有原生APP体验的服务。

运行MINA的项目必须要有微信web开发者工具微信小程序的AppID,因为现在还处于内测阶段的原因,因此大部分数人还没有AppID,还好有大神已经破解了IDE,可以先体验下,详情请参考微信小程序开发资料收集
MINA框架中有四种类型的文件:

  • .js文件 基于JavaScript的逻辑层框架
  • .wxml 视图层文件,是MINA设计的一套标签语言
  • .wxss 样式文件,用于描述WXML的组件样式
  • .json 文件,配置文件,用于单个页面的配置和整个项目的配置

目录结构

为了减少配置项,小程序中一个页面中的四个文件必须要有相同的路径和文件名,使用微信web开发者工具新建一个项目,可以看到他的目录结构是这样的:

目录结构

其中app.js是程序的入口,app.json是项目的配置文件,app.wxss是全局配置的样式文件,logsindex文件夹是是单个页面的文件,utils用来存放常用的工具类文件夹。

app.js

app.js使用App()函数注册一个小程序,可以指定小程序的生命周期
小程序的App()生命周期中三个事件可以监听:onLaunchonShowonHide

  • onLaunch:小程序加载完成之后调用,全局只触发一次
  • onShow: 小程序启动,或者从后台到前台会触发一次
  • onHide:小程序从前台到后台会触发一次

例如:

App({ 
 onLaunch: function () { 
    console.log('App Launch')
  }, 
 onShow: function () {
    console.log('App Show')  
},  
onHide: function () {
    console.log('App Hide')  
}, 
 globalData: {
    hasLogin: false  
}
})

其中app.jsglobalData可以设置全局的变量,在一个页面中可以通过getApp()函数获取小程序的实例,使用App的getCurrentPage()可以获取到当前页面的实例。

app.json

app.json是小程序的全局配置包括:页面的路径,窗口表现,设置网络超时,开发模式等...

  • 页面配置pages:设置页面的路径
  "pages":[
    "pages/index/index",
    "pages/logs/logs"
  ]

配置的indexlogs两个页面的路径,在这里使用相对路径配置页面路径。

  • 窗口配置windows:用来配置状态栏的颜色,导航条的样式和颜色,标题,已经窗口的背景色:
"window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#ffffff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle":"black"
  }

使用的Color为十六进制的颜色值,比如"#ffffff"
注意:
其中navigationBarTextStyle,导航栏的颜色仅支持black/white
backgroundTextStyle,下拉背景的样式仅支持dark/light

  • tabBar: 设置tab应用,tabBar是一个数组,最少需要配置2个,最多能配置5个tab,tab按照数据的顺序排序:
"tabBar":{
    "color":"#dddddd",
    "selectdColor":"#3cc51f",
    "borderStyle":"black",
    "backgroundColor":"#ffffff"
  ,"list":[
    {
      "pagePath":"pages/index/index",
      "iconPath":"image/wechat.png",
      "selectedIconPath":"image/wechatHL.png",
      "text":"主页"
      },{
    "pagePath":"pages/logs/logs",
    "iconPath":"image/wechat.png",
    "selectedIconPath":"image/wechatHL.png",
    "text":"日志"
  }]
}

这里设置了两个tab页:indexlog,效果如下:

tab
  • networkTimeout设置网络请求的超时时间,小程序有四种类型的网络请求
  1. wx.request普通的http请求,配置为request
  2. wx.connect stock链接,配置为connectSocket
  3. wx.uploadFile上传文件,配置为uploadFile
  4. wx.downloadFile下载文件,配置为downloadFile
    配置单位为毫秒,例如:
"networkTimeout": {
    "request": 10000,
    "connectSocket": 10000,
    "uploadFile": 10000,
    "downloadFile": 10000
  }
  • debug:开发工具中开启debug模式,在控制台面板上可以看到调试信息,我们也可以使用console.log('onLoad')输入log帮助我们调试程序。
"debug": true

app.wxss

app.wxss中定义的的样式为全局样式,作用在每一个页面,在page中定义的.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;
}

其中200rpx中的rpxreponslve pixel,可以根据屏幕的宽度进行自适应,在iPhone61rpx=0.5px=1物理像素。微信小程序建议设计以iPhone6为准
样式的使用:

<view class="container">
</view>

page

使用Page()函数来注册一个页面,为其指定页面的初始数据,生命周期函数,事件处理等。

  • data 页面的初始数据,可以使用setData更新定义的数据
  • onLoad 页面加载事件
  • onReady 页面渲染完成
  • onShow 页面显示
  • onHide 页面隐藏
  • onUnload 页面卸载

例如:

Page({
  data: {
    logs: []
  },
  onLoad: function () {
    this.setData({
      logs: (wx.getStorageSync('logs') || []).map(function (log) {
        return util.formatTime(new Date(log))
      })
    })
  }
})

page另外使用的文件.wxml是页面文件,使用定义好一套标签语言,.wxss是局部样式文件,.json局部配置文件比如需要在一个单独的页面中设置他的navigationBarTitleText,可以在.json文件中设置:

{
    "navigationBarTitleText": "日志文件"
}

源代码地址:https://github.com/jjz/weixin-mina

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

推荐阅读更多精彩内容