微信小程序入门:开发工具以及目录

前言:

     前一章简述了微信小程序的注册,既然注册了,那么肯定要开发微信小程序了。

     俗话说的好:工欲善其事必先利其器 既然有了小程序开发,微信也发布了一款自己研发的小程序开发工具

    名为:微信Web开发者工具  

下载地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

这是官方的开发工具,集合了开发,预览,发布为一体的开发工具,目前第三方开发工具还没有较好的,最好还是用微信自己开发的,毕竟亲儿子。

下载安装之后,直接打开软件进入首页:

    在上图中有一个创建quick start项目,这就是一个简单的DEMO 基本功能包括登陆 获取用户信息,信息缓存 模块化(Utils.js)事件绑定等等,后面我们会拿出来单独的讲解。

    我们需要注意APPID 没有注册开发者是获取不到APPID的,点击无AppID 可以使用大部分功能,无法预览 无法上传等功能

    注册了开发者的用户 需要登陆到小程序官网 下图的位置获取APPID 。


点击添加项目之后 我们就进入了quick Start项目中 我们先来看看项目的目录结构如下:

我们可以看到最上面有一个pages目录,其实这个目录里面包括了小程序所有的界面,包含界面布局 界面逻辑 界面样式 :

 每个页面信息都会包括3个文件,json文件不是必须的 一般情况下我们只需要用全局配置的 app.json文件配置就可以了。

后面我们会有一个章节来具体介绍这四个文件基本配置与基本使用方式:

例如index文件夹:

index.js :主要负责本页面的业务逻辑,包括生命周期,事件的绑定处理,数据的初始化等等。

index.wxml:主要负责本页面的界面展示 以及事件的绑定等等。

index.wxss:主要负责页面的样式,与wxml文件一起使用,优化wxml页面。

index.json:主要是负责本界面的基本配置,主要配置的信息只有window  例如 navigationBarTitleText 设置页面的标题栏名称 debug 是都支持debug模式等等。

在图中还有一个utils的文件夹:可以看出utils和pages文件是并列的,所以他就不代表页面的信息了,里面只有一个js文件,

这个js文件其实就是把代码模块化(后面会介绍)了,这里面是将日期的转换封装好了,直接引入使用就可以了。

最后剩下一系列app的文件,app.js app.wxss app.json代表的信息和上面的pages里面的页面文件夹中的其实差不多,

只是pages里面的代表的仅仅是某个界面的配置,而app的代表的是这个项目的配置。

这是一个简单的js文件:  官方地址:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-service/app.html

App({

onLaunch:function(){

// Do something initial when launch.

},

onShow:function(){

// Do something when show.

},

onHide:function(){

// Do something when hide.

},

onError:function(msg){

console.log(msg)

},

globalData:'I am global data'

})

App()函数用来注册一个小程序。接受一个 object 参数,其指定小程序的生命周期函数等。

包括了小程序的基本生命周期:

属性类型描述触发时机

onLaunchFunction生命周期函数--监听小程序初始化当小程序初始化完成时,会触发 onLaunch(全局只触发一次)

onShowFunction生命周期函数--监听小程序显示当小程序启动,或从后台进入前台显示,会触发 onShow

onHideFunction生命周期函数--监听小程序隐藏当小程序从前台进入后台,会触发 onHide

onErrorFunction错误监听函数当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息

其他Any

开发者可以添加任意的函数或数据到 Object 参数中,用this可以访问

前台、后台定义:当用户点击了左上角的退出或者是手机HOME键离开小程序,小程序并没有被销毁,而是在后台运行着,单再次进只有入微信或者打开小程序的时候,

小程序就会从后台恢复到前台。只有当小程序在后台一段事件,或者系统资源占用太高才会被真正的销毁。

getApp()

我们提供了全局的getApp()函数,可以获取到小程序实例,一般情况下,大部分时候都是用来保存登陆之后的用户信息的。

// other.js

varappInstance = getApp()

console.log(appInstance.globalData)// I am global data

注意:

App()必须在app.js中注册,且不能注册多个。

不要在定义于App()内的函数中调用getApp(),使用this就可以拿到 app 实例。

不要在 onLaunch 的时候调用getCurrentPage(),此时 page 还没有生成。

通过getApp()获取实例之后,不要私自调用生命周期函数。

小程序的全局配置文件 app.json  官方地址:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/config.html

我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。

以下是一个包含了所有配置选项的简单配置app.json:

{

"pages": [

"pages/index/index",

"pages/logs/index"

],

"window": {

"navigationBarTitleText":"Demo"

},

"tabBar": {

"list": [{

"pagePath":"pages/index/index",

"text":"首页"

}, {

"pagePath":"pages/logs/logs",

"text":"日志"

}]

},

"networkTimeout": {

"request":10000,

"downloadFile":10000

},

"debug":true

}

pages

接受一个数组,每一项都是字符串,来指定小程序由哪些页面组成。每一项代表对应页面的【路径+文件名】信息,数组的第一项代表小程序的初始页面。小程序中新增/减少页面,都需要对 pages 数组进行修改。

文件名不需要写文件后缀,因为框架会自动去寻找路径.json,.js,.wxml,.wxss的四个文件进行整合。

这里有个小细节,我们只需要在pages中添加需要创建的页面:

例如如果我们想添加一个login页面,我们不用去创建login文件,login.js login.wxss,login.wxml,我们只需要在Pages中加上“pages/login/login”

开发工具会自动帮我们创建文件夹和里面的基本配置文件:

我们只需要在 app.json 中写

{

"pages":[

"pages/index/index"

"pages/logs/logs"

]

}

window

用于设置小程序的状态栏、导航条、标题、窗口背景色。

属性类型默认值描述

navigationBarBackgroundColorHexColor#000000导航栏背景颜色,如"#000000"

navigationBarTextStyleStringwhite导航栏标题颜色,仅支持 black/white

navigationBarTitleTextString

导航栏标题文字内容

backgroundColorHexColor#ffffff窗口的背景色

backgroundTextStyleStringdark下拉背景字体、loading 图的样式,仅支持 dark/light

enablePullDownRefreshBooleanfalse是否开启下拉刷新,详见页面相关事件处理函数

注:HexColor(十六进制颜色值),如"#ff00ff"

如 app.json :

{

"window":{

"navigationBarBackgroundColor":"#ffffff",

"navigationBarTextStyle":"black",

"navigationBarTitleText":"微信接口功能演示",

"backgroundColor":"#eeeeee",

"backgroundTextStyle":"light"

}

}


tabBar

如果我们的小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),那么我们可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。

Tip:通过页面跳转(wx.navigateTo)或者页面重定向(wx.redirectTo)所到达的页面,即使它是定义在 tabBar 配置中的页面,也不会显示底部的 tab 栏。

tabBar 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序。

属性说明:

属性类型必填默认值描述

colorHexColor是

tab 上的文字默认颜色

selectedColorHexColor是

tab 上的文字选中时的颜色

backgroundColorHexColor是

tab 的背景色

borderStyleString否blacktabbar上边框的颜色, 仅支持 black/white

listArray是

tab 的列表,详见 list 属性说明,最少2个、最多5个 tab

positionString否bottom可选值 bottom、top

其中 list 接受一个数组,数组中的每个项都是一个对象,其属性值如下:

属性类型必填说明

pagePathString是页面路径,必须在 pages 中先定义

textString是tab 上按钮文字

iconPathString是图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px

selectedIconPathString是选中时的图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px

networkTimeout

可以设置各种网络请求的超时时间。


属性说明:

属性类型必填说明

requestNumber否wx.request的超时时间,单位毫秒,默认为:60000

connectSocketNumber否wx.connectSocket的超时时间,单位毫秒,默认为:60000

uploadFileNumber否wx.uploadFile的超时时间,单位毫秒,默认为:60000

downloadFileNumber否wx.downloadFile的超时时间,单位毫秒,默认为:60000

debug

可以在开发者工具中开启 debug 模式,在开发者工具的控制台面板,调试信息以 info 的形式给出,其信息有Page的注册,页面路由,数据更新,事件触发。 可以帮助开发者快速定位一些常见的问题。

page.json

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

页面的.json只能设置window相关的配置项,以决定本页面的窗口表现,所以无需写window这个键,如:

属性类型默认值描述

navigationBarBackgroundColorHexColor#000000导航栏背景颜色,如"#000000"

navigationBarTextStyleStringwhite导航栏标题颜色,仅支持 black/white

navigationBarTitleTextString

导航栏标题文字内容

backgroundColorHexColor#ffffff窗口的背景色

backgroundTextStyleStringdark下拉背景字体、loading 图的样式,仅支持 dark/light

enablePullDownRefreshBooleanfalse是否开启下拉刷新,详见页面相关事件处理函数

disableScrollBooleanfalse设置为 true 则页面整体不能上下滚动;只在 page.json 中有效,无法在 app.json 中设置该项

{

"navigationBarBackgroundColor":"#ffffff",

"navigationBarTextStyle":"black",

"navigationBarTitleText":"微信接口功能演示",

"backgroundColor":"#eeeeee",

"backgroundTextStyle":"light"

}

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,471评论 25 707
  • 转载请注明出处, 谢谢! (~ o ~)Y 1月9日,也就是今天,微信推出的“小程序”正式上线。“小程序”是一种无...
    Jimmy_P阅读 14,253评论 53 273
  • 昨天看了一下微信小程序官方文档,总结一下自己学习的个人心得. 首先从官方文档给的框架说起,微信小程序官方文档给出了...
    Mr大大大阅读 46,998评论 9 68
  • 微信小程序 简介 腾讯在微信中推出的一种介于 Native App 和 Web App 之间的程序 程序中的程序,...
    LiLi原上草阅读 1,139评论 0 2
  • 土风吹着山坡 影子斜了 弹着杨柳絮的微风 好像又一次吹疼了落日 我是说过 让你别在找我 也曾经发过誓 也不会再去寻...
    DISTANCE123阅读 211评论 0 1