微信小程序开发--从零开始(简介)

从零开始

微信小程序中只有四种类型的文件

  • js-----------JavaScript文件
  • json---------项目配置文件,负责窗口的颜色等等
  • wxml---------类似html文件
  • wxss---------类似CSS文件

在根目录下用app来命名的这四种类型的文件,就是程序入口文件。

app.json

必须要有这个文件,如果没有这个文件,IDE就会报错,因为微信框架把这个作为配置文件入口,我们只需要创建这个文件,在里面写个大括号就行。以后我们会在这里对整个小程序的全局配置。记录了页面的组成,配置小程序的窗口、背景、配置导航条的样式,配置默认标题。

app.js

必须要有这个文件,没有也是会报错的,但是这个文件创建一下就行,什么都不用写,以后我们可以在这个文件中监听并且处理小程序的生命周期函数、声明全局变量。

app.wxss

这个文件不是必须的。一位内他只是全局的css文件的样式。

app.wxml

这个也不是必须的,而且这个指的并不是主界面,因为小程序中的主界面是靠JSON文件中的配置类决定的。

有了app.js,app.json这两个文件在运行程序的时候IDE就不会报错了,也意味着这就是最简单的微信小程序

Hello Word

创建程序实例

app.js文件管理整个程序的生命周期,所以在里面添加如下的代码:(输入App IDE会有提示)

App({
    onlaunch: function() {
        console.log('App Launch')
    },
    onShow: function() {
        console.log('App Show')
    },
    onHide: function() {
        console.log('App Hide')
    }
})

具体的API解释如下

App()

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

object参数说明
属性 类型 描述 触发时机
onLaunch Function 生命周期函数--监听小程序的初始化 当小程序初始化完成时,会出发onLaunch(全局只触发一次)
onShow Function 生命周期函数--监听小程序的显示 当小程序启动,或从后台进入前台显示,会触发onShow
onHide Function 生命周期函数--监听小程序的隐藏 当小程序从前台进入后台会出发onHide
其他 Any 开发者可以添加任意的函数或数据到Object参数中,用this可以访问

前台、后台定义: 当用户点击左上角关闭,或者按了设备的Home键离开温馨,小程序并没有直接销毁,而是进入了后台;当再次打开微信或者进入小程序的时候,又会从后台进入前台。只有当小程序进入后台一定的时间,或者系统资源占用过高,才会被真正的销毁。

美化ActionBar

json文件负责配置ActionBar颜色,我们只需要在里面添加如下代码即可

app.json配置项列表
属性 类型 必填 描述
pages Array 设置页面路径
windows Object 设置默认页面的窗口表现
tabBar Object 设置底部tab的表现
networkTimeout Object 设置网络超时时间
debug Boolean 设置是否开启debug模式
属性 类型 默认值 描述
navigationBarBackgroundColor HexColor #000000 导航栏背景颜色,如“#000000”
navigationBarTextStyle String white 导航栏标题颜色,仅支持black/white
navigationBarTitleText String 导航栏标题文字内容

美化界面

美化界面用到的是wxml、wxss文件,为了让程序代码结构简洁我们需要在根目录下创建一个新文件夹,名字随意,这里我们叫pages,然后我们在pages文件夹里面在创文件夹,名字随意,这里我们叫index
然后我们创建index.wxml文件然后在里面写入以下代码

<view>
    <text class="window">Hello</text>
</view>

然后我们创建index.wxss文件,在文件中输入如下代码

.window{
    color: #4994fa;
}

然后我们在创建index.js文件
在文件中输入如下代码(输入Page IDE会有提示)

Page({
    data: {
        //text: "这是一个页面"
    },
    onLoad: function(options) {
        //页面初始化options为页面跳转所带来的参数
    },
    onReady: function() {
        //页面渲染完成
    },
    onShow: function() {
        //页面显示
    },
    onHide:function() {
        //页面隐藏
    },
    onUnload: function() {
        //页面关闭
    }
})

函数解释如下:

Page

Page()函数用来注册一个页面。接受一个Object参数,其制定页面的初始化数据、生命周期函数、事件处理函数等。

Object参数说明

属性 类型 描述
data Object 页面的初始数据
onLoad Function 生命周期函数--监听页面加载
onReady Function 生命周期函数--监听页面初次渲染完成
onShow Function 生命周期函数--监听页面显示
onHide Function 生命周期函数--监听页面隐藏
onUnload Function 生命周期函数--监听页面卸载
onPullDownRefeash Function 页面相关处理函数--监听页面下拉动作
其他 Any 开发者可以添加任意的函数活数据到Object参数中,用this就可以访问

配置首页

Json文件负责配置页面的路径
所以我们在里面可以加入如下代码
其中index的含义其实就是指index.js文件
这里需要说明一点pages里面的路径其实是指向js文件的
如果一个目录下没有该名称的js文件是会报错的!

"pages": [
    "pages/index/index"
]

超级Hello World

为了学习绑定,以及如何将数据在页面更新
我们来做一个超级Hwllo World,就是我点击他的时候能让文字变色!

绑定事件

我们打开index.wxml将里面的代码改成下面这样

<view>
    <text catchtap="click" class="window">Hello</text>
</view>

其实也就是增加了

  • catchtap='click'

这两个属性是什么意思呢?慢慢来解释

类型 触发条件
touchstart 手指触摸
touchmove 手指触摸后移动
touchcancel 手指触摸动作被打断,如来电提醒,弹窗
touchend 手指触摸动作结束
tap 手指触摸后离开
longtap 手指触摸后,查过350ms在离开

注:除上表之外的其他组件自定义事件都是非冒泡事件,如<form/>的submit事件,<input/>的input事件,<scroll-view/>的scroll事件。

事件绑定

事件绑定的写法同组件的属性,以key, value的形式。

  • key以bind或catch开头, 然后跟上事件的类型,如bindtap, catchouchstart
  • value是一个字符串,需要在对应的Page中定义同名的函数。不然当初发事件的时候会报错。

bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。

上面展示了事件的一些的属性名称,这里需要注意黄色标准的内容,区分冒泡事件和非冒泡事件,其实冒泡事件就是需要往上面一层容器传递这个事件。

看了这段代码我们再来理解catchtap="click"的含义
catch代表非冒泡事件,tap代表点击事件,所以连在一起就是非冒泡点击事件,后面的click只是一个变量的名字,我们在index.js需要用这个名字绑定接受事件的函数。
我们在index.js文件中添加如下函数

click: function() {
    console.log("点击了文字");
}

添加完成之后index.js中的文件就是如下这样

Page({
    data: {
        //text: "这是一个页面"
    },
    click: function() {
        console.log("点击了文字")
    },
    onLoad: function(options) {
        //页面初始化options为页面跳转所带来的参数
        console.log("Page OnLoad")
    },
    onReady: function() {
        //页面显示
        console.log(“Page onReady”);
    },
    onShow: function() {
        //页面显示
        console.log(“Page onShoe”)
    },
    onHide: function() {
        //页面隐藏
        console.log("Page onHide")
    },
    onUnload: function() {
        //页面关闭
        console.log("Page onUnload")
    }
})

所以点击事件的回掉函数就是catchtap="click"中的click后面加上:function()构成的,
当我们点击文字时控制台中打印出了log。

接下来我们来写一下点击变色的逻辑,但是如何让文字变色的呢,肯定是css,所以我们需要在index.wxss中添加一个样式。

.window-red{
    color:#D23933;
}

此时index.wxss中的代码为:

.window{
    color: #49bb16;
}
.window-red{
    color:#D23933;
}

然后我们进入index.js文件,你会发现在代码里面有一个data:{}他不是page生命周期函数,其实他是一个变量的数组,这个里面申请的变量都可以在wxml中使用。

data: {
    //text: "这是一个页面"
}

我们在这里申请了一个color

data: {
    //text: "这是一个页面"
    color: "window"
}

color的值就是index.wxss的样式名称,然后我们进入index.wxml中,将class中的值改成{{color}}

<view>
    <text catchtap='click' class='{{color}}'>Hello</text>
</view>

其实意思就是将js文件中变量color的值在这里使用,也就是值等于window,然后我们在回到index.js文件,在最上面申请一个变量控制点击,然后我们在click:function()函数中添加如下代码

click: function() {
    console.log('点击了文字');
    if(flag) {
        color = "window-red";
        flag = false;
    } else {
        color = "window"
    }
    this.setData({
        color
    });

}

其实就是在点击后更换color变量的值,而更换的这个值其实就是样式的名称

更新界面数据

这里有一个问题,就是我们在更换完值,但是在wxml中不会立即生效,所以我们需要调用this.setData()方法将值同步给wxml让他立即生效

最后补充一点index目录下也是可以配置json文件的,也就是每个页面都可以配置自己独特的actionbar颜色等等,这里的配置会覆盖app.json文件的配置。

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

推荐阅读更多精彩内容