微信小程序简单入门

小程序官网

开始了解小程序可以直接到官网,因为该官网非常详细和友好。

小程序开发准备

在官网上直接注册小程序账号,可以管理你的小程序的权限,查看数据报表,发布小程序等操作。登录账号,获取对应的小程序的 AppID(创建小程序项目需要用到)。

接着下载微信开发者工具,建立了“普通快速启动模板”(选择空目录下才有此选项),或者直接选择小程序官方Demo或者weui小程序版UI当做学习Demo

创建小程序项目

小程序代码构成

微信小程序目录

wxml文件

WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件事件系统,可以构建出页面的结构。
这个其实就是“html”,不能使用W3C的标签,转而使用的是微信自定义的标签,常见的就是用<view>代替<div>,具体有哪些标签可以查看官网微信基础组件。页面结构是以<page>为父节点节点,没有<html>和<body>。

小程序wxml页面

下面代码就是简单的数据绑定和事件:

  <!-- wxml代码 -->
  <view bindtap="add"> {{count}} </view>
  Page({
    data: {
      count: 1
    },
    add: function(e) {
      this.setData({
        count: this.data.count + 1
      })
    }
  })

js文件

App() 函数用来注册一个小程序。接受一个 object 参数,其指定小程序的生命周期函数等。App() 必须在 根目录下的app.js 中注册,且不能注册多个。

 App({
   onLaunch: function(options) {
     // 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
   },
   onShow: function(options) {
     // 当小程序启动,或从后台进入前台显示,会触发 onShow
   },
   onHide: function() {
     // 当小程序从前台进入后台,会触发 onHide
   },
   onError: function(msg) {
     // 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
     console.log(msg)
   },
   globalData: {
     // 全局变量,注意App()和Page不同,一个是globalData,一个是data
     name: 'Gensen'
   }

   //开发者可以添加任意的函数或数据到 Object 参数中,用 this 可以访问
   myMethod: function() {
      console.log(this.globalData.globalData);    // "Gensen"
   }
 })

Page()函数用来注册一个页面。接受一个 object 参数,其指定页面的初始数据、生命周期函数、事件处理函数等。相对一个全局一个局部,对应每个页面都有一个。

Page({
  data: {
    // 页面的初始数据
    text: "This is page data."
  },
  onLoad: function(options) {
    // 生命周期函数--监听页面加载
    // 一个页面只会调用一次,可以在 onLoad 中获取打开当前页面所调用的 query 参数。
  },
  onReady: function() {
    // 生命周期函数--监听页面初次渲染完成
    // 一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
    // 对界面的设置如wx.setNavigationBarTitle请在onReady之后设置。
  },
  onShow: function() {
    // 生命周期函数--监听页面显示
  },
  onHide: function() {
    // 生命周期函数--监听页面隐藏
    // 当navigateTo或底部tab切换时调用。
  },
  onUnload: function() {
    // 生命周期函数--监听页面卸载
    // 当redirectTo或navigateBack的时候调用。
  },
  onPullDownRefresh: function() {
    // 页面相关事件处理函数--监听用户下拉动作
    // 需要在app.json中的`window`选项中或页面配置page.json中开启`enablePullDownRefresh`。
    // 当处理完数据刷新后,`wx.stopPullDownRefresh`可以停止当前页面的下拉刷新。
  },
  onReachBottom: function() {
    // 页面上拉触底事件的处理函数
  },
  onShareAppMessage: function () {
   // 用户点击右上角转发
    return {
      title: '自定义转发标题',
      path: '/page/logs/logs'
    }
  },
  onPageScroll: function() {
    // 页面滚动触发事件的处理函数
  },
  onTabItemTap(item) {
    // 当前是 tab 页时,点击 tab 时触发
    console.log(item.index)
    console.log(item.pagePath)
    console.log(item.text)
  },

  // 开发者可以添加任意的函数或数据到 object 参数中,在页面的函数中用 this 可以访问
  viewTap: function() {
    // 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致
    this.setData({
      text: 'Set some data for updating view.'
    }, function() {
      // 回调函数
    })
  },
  customData: {
    hi: 'MINA'
  }
})

Page 实例的生命周期

js部分还包括路由模块API(小程序开发框架提供丰富的微信原生 API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等)后续再细讲。

wxss文件

WXSS(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式。其实就是CSS改了个后缀名,不同的地方是多了rpx尺寸单位样式导入,样式选择器只能使用一部分,像后代子代选择器就不能用了,目前支持的选择器如下:

选择器 样例 样例描述
.class .intro 选择所有拥有 class="intro" 的组件
#id #firstname 选择拥有 id="firstname" 的组件
element view 选择所有 view 组件
element, element view, checkbox 选择所有文档的 view 组件和所有的 checkbox 组件
::after view::after 在 view 组件后边插入内容
::before view::before 在 view 组件前边插入内容

定义在 app.wxss 中的样式为全局样式,作用于每一个页面。在 page 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。

小程序全局样式设置

配置文件

app.json

用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。程序启动默认的第一个页面,就是app.json的pages中的第一个页面

微信小程序app.json配置

注意:json文件不能注释,不然会报错(上面图片大误)

page.json

每一个小程序页面也可以使用.json文件来对本页面的窗口表现进行配置。 页面的配置比app.json全局配置简单得多,只是设置 app.json 中的 window 配置项的内容,页面中配置项会覆盖 app.json 的 window 中相同的配置项。

结尾

先简单介绍下微信小程序代码结构和不同文件对应的功能和作用,后续有空将细讲某个模块或者一些常用的应用场景。

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