微信小程序 LOL 英雄介绍开发实例


Posted in Javascript onSeptember 30, 2016

最近微信小程序炒得火热,就跟成都的这个房价一样.昨天我也尝试了一下,做了一个自己的英雄列表.今天将自己的制作过程记录于此.

1.下载微信开发者工具

官网链接:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=1475052055364,下载完成之后默认安装即可

2.新建项目

打开微信开发者工具,(首次需要微信扫码登录),如下图所示,点击添加项目,然后依次输入APPID,项目名称,并选择你的项目所在的目录(本地目录),如果没有AppID,选择无APPID即可(部分功能受限)

                         微信小程序 LOL 英雄介绍开发实例 

微信小程序 LOL 英雄介绍开发实例

3.编写代码

我的项目结构如下:

微信小程序 LOL 英雄介绍开发实例

 目录解释:pages这个文件夹放的是你的这个小程序所涉及到所有页面.image文件夹放图片.app.json是一个小程序的入口配置文件,一些全局设置都在这个文件里面.

我们可以看到detail这个目录下有四个文件:

(1)  detail.js是detail.wxml这个页面涉及到的js处理的文件

(2) detail.json是detail.wxml的配置文件,比如我们可以设置导航条的标题

(3) detail.wxml是小程序索要展示的页面,UI的架子.

(4) detail.wxss是detail.wxml的样式文件,类似于css文件

3.1 接下来我们看一看app.json文件:

{
 "pages":[
  "pages/index/index",
  "pages/logs/logs",
  "pages/detail/detail",
  "pages/notice/notice",
  "pages/noticedetail/noticedetail"
 ],
 "window":{
  "backgroundTextStyle":"light",
  "navigationBarBackgroundColor": "#fff",
  "navigationBarTitleText": "英雄角色",
  "navigationBarTextStyle":"black",
  "backgroundColor": "#fbf9fe"
 },
 "tabBar": {
  "color": "#333",
  "selectedColor": "#3cc51f",
  "borderStyle": "#cccccc",
  "backgroundColor": "#ffffff",
  "list": [{
   "pagePath": "pages/index/index",
   "text": "英雄列表",
   "iconPath": "image/list_normal.png",
   "selectedIconPath": "image/list.png"
  }, {
   "pagePath": "pages/notice/notice",
   "text": "版本公告",
   "iconPath": "image/hot_normal.png",
   "selectedIconPath": "image/hot.png"
  }]
 }
}

pages是整个小程序需要注册的页面,注意到不用指定文件后缀,我们也不用去位一个页面引用指定的wxss,js,json文件.小程序会自动去匹配相关的 filename.wxml, filename.wxss, filename.js, filename.json文件,所以我们在命名这些文件的时候要保持文件名一致.

windows是对小程序的导航栏的一些设置,如导航标题,颜色等.

tabBar是小程序底部的导航按钮,根据自己的需求可以设置多个按钮,并指定相应的路径,名称.

3.2 app.js文件

app.js里面装着一些全局函数,全局变量等

//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,
  userId:null
 }
})

globalData对象里面放一些全局变量,比如我们要跨页面传参数,就要用到这个.

如果我们要在另外一个页面操作这个全局变量,需要如下操作:

var app=getApp();

app.globalData.userId="12"

这样就可以操作全局变量了.

  3.3 数据绑定

小程序中的数据绑定类似于angular,vue,采用双花括号的方法,花括号内部即变量,在detail.wxml文件中形如{{name}},设置变量name的值需要在对应的detail.js文件中进行设置.

Page({
  data: {
    hero:heros.getInfoById(app.globalData.userId),<br>
 name:'Ricky',<br>

 items:[{"id":1,"name":"name1"},{"id":2,"name":"name2"}]
  },
  onLoad:function () {
    this.setData({
      hero:heros.getInfoById(app.globalData.userId)
    })
  },<br>
tapName:function(event){<br>

console.log(event)<br>
}
})

单个页面上要动态设置变量,要通过this.setData({})方法

  3.4 绑定事件

wxml中的事件绑定采用 bind+方法名

<view id="tapTest" data-hi="MINA" bindtap="tapName"> Click me! </view>

自定义属性采用 data-属性名 的形式,要去到这个自定义属性,可以通过tapName方法中的event对象获取

3.5 列表渲染

小程序中的列表渲染采用wx:for="{{items}}"的方法,每一次循环items这个变量,会生成一个item对象,可以通过item.name获取每一次循环中的name属性

<view wx:for="{{items}}" class="listView" bindtap="showDetail" data-idIndex="{{index+1}}"><br>

<view>{{item.name}}</view><view>{{item.id}}</view><br></view>

3.6 导航

小程序里面的页面跳转可以使用:

wx.navigateTo({
     url: '../detail/detail'
   })

官方规定跳转最多5层页面.

更多小程序的API信息请参考官方网站:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/MINA.html?t=1475052046827

 最后给大家看一下我的迷你小程序的截图~

 微信小程序 LOL 英雄介绍开发实例微信小程序 LOL 英雄介绍开发实例

 微信小程序 LOL 英雄介绍开发实例

 微信小程序 LOL 英雄介绍开发实例

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

Javascript 相关文章推荐
js 省地市级联选择
Feb 07 Javascript
jQuery验证Checkbox是否选中的代码 推荐
Sep 04 Javascript
图片在浏览器中底部对齐 解决方法之一
Nov 30 Javascript
jQuery中创建实例与原型继承揭秘
Dec 21 Javascript
jQuery事件用法实例汇总
Aug 29 Javascript
javascript关于继承的用法汇总
Dec 20 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
May 07 Javascript
jQuery Masonry瀑布流插件使用方法详解
Jan 18 Javascript
self.attachevent is not a function的解决方法
Apr 04 Javascript
JS实现移动端整屏滑动的实例代码
Nov 10 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
Mar 05 Javascript
ElementUI中el-tree节点的操作的实现
Feb 27 Javascript
javascript的几种写法总结
Sep 30 #Javascript
Vue.js实现拖放效果的实例
Sep 30 #Javascript
PHP抓取HTTPS内容和错误处理的方法
Sep 30 #Javascript
Vue.js动态添加、删除选题的实例代码
Sep 30 #Javascript
关于List.ToArray()方法的效率测试
Sep 30 #Javascript
微信小程序 window_x64环境搭建
Sep 30 #Javascript
JS框架之vue.js(深入三:组件1)
Sep 29 #Javascript
You might like
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
flask框架视图函数用法示例
2018/07/19 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
Python数据结构dict常用操作代码实例
2020/03/12 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
采购部部门职责
2013/12/15 职场文书
给民警的表扬信
2014/01/08 职场文书
爱护公物标语
2014/06/24 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
导师鉴定意见
2015/06/05 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS