微信小程序初探(一)文件结构与代码分析

      微信小程序是腾讯推出的一种全新的连接用户与服务的方式,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。就在上一年,腾讯公司的微信开发者工具就加入了微信小程序的开发功能,然而,目前网络上存在的微信小程序开发教程屈指可数,而微信公众平台上的官方文档提供的教程又十分简单。这令初学者在开发微信小程序时十分吃力,尤其是前端开发小白,它们在开发的过程中很容易陷入懵逼的状态。所幸的是,笔者在前段时间参与了微信小程序的开发,在微信小程序的开发方面积累了部分经验。因此,本着共同学习的理念,笔者斗胆写下《微信小程序初探》的系列文章,望各位同僚与我共同学习,不足之处还望指正。


    我们先来看一下开发工具提供给我们的案例


       在示例的主界面我们能看到三个最主要的部分,最左边的是程序视图,我们能够直观地看到我们设计出来的程序的面貌。中间就是文件列表。右边就是编辑部分。本文将要主要介绍官方案例中各个文件的功能和作用。

一  认识各种文件格式


       从demo中我们能看到共有三个文件以及两个目录,我们先来看一下放在外面的三个文件。第一个就是 app.js 文件,也就是JavaScript文件,这一类文件的主要作用是充当微信小程序的脚本文件,开发者可以在 .js文件中监听并处理小程序的生命周期函数、声明全局变量。调用框架提供的丰富的 API

       第二个文件就是app.json文件,app.json文件是配置小程序是由哪些页面组成,配置小程序的窗口背景色,配置导航条样式,配置默认标题的重要文件。注意该文件不可添加任何注释。

       第三个文件就是app.wxss文件,app.wxss文件是规定了小程序的样式,它的原理和网页开发当中的css样式相当。我们可以在页面组件的 class 属性上直接使用 app.wxss 中声明的样式规则。当然,每个页面也可以有属于自己的私有的样式文件。

       以上三者便是微信小程序中最重要的三个文件,接下来,我就要介绍另外两个目录,而这两个目录组成了微信小程序的各个页面。在本文,我将着重介绍pages目录


      pages目录里面装着的就是微信小程序的各个页面的代码。在这个demo里面总共有两个页面,一个是index,一个是logs。细心的读者会发现,页面的代码文件组成与app的代码文件组成十分类似,它们都有.js,.json以及.wxss文件,唯一不同的是页面代码文件有.wxml文件。.wxml文件的作用跟网页开发里面的HTML有着相似之处。它定义了页面的结构,这些结构包括了按钮,文本等,它们是组成页面必不可少的元素。可以这么说,.json和.wxss文件都是为.wxml文件服务的。

       值得一提的是,页面的代码文件里面,.js和.wxml文件是必不可少的,而.json和.wxss文件则是可选择的。

       OK,那么微信小程序中的各个格式的文件的介绍就到这里了,接下来,笔者就会以官方提供的demo为例子,简要地解释各个文件里面的代码含义。在这里笔者不会逐个逐个字句解释,而是大概讲解代码中函数的含义,在以后的文章中,笔者会详细讲解。


二 简要的代码解释

        首先我们来看一下app.js文件。


       我们由头来分析代码,我们会发现整个app.js文件的代码都包含在了APP({})当中,它的功能是注册一个小程序,用以制定小程序的生命周期。

       往下走,看到onLaunch()函数。还记得我在上文中提到的小程序的生命周期吗?这个函数代表的是小程序刚刚开始运行时所执行的内容。该函数的具体功能可以在官方提供的api中找到,这里我贴上一张图,里面包含了onLaunch在内的多个代表了小程序生命周期的函数。有兴趣的朋友可自行到微信公众平台查阅。

       那么在该app.js文件中,onLaunch函数充当了接收本地数据的角色。

       往下走,我们看到getUserInfo: function(cb)这里,我们只需知道,该函数的作用是接收用户的信息并且调用登录接口。没接触过JavaScript的朋友可以注意一下,函数名:function(形参)是js中函数声明的方式。

       在getUserInfo: function(cb)函数的下方,我们可以看到globalData,顾名思义,他是微信小程序中的全局变量。


       在大致了解了app.js文件的代码后,我们看一下app.json文件的代码

       代码很简单,分为两个部分,一个是pages,一个是window。pages声明了该小程序由什么页面组成的,比如,该小程序由两个页面组成。同时,pages也声明了小程序的起始页面,也就是放在最上面的页面,pages/index/index。我们不妨试一下,改变上下顺序会怎么样。


       可以看到,程序的起始页面改变了。

       我们再来看一下window,它声明了背景文字样式,导航栏的颜色,文字和字体颜色。我们修改一下,把navigationBarBackgroundColor改为#000,然后把navigationBarTitleText改为微信,再把navigationBarTextStyle改为white。


       显而易见地,导航栏发生了变化。不仅如此,所有页面的导航栏都会改变。不过,如果你想要改变单个页面的导航栏样式,你可以单独修改页面的json文件。

       接下来我们稍微了解一下app.wxss


       正如我上文所说,.wxss文件定义的是css样式,而css样式多如牛毛,我也不一一讲述,新手可以自行试着修改demo中的样式,并结合官方api学习。唯一需要知道的是,.container指的是该样式的class名,开发者在wxml标签中通过不同的class名来选择不同的样式。


         接下来,笔者将讲解index.wxml文件。


       wxml文件与HTML的原理其实很接近,它们都是通过一个一个的标签来把页面构造出来的。首先,我们了解一下标签,标签就是上面代码中有<>尖括号的代码,标签可以声明页面的基本元素如按钮,文本,输入框等。值得注意的是,wxml中的<view>标签和HTML中的<div>标签意思接近,大概就是指页面的模块,它们把页面分成不同的模块以方便开发者布局。仔细观察可以发现,每个标签中都有class这个东西,正如笔者在前文所说,它们其实是“选择器”,选择不同名字的样式来显示标签元素。



       OK,本文到这里也差不多结束了,本文主要讲述了微信小程序中的文件结构以及部分代码的解析。我在这里没有把所有页面的js,json,wxss和wxml文件都讲解一遍,原因是它们的原理和我上文所讲的四个文件很接近,读者可自行理解。不理解也没关系,我在以后的文章中会详细解析。

       第一次写有关技术的博客,很多东西表达的不够到位,望海涵。各位看官如果有什么好的建议请一定提出,笔者感激不尽。


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

推荐阅读更多精彩内容