欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

微信小程序开发教程--从零开始


从零开始小程序

今天一不小心拿到了小程序的内测资格,为了不辜负微信团队的信任,我决定十一奋斗一把!不过话说我可是一个Android工程师啊!所以就让我们从零开始!
所以本文非常适合非前端工程师学习!哈哈!都说小程序出来前端会抢移动端饭碗,但是据我所知现在好多学习的都是移动开发工程师,谁抢谁的还不一定呢!
PS:表问我怎么拿到小程序内测资格的,有种东西叫内部资源!

  • 准备工作
    • IDE搭建
    • 知识准备
  • 从零开始
    • app.js
    • app.json
    • app.wxml
    • app.wxss
  • Hello World
    • 创建程序实例
    • 美化ActionBar
    • 美化页面
    • 配置首页
  • 超级Hello World
    • 事件绑定函数
    • 更新界面数据

准备工作

IDE搭建

就不多说了,没有内测码去下载个破解版吧,我用了一下,学习完全够了!IDE破解版+安装教程


图片发自简书App

知识准备

JavaScrip还是要看看的,推荐教程 廖雪峰大神的博客
HTML+CSS 大概知道是干啥的就行


从零开始

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

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

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

app.json

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

app.js

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

app.wxss

这个文件不是必须的。因为它只是个全局CSS样式文件

app.wxml

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

有了这两个文件你运行程序,IDE就不会报错了,也意味着这是最简单的微信小程序


Paste_Image.png

Hello World

创建程序实例

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

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

具体API解释如下


Paste_Image.png

美化ActionBar

json文件负责配置ActionBar颜色,我们只需要在里面添加如下代码即可,下图有参数说明!


Paste_Image.png

Paste_Image.png
{
    "window":{
        "navigationBarBackgroundColor": "#BBDEF8",
        "navigationBarTitleText": "Demo",
        "navigationBarTextStyle":"white"
    }
}

Paste_Image.png

现在看ActionBar是不是像那么回事了!好接下来我们继续写我们第一个界面

美化页面

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

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

然后创建index.wxss文件然后在里面写入以下代码

.window{
  color=#4995fa;
}

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

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

函数解释如下:


Paste_Image.png

配置首页

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

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

完成了!我们来运行程序!


Paste_Image.png

超级Hello World

为了学习事件绑定,以及如何将数据在页面上更新
我们来做个超级Hello World,就是我点击文字,能让
它变色!

绑定事件

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

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

其实也就是加了

  • catchtap="click"

这两个属性是什么意思呢 别着急 我会一一解释


Paste_Image.png

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

看了这图 我们再来看 catchtap="click" 的含义
catch 代表非冒泡事件
tap 代表点击事件
所以连在一起就是非冒泡点击事件
那后面那个click是啥
click 其实只是个变量名字
我们在index.js需要用这个名字绑定接收事件的函数
我们打开index.js
然后添加如下函数

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

添加完后代码长这样 红框中就是 添加的这个代码


Paste_Image.png

所以其实点击事件的回调函数 就是 catchtap="click"
中的 click 后面加上 :function() 构成的
现在我们来运行程序试试 然后点击文字


Paste_Image.png


看是不是调用了 click:function 函数 并且打出了log

好接下来我们写点击一下变色的逻辑
那如何让一个文字变色呢,当然是css
所以我们需要再index.wxss 中添加一个样式

.window-red{
    color:#D23933;
}

Paste_Image.png

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


Paste_Image.png

我们在这里申请一个color


Paste_Image.png

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


Paste_Image.png

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

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

修改完后的代码如图


Paste_Image.png

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

更新界面数据

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

好了我们运行程序 点击Hello 看看是不是点一下 变一下颜色!


111111.gif

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

最后附上github 地址 https://github.com/pwh0996/WXDemo.git
最后由于着急睡觉 ,所以错别字比较多,后面整理望大家见谅

喜欢的话欢迎打赏~!!!我会继续写下去的

微信小程序

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
登录 后发表评论
符钜啐
25楼 · 2017.09.30 09:22

写的挺不错的,已经收藏了。

源码解析:http://suo.im/1FKU2k


俞眶: 恩恩

还不错那

2017.09.30 09:48 回复
JonahFang
2楼 · 2016.10.02 20:19

谢谢你写的这篇文章,这是我看到过的关于微信小程序最好的入门文章。有两个问题请教:
1.只有app.js和app.json时,程序无法运行。
2.下面的代码中,color变量是否应该这样写比较好:

```
let color = "window-new";
if(flag){
flag = false;
} else {
color = "window";
flag = true;
}

```

蒲文辉@JonahFang
1.只要app.js 和app.json 就可以运行,但是这两个文件里面必须都写一个"{}" 如果什么都不写,是会报错的
2.像你这样写也可以,由于我原来是写java的,在java中这么每次点击都申请变了是比较消耗内存资源的,我知道javascrip中是否会这样!

2016.10.05 20:14 回复

cn_aiwei@90后Geek 确实要申明一个全局变量

2016.12.01 15:44 回复

宁_448a: 加上let color = "window-new";就不会报错了

2017.04.06 12:03 回复
添加新评论 还有2条评论, 展开查看
879023864
5楼 · 2016.12.22 14:01

有个问题,,在index.js里面,color没有定义会报错

烟乄离卟開: 我的这个也会报color没有定义 color is not defined

2017.01.10 11:44 回复

涛涛5560: 声明变量color就好了

2017.01.10 13:04 回复

Mr_ZZZZZZZ: 这个调用的时候要用this.color

2017.04.25 10:38 回复
三分钟拯救世界迫在眉睫
11楼 · 2017.04.02 00:49

`pages/index/index.json
Expecting 'STRING','NUMBER','NULL','TRUE','FALSE','{','[', got EOF
1 | `这是什么错误,求解,另外,大佬的教程真的好用

 
七分熟_826f
24楼 · 2017.09.27 16:06
 
王木木界
3楼 · 2016.10.22 16:08

没有内测appid 也不能在手机运行测试= =

 
微信小程序社区俱乐部
4楼 · 2016.11.03 13:45

您好 我可以邀请你进入微信小程序俱乐部吗?您的文章和资源都太赞了!
http://www.wxappclub.com :smile:

 
好好得吃一朵西蓝花
7楼 · 2017.02.07 18:16

写的很好~\(≧▽≦)/~ 今天看了很久小程序一头雾水,最后再简书看到你的这篇文章,心情舒畅多了,啥时候继续更小程序教程?

 
kiscall
8楼 · 2017.03.21 09:50

css的属性和属性值之间用的是分号:
.window{
color: #4995fa;
}
文章写得很好,很适合我这种小白入门,谢谢!

 
Arkilis
9楼 · 2017.03.28 12:02

不知道是不是版本问题,提示找不到 color 这个变量,我做了一下修改之后运行成功

var app = getApp()
var flag = true;
var color = "window";

 
Arkilis
10楼 · 2017.03.28 12:03

提示找不到 color 这个变量。应该这么修改:

var app = getApp()
var flag = true;
var color = "window";
=======

这条咸鱼不好吃: getApp这句不需要 直接声明变量就好了,难道是作用域的问题?

2017.03.29 10:39 回复

4c34b7a87c64@dwang 谢谢 我也是遇到这个问题

2017.05.14 21:58 回复
smallTao
12楼 · 2017.04.03 15:30

请问运行点击编译就行吗?为什么我没有反应呢

6fc0fd3448fe: 这里你可以看看https://mp.weixin.qq.com/debug/wxadoc/dev/

2017.04.07 14:05 回复

Big_S: 我的编译后,点击不变色,不知道为什么

2017.06.16 13:28 回复
只是忘了Billy
14楼 · 2017.04.15 11:28

小编你好,请问下面这种情况应该怎么办呢?我是新手希望能听到小编比较简单的解释~

Sat Apr 15 2017 11:19:15 GMT+0800 (中国标准时间) wxml 文件,编译错误
VM326:2 ./page/mytaobao/index.wxml
end tag missing, near 'view'
27 | <view />
28 |
> 29 | <view >
| ^
30 | <view />
31 |
32 | <view >

 
Feng9152
15楼 · 2017.05.05 21:14

color is not defined;
应该在哪里定义,不是在data 里面定义了吗?下面评论里的方法 我试了也不行

待人以诚_fbe1@Feng9152 那里边不是定义变量的,在pages外边定义。data里边是页面的初始数据

2017.05.18 23:10 回复

尼欧龙@待人以诚_fbe1 请教一下,为什么在外面声明color的时候,同时定义的值不生效呢?打开来文字还是黑色的
 

 
弹指一挥间_630c
16楼 · 2017.05.17 10:02

写的很好,谢谢楼主 ,就是内容少了点 :blush:

 
甍蕞
17楼 · 2017.07.05 17:37

写的虽然都是最基本的 但是很细心 可以的 点个赞

 
Amy_c8b6
18楼 · 2017.07.07 13:41

最近刚开始接触,这个就是我的入门教程啦

 
Mr_dreamer
19楼 · 2017.07.31 11:59

非常感谢 ;开始color没定义,后来发现 像你这样写 好像不太对,就改了下,不知道为什么
click: function(){
console.log('click');
if (flag) {

this.setData({
color:"change2"
})

flag = false

} else {

this.setData({
color:"change1"
})


flag = true
}


}

 
海阔天空_648d
20楼 · 2017.08.02 19:35

不知道您的是什么版本,我今天按照您的步骤一步一步来一直在报错

 
萧林_b24d
21楼 · 2017.08.23 19:31

文章写得很好~学习了

 
北乐_996e
22楼 · 2017.09.06 11:05

今天刚更新版本,一直不行,获取不到上面data里面的 color,请教一下如何获取data里面的color

 
北乐_996e
23楼 · 2017.09.06 11:21

data: {
text:"这是一个页面",
color: "window"
},
click: function () {
var _this = this;
_this.setData({
text: "哈哈"
})
if(flag){
_this.setData({
color: "window-color"
})
flag = false;
}else{
_this.setData({
color: "window"
})
flag = true;
}
},
这样可以了 - -

 
qzuser_9148
26楼 · 2017.10.10 09:06

一窍不通 ,能教教吗大师?

 
杂货铺先生
27楼 · 2017.10.13 11:39

很喜欢这种讲述方式,收藏表感谢

 
tuoxinquyu
28楼 · 2017.10.16 11:15

我始终也没明白把js和json放在哪里运行



作者:蒲文辉
链接:http://www.jianshu.com/p/aaef5ceb3936
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


来自  http://www.jianshu.com/p/aaef5ceb3936
普通分类: