微信小程序开发日志(一)

微信小程序的下载和安装的资料网上有很多,这里就不介绍了,直接开始项目制作。

创建项目

  • 打开微信小程序开发工具,点击添加项目,设置项目名称,如“lifeService”,选择一个文件夹为项目的目录,取消掉“在当前目录中创建 quick start 项目”这个选项。点击添加“添加项目”按钮;

  • 在lifeService目录下创建app.json,app.js,app.wxss等文件,创建page、images、utils三个文件夹;

配置页面(app.json文件 )

设置程序的页面 主页index、各个栏目页面、详情页detail(详情页不能命名为con,之前遇到的坑) ;

"pages":[
    "page/index/index",
    "page/news/news",
    "page/tv/tv",
    "page/nba/nba",
    "page/calendar/calendar",
    "page/weather/weather",
    "page/mobile/mobile",
    "page/weixin/weixin",
    "page/joke/joke",
    "page/star/star",
    "page/detail/detail"
]

设置导航栏 文字、颜色(仅支持 black/whiteblack/white)、背景颜色;

"window":{
    "navigationBarTitleText":"生活服务",
    "navigationBarTextStyle":"white",
    "navigationBarBackgroundColor":"#00bb9c"
}

创建首页

打开index文件夹,在这里新建四个文件分别为index.wxml、index.wxss、index.js、index.json;

配置首页的标题

打开index.json,输入代码:

{
  "navigationBarTitleText": "生活服务"
}

制作首页的html文件

首页把我们需要的栏目循环出来,使用”wx:for”循环出来数据,使用”wx:for-item”指定数组当前元素的变量名,使用“data-” 把一些需要的自定义属性绑定到当前组件上,我们这里把每个栏目的接口的url”data-url”绑定到这里,然后每个页面的跳转的链接”data-page”绑定到这里

<view class="index">
  <view class="lifeModal"  wx:for="{{indexList}}" wx:for-item="list" bindtap="listData" data-page="{{list.page}}" data-url="{{list.url}}">
    <view >
      <image class="icon" src="{{list.icon}}"></image>
      <text class="title">{{list.title}}</text>
    </view>
  </view>
</view>

页面逻辑

打开index.js,输入代码page自动生成初始代码

在data中设置首页的栏目,这里用到的接口数据是的聚合数据免费接口,可以注册申请自己的key也可以使用我的key,然后我在阿里巴巴矢量图标库找了一些小图标放在images的文件夹里面

data:{
indexList:[
  {
    id:1,
    page:'news',
    title:"新闻头条",//标题
    icon:'../../images/news.png',//图标
    url:"http://v.juhe.cn/toutiao/index"//接口地址
  },{
    id:2,
    page:'tv',
    title:"电视节目时间表",
    icon:'../../images/tv.png',
    url:"http://japi.juhe.cn/tv/getCategory"
  },{
    id:3,
    page:'nba',
    title:"NBA赛事",
    icon:'../../images/nba.png',
    url:"http://op.juhe.cn/onebox/basketball/nba"
  },{
    id:4,
    page:'calendar',
    title:"万年历",
    icon:'../../images/calendar.png',
    url:"http://japi.juhe.cn/calendar/day"
  },{
    id:5,
    page:'weather',
    title:"天气预报",
    icon:'../../images/weather.png',
    url:"http://op.juhe.cn/onebox/weather/query"
  },{
    id:6,
    page:'mobile',
    title:"手机号码归属地",
    icon:'../../images/mobile.png',
    url:"http://apis.juhe.cn/mobile/get"
  },{
    id:7,
    page:'weixin',
    title:"微信精选",
    icon:'../../images/weixin.png',
    url:"http://v.juhe.cn/weixin/query"
  },{
    id:8,
    page:'joke',
    title:"笑话大全",
    icon:'../../images/joke.png',
    url:"http://japi.juhe.cn/joke/content/list.from"
  },{
    id:9,
    page:'star',
    title:"星座运势",
    icon:'../../images/star.png',
    url:"http://web.juhe.cn:8080/constellation/getAll"
  }
]
}

点击栏目的的逻辑,使用e.currentTarget可以获得当前组件的一些属性值集合,e.currentTarget.dataset获得当前组件上由data-开头的自定义属性组成的集合

listData:function(e){
  var page = e.currentTarget.dataset.page;//获得绑定的page值,这个值判断点击之后页面跳转到哪个页面
  var url = e.currentTarget.dataset.url;//获得绑定的当前的接口的url
  wx.navigateTo({
    url:'../'+page+'/'+page+'?url='+url+''//传递参数到详情页
  });
}

页面美化

在index.wxss中给index页面添加样式,以9宫格的形式展示

.lifeModal{ width:248rpx; padding:50rpx 0; float: left; text-align: center;}
.icon{ width:80rpx; height: 80rpx; margin:30rpx auto;}
.title{ width: 248rpx; display: block; font-size: 13px; padding:20rpx 0;}

到此首页就制作完了,可以参考源码