微信小程序 cnode社區(qū)版本
小程序預覽
項目結構
<pre>
│ .gitattributes
│ .gitignore
│ app.js # 小程序邏輯
│ app.json # 小程序公共設置(頁面路徑岖寞、窗口表現(xiàn)、設置網(wǎng)絡超時時間、設置多tab)
│ app.wxss # 小程序公共樣式表
│ README.md # 小程序項目說明
│
├─image # 小程序圖片資源
|
├─pages # 小程序文件
│ ├─common
│ ├─detail
│ ├─index
│ │ index.js # 頁面邏輯
│ │ index.wxml # 頁面渲染層
│ │ index.wxss # 頁面樣式
│ ├─login
| ├─logs
│ └─topics
│
└─utils # 小程序公用方法模塊
api.js
util.js
</pre>
開發(fā)環(huán)境
下載地址 :https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=1474887501214
開發(fā)過程
- 配置默認啟動頁面
在app.json文件修改注冊頁面的順序,把“pages/topics/topics” 放在第一位,就會自動把topics.wxml 顯示默認啟動
<pre>
{
"pages":[
"pages/topics/topics",
"pages/detail/detail",
"pages/login/login",
"pages/index/index",
"pages/logs/logs"
]
}
</pre>
-
配置tabBar
tabBar 是一個數(shù)組,只能配置最少2個、最多5個 tab蜀踏,tab 按數(shù)組的順序排序。
<pre>
"tabBar":{
"color":"#444",
"selectedColor":"#80bd01",
"backgroundColor":"#fff",
"borderStyle":"white",
"list":[{
"pagePath":"pages/topics/topics",
"text":"首頁",
"iconPath":"images/bar/CNode.png",
"selectedIconPath":"images/bar/CNodeHL.png"
},{
"pagePath":"pages/index/index",
"text":"我的",
"iconPath":"images/bar/ME.png",
"selectedIconPath":"images/bar/MEHL.png"
}]
}
</pre>
-
window 設置
具體看文檔https://mp.weixin.qq.com/debug/wxadoc/dev/framework/config.html?t=1475052056717
簡單封裝wx.request(OBJECT)
<pre>
// get請求方法
function fetchGet(url, callback) {
// return callback(null, top250)
wx.request({
url: url,
header: { 'Content-Type': 'application/json' },
success (res) {
callback(null, res.data)
},
fail (e) {
console.error(e)
callback(e)
}
})
}
// post請求方法
function fetchPost(url, data, callback) {
wx.request({
method: 'POST',
url: url,
data: data,
success (res) {
callback(null, res.data)
},
fail (e) {
console.error(e)
callback(e)
}
})
}
module.exports = {
// METHOD
fetchGet: fetchGet,
fetchPost: fetchPost
}
</pre>
- 滾動底部加載下一頁
使用了小程序自帶的scroll-view組件
<!--列表list組件 -->
<template name="list">
<scroll-view class="scroll-posts-list" style="height:100%" scroll-y="true" bindscrolltolower="lower">
<view class="postslist">
<block wx:for="{{postsList}}">
<view class="posts-list">
<navigator url="/pages/detail/detail?id={{item.id}}">
<view class="posts-list-info" index="{{index}}">
<image class="userimg" src="{{item.author.avatar_url}}" />
<view class="item-box">
<view class="userinfo">
<text class="username">{{item.author.loginname}}</text>
<text class="time">{{item.last_reply_at}}</text>
</view>
<view class="posts-title">
<view class="posts-tag hot" wx:if="{{item.top === true}}">置頂</view>
<view class="posts-tag" wx:if="{{item.good === true}}">精華</view>
<text>{{item.title}}</text>
</view>
</view>
</view>
<view class="bar-info">
<view class="bar-info-item">
<image class="bar-info-item-icon" src="/images/icon/reply.png"></image>
<view class="bar-info-item-number">{{item.reply_count}}</view>
</view>
<view class="bar-info-item">
<image class="bar-info-item-icon" src="/images/icon/visit.png"></image>
<view class="bar-info-item-number">{{item.visit_count}}</view>
</view>
<view class="bar-info-item2" wx:if="{{item.tab === 'good'}}">
<image class="bar-info-item-icon" src="/images/icon/type.png"></image>
<view class="bar-info-item-number">精華</view>
</view>
<view class="bar-info-item2" wx:if="{{item.tab === 'share'}}">
<image class="bar-info-item-icon" src="/images/icon/type.png"></image>
<view class="bar-info-item-number">分享</view>
</view>
<view class="bar-info-item2" wx:if="{{item.tab === 'ask'}}">
<image class="bar-info-item-icon" src="/images/icon/type.png"></image>
<view class="bar-info-item-number">問答</view>
</view>
<view class="bar-info-item2" wx:if="{{item.tab === 'job'}}">
<image class="bar-info-item-icon" src="/images/icon/type.png"></image>
<view class="bar-info-item-number">招聘</view>
</view>
</view>
</navigator>
</view>
</block>
</view>
</scroll-view>
<loading class="loading" hidden="{{hidden}}">
<text class="loading-font">加載中...</text>
</loading>
</template>
<!-- topics.wxml -->
<import src="../common/nav.wxml"/>
<import src="../common/list.wxml"/>
<view class="page topics">
<template is="nav" data="{{ navList, activeIndex }}"/>
<template is="list" data="{{ postsList, hidden }}"/>
</view>
滾動區(qū)的最大的父級層要設置height: 100%; 不然無法檢測滾動事件
也不知道是不是我布局的原因掰吕,我這里是一定要這樣設置的
.topics{
height: 100%;
overflow: hidden;
}
// 滑動底部加載
lower: function() {
console.log('滑動底部加載', new Date());
var that = this;
that.setData({
page: that.data.page + 1
});
if (that.data.tab !== 'all') {
this.getData({tab: that.data.tab, page: that.data.page});
} else {
this.getData({page: that.data.page});
}
}
用法
<scroll-view class="scroll-posts-list" style="height:100%" scroll-y="true" bindscrolltolower="lower">
</scroll-view>
使用說明
- 將倉庫克隆到本地:
$ git clone https://github.com/vincentSea/wechat-cnode.git
打開
微信Web開放者工具
(注意:必須是0.9.092300
版本)選擇
添加項目
果覆,填寫或選擇相應信息
- AppID:點擊右下角
無AppID
- 項目名稱:隨便填寫,因為不涉及到部署殖熟,所以無所謂
- 項目目錄:選擇剛剛克隆的文件夾
- 點擊
添加項目
特別感謝
感謝 coolfish 的項目案例
coolfish的github: https://github.com/coolfishstudio