微信小程序 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 相关文章推荐
JavaScript DOM学习第一章 W3C DOM简介
Feb 19 Javascript
jquery ajax修改全局变量示例代码
Nov 08 Javascript
使用js判断当前时区TimeZone是否是夏令时
Feb 23 Javascript
javascript中Array()数组函数详解
Aug 23 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
Jan 10 Javascript
微信小程序之MaterialDesign--input组件详解
Feb 15 Javascript
Node+Express+MongoDB实现登录注册功能实例
Apr 23 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
May 26 jQuery
vue2.0之多页面的开发的示例
Jan 30 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
Aug 28 Javascript
浅谈layui 绑定form submit提交表单的注意事项
Oct 25 Javascript
原生js实现贪食蛇小游戏的思路详解
Nov 26 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
我的论坛源代码(七)
2006/10/09 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
php实现的简单检验登陆类
2015/06/18 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
Python缩进和冒号详解
2016/06/01 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
python删除过期log文件操作实例解析
2018/01/31 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
心得体会的写法
2014/09/05 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript
分享7个 Python 实战项目练习
2022/03/03 Python