微信小程序开发入门基础教程


Posted in Javascript onApril 19, 2017

微信小程序开发入门基础教程

本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果。

开发准备工作获取微信小程序的 AppID

登录 https://mp.weixin.qq.com ,就可以在网站的“设置”-“开发者设置”中,查看到微信小程序的 AppID 了,注意不可直接使用服务号或订阅号的 AppID 。
微信小程序开发入门基础教程

下载开发工具

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

新建项目

开发者工具安装完成后,打开并使用微信扫码登录。选择创建“项目”,填入上文获取到的 AppID ,设置一个本地项目的名称(非小程序名称),比如“我的第一个项目”,并选择一个本地的文件夹作为代码存储的目录,点击“新建项目”就可以了。
为方便初学者了解微信小程序的基本代码结构,在创建过程中,如果选择的本地文件夹是个空文件夹,开发者工具会提示,是否需要创建一个 quick start 项目。选择“是”,开发者工具会帮助我们在开发目录里生成一个简单的 demo。
微信小程序开发入门基础教程
微信小程序开发入门基础教程
这样就搭建好了,我们来看一下主界面
微信小程序开发入门基础教程
整个开发工具基本分为三块。

第一列:table-item 每个按钮代表一个页
第二列:webview 你的页面在这里实时展示
第三列:chrome调试工具,暂且这样叫吧,因为确实是使用了charome的调试工具, 在这里可以调试页面的样式,js,网络检测,输入输出等等。

编写示例小代码创建小程序实例

点击开发者工具左侧导航的“编辑”,我们可以看到这个项目,已经初始化并包含了一些简单的代码文件。最关键也是必不可少的,是 app.js、app.json、app.wxss 这三个。其中,.js后缀的是脚本文件,.json后缀的文件是配置文件,.wxss后缀的是样式表文件。微信小程序会读取这些文件,并生成小程序实例。

下面我们简单了解这三个文件的功能,方便修改以及从头开发自己的微信小程序。

app.js是小程序的脚本代码。我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量。调用框架提供的丰富的 API,如本例的同步存储及同步读取本地数据。想了解更多可用 API,可参考 API 文档。

//app.js
App({
 onLaunch: function () {
 //调用API从本地缓存中获取数据
 var logs = wx.getStorageSync('logs') || []
 logs.unshift(Date.now())
 wx.setStorageSync('logs', logs)
 },
 getUserInfo:function(cb){
 var that = this;
 if(this.globalData.userInfo){
  typeof cb == "function" && cb(this.globalData.userInfo)
 }else{
  //调用登录接口
  wx.login({
  success: function () {
   wx.getUserInfo({
   success: function (res) {
    that.globalData.userInfo = res.userInfo;
    typeof cb == "function" && cb(that.globalData.userInfo)
   }
   })
  }
  });
 }
 },
 globalData:{
 userInfo:null
 }
})

app.json 是对整个小程序的全局配置。我们可以在这个文件中配置小程序是由哪些页面组成,配置小程序的窗口背景色,配置导航条样式,配置默认标题。注意该文件不可添加任何注释。更多可配置项可参考配置详解。

{
 "pages":[
 "pages/index/index",
 "pages/logs/logs"
 ],
 "window":{
 "backgroundTextStyle":"light",
 "navigationBarBackgroundColor": "#fff",
 "navigationBarTitleText": "WeChat",
 "navigationBarTextStyle":"black"
 }
}

app.wxss 是整个小程序的公共样式表。我们可以在页面组件的 class 属性上直接使用 app.wxss 中声明的样式规则。

/**app.wxss**/
.container {
 height: 100%;
 display: flex;
 flex-direction: column;
 align-items: center;
 justify-content: space-between;
 padding: 200rpx 0;
 box-sizing: border-box;
}

创建页面

在这个教程里,我们有两个页面,index 页面和 logs 页面,即欢迎页和小程序启动日志的展示页,他们都在 pages 目录下。微信小程序中的每一个页面的【路径+页面名】都需要写在 app.json 的 pages 中,且 pages 中的第一个页面是小程序的首页。
每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index.js、index.wxml、index.wxss、index.json。.js后缀的文件是脚本文件,.json后缀的文件是配置文件,.wxss后缀的是样式表文件,.wxml后缀的文件是页面结构文件。
index.wxml 是页面的结构文件:

<!--index.wxml-->
<view class="container">
 <view bindtap="bindViewTap" class="userinfo">
 <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
 <text class="userinfo-nickname">{{userInfo.nickName}}</text>
 </view>
 <view class="usermotto">
 <text class="user-motto">{{motto}}</text>
 </view>
</view>

index.js 是页面的脚本文件,在这个文件中我们可以监听并处理页面的生命周期函数、获取小程序实例,声明并处理数据,响应页面交互事件等。

//index.js
//获取应用实例
var app = getApp()
Page({
 data: {
 motto: 'Hello World',
 userInfo: {}
 },
 //事件处理函数
 bindViewTap: function() {
 wx.navigateTo({
  url: '../logs/logs'
 })
 },
 onLoad: function () {
 console.log('onLoad')
 var that = this
 //调用应用实例的方法获取全局数据
 app.getUserInfo(function(userInfo){
  //更新数据
  that.setData({
  userInfo:userInfo
  })
 })
 }
})

index.wxss 是页面的样式表:

/**index.wxss**/
.userinfo {
 display: flex;
 flex-direction: column;
 align-items: center;
}

.userinfo-avatar {
 width: 128rpx;
 height: 128rpx;
 margin: 20rpx;
 border-radius: 50%;
}

.userinfo-nickname {
 color: #aaa;
}

.usermotto {
 margin-top: 200px;
}

页面的样式表是非必要的。当有页面样式表时,页面的样式表中的样式规则会层叠覆盖 app.wxss 中的样式规则。如果不指定页面的样式表,也可以在页面的结构文件中直接使用 app.wxss 中指定的样式规则。

index.json 是页面的配置文件:

页面的配置文件是非必要的。当有页面的配置文件时,配置项在该页面会覆盖 app.json 的 window 中相同的配置项。如果没有指定的页面配置文件,则在该页面直接使用 app.json 中的默认配置。

logs 的页面结构

<!--logs.wxml-->
<view class="container log-list">
 <block wx:for="{{logs}}" wx:for-item="log">
 <text class="log-item">{{index + 1}}. {{log}}</text>
 </block>
</view>

logs 页面使用 控制标签来组织代码,在 上使用 wx:for 绑定 logs 数据,并将 logs 数据循环展开节点。

//logs.js
var util = require('../../utils/util.js')
Page({
 data: {
 logs: []
 },
 onLoad: function () {
 this.setData({
  logs: (wx.getStorageSync('logs') || []).map(function (log) {
  return util.formatTime(new Date(log))
  })
 })
 }
})

这样我们就完成了一个简单入门级微信小程序开发。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
javascript中onmouse事件在div中失效问题的解决方法
Jan 09 Javascript
jquery插件制作 图片走廊 gallery
Aug 17 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
Mar 26 Javascript
js去除浏览器默认底图的方法
Jun 08 Javascript
自定义刻度jQuery进度条及插件
Sep 02 Javascript
javascript作用域链(Scope Chain)用法实例解析
Nov 30 Javascript
轮播图组件js代码
Aug 08 Javascript
基于js实现的限制文本框只可以输入数字
Dec 05 Javascript
JavaScript数据结构之链表的实现
Mar 19 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
May 07 Javascript
解决iview打包时UglifyJs报错的问题
Mar 07 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
Sep 16 Javascript
微信小程序教程系列之视图层的条件渲染(10)
Apr 19 #Javascript
JS实现AES加密并与PHP互通的方法分析
Apr 19 #Javascript
vue2.0父子组件间通信的实现方法
Apr 19 #Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
Apr 19 #Javascript
微信小程序页面传值实例分析
Apr 19 #Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
Apr 19 #Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
Apr 19 #Javascript
You might like
资料注册后发信小技巧
2006/10/09 PHP
PHP 写文本日志实现代码
2010/05/18 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
Python中逗号的三种作用实例分析
2015/06/08 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
Python缩进和冒号详解
2016/06/01 Python
python处理数据,存进hive表的方法
2018/07/04 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
Python转换时间的图文方法
2019/07/01 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
业绩倒数第一的检讨书
2014/09/24 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
Java数组与堆栈相关知识总结
2021/06/29 Java/Android
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python