网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網

ayuLiao:做一個比較完整的微信小程序(二)

發布時間:2017-11-28 17:38 所屬欄目:小程序開發教程

動手實現文章列表,本篇文章接著上一篇文章的節奏來實現月經小程序的文章列表,如圖...

 
 
 

動手實現文章列表

本篇文章接著上一篇文章的節奏來實現月經小程序的文章列表,如圖

這就界面最外層是scroll-view控件,使用該控件實現視圖區域的滾動,當用戶滾動到視圖底部時,實現下拉刷新,從服務器中取出跟多的文章,在scroll-view控件中,一開始使用swiper控件實現頂部滑動,然后就是使用模板template來實現文章列表,具體代碼如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!--bindscrolltolower下拉刷新-->
 <scroll-view style="height:{{scrollviewHeight}}px" bindscrolltolower="loadMore" scroll-y="true">
  <!--頂部輪幕-->
  <swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" class="banners" interval="{{interval}}" duration="{{duration}}">
    <block wx:for="{{banner}}">
      <swiper-item class="banner">
          <text class="banner-title">{{item.title}}</text>-->
        <image src="{{item.img}}" data-id="{{item.id}}" bindtap="bindViewTap" class="banner-image" width="100%" height="100%" />
        <text class="banner-title">{{item.title}}</text>-->
      </swiper-item>
    </block>
  </swiper>
  <!--頂部輪幕-->
  <!--文章列表模板-->
  <template name="itmes">
    <navigator url="../../pages/detail/detail?id={{id}}" hover-class="navigator-hover">
      <!--數據來自newsList,newsList中的key-value結構跟title、cTime一樣-->
      <view class="news-item">
        <view class="news-item-left">
          <view class="news-item-title">{{title}}</view>
        </view>
        <view class="news-item-right">
          <image src="{{img}}" class="news-image" />
        </view>
      </view>
    </navigator>
  </template>
  <view class="news-item-container">
    <text class="sub-title">月經小知識</text>
    <!--循環輸出列表-->
    <view  wx:for="{{newsList}}" >
      <!--引用上面定義的模板,...item是默認寫法-->
      <template is="itmes" data="{{...item}}" />
    </view>
  </view>
</scroll-view>

 

無論是頂部的滾動區域還是文章列表,或者文章詳情內容都是從服務器的數據庫中取出來的,可以使用wx.request()方法獲取指定url中的數據,如下用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
wx.request({
       url: 'http://localhost/index.php?s=/addon/Yuejin/Yuejin/getList',
       data: {
         limit:limit,
         lastid:lastid,
       },
       header: {
         'content-type': 'application/json'
       },
       success: function (res) {
         if(!res.data){
           return false
         }
         //更新數據
         that.setData({
           newsList: res.data
         })
        var len = res.data.length
         lastid = res.data[len-1].id;
      }
    })

 

data表示要傳遞給服務器的值,header表示數據包的格式,如果從服務器中獲取數據成功就會回調success方法

接著看月經詳情界面,該界面用于展示文章的詳細內容,一部后臺的文章內容都是富文本的格式,比如有個圖片,文字加粗之類的,但是微信小程序的官方文檔中并沒有對如何使用富文本進行說明,也就是說,在微信小程序中只能顯示文本,如果服務器傳回來的是富文本,就會將相應的HTML代碼也展示出來,但是上有政策下有對策,帥的人是不會被難倒的,我們使用wxParse這個第三方代碼,它的代碼在github上是開源的,地址如下https://github.com/icindy/wxParse

從github上下載下wxParse的代碼后,將wxParse文件夾中的所有內容都復制到項目的根目錄中,然后將樣式文件wxParse.wxss引入到需要實現的wxss文件中,這里我將它引入到app.wxss,讓項目全局都可以使用wxss中的樣式

1
@import "/wxParse/wxParse.wxss";

 

然后在需要使用wxParse模板的wxml文件中引入模版文件wxParse.wxml,這里我們在文章詳情頁也就是detail.wxml中引入,然后通過template 來使用wxParse

1
2
3
4
5
6
7
8
9
10
11
12
<!--detail.wxml-->
<import src="../../wxParse/wxParse.wxml"/> 
<view class="container">
    <view class="art-header">
        <image src="{{info.img}}" class="art-img"/>
        <view class="art-title">{{info.title}}</view>
        <view class="art-source">{{info.cTime}}</view>
    </view>
    <view class="wxParse text_L">
        <template is="wxParse" data="{{wxParseData:article.nodes}}"/>
    </view>
</view>

接著在對應的js文件中引入wxParse.js文件

1
2
//在使用的View中引入WxParse模塊
var WxParse = require('../../wxParse/wxParse.js');

 

此時就可以使用wxParse來解析富文本了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
wx.request({
      url: 'http://localhost/index.php?s=/addon/Yuejin/Yuejin/getDetail',
      data: {
        //從lists.wxml的navigator中獲得id
        id: options.id
      },
      header: {
        'content-type': 'application/json'
      },
      success: function (res) {
        //更新數據
        that.setData({
          info: res.data
        })
        var article = res.data.content;
        /**
        * WxParse.wxParse(bindName , type, data, target,imagePadding)
        * 1.bindName綁定的數據名(必填)
        * 2.type可以為html或者md(必填)
        * 3.data為傳入的具體數據(必填)
        * 4.target為Page對象,一般為this(必填)
        * 5.imagePadding為當圖片自適應是左右的單一padding(默認為0,可選)
        */
        WxParse.wxParse('article', 'html', article, that, 5);
      }
    })

 

這里要解析的富文本是從服務器中獲得的文章內容,所以配合wx.request()來使用

微信小程序后端的搭建

前面的數據都是從服務器中獲取的,這里我們不必從0開始編寫一個內容管理后臺,有很多開源的內容后臺供我們使用,其實這樣的后臺同樣可以使用博客系統、新聞網站之類的需求,這里我們使用weiPHP,weiPHP是一個開源的內容管理后臺系統,基于oneThink,oneThink又基于Think PHP3.2

首先下載weiPHP,文末會提供下載地址,下載完后將它放在Apache的根目錄,可以施工XAMPP快速安裝服務器的環境,第一次進入weiPHP要進行相應的安裝和設置


設置和安裝成功后,就會提示成功

這樣就擁有一個完整的內容管理后端了,該后端擁有前臺和后臺,是不是超級簡單

接著通過剛剛設置的賬號進入后臺,點擊插件管理,然后單擊快速創建

然后根據提示填寫內容,這里要注意的是標識名開頭一定要大寫,不然無法使用該插件,然后要記得勾選是否需要管理列表

這樣就常見完插件了,點擊安裝則可,安裝完后,可以進入前臺,看我的應用中是否出現剛剛創建的插件,如果沒有可以在系統設置列表中點擊清理緩存,將緩存給清理掉,就會出現剛剛創建的插件了,點擊進入該插件,如果沒有報錯就說明創建成功

如果出現下面的界面,說明在創建插件時,標識名開頭沒有大寫

創建完插件后,就要創建歸屬于該插件的模型,點擊系統—>模型管理—>新增,來添加一個新的模型

進入新增模型界面后,填寫相應的內容,這里要注意模型名稱要填寫成歸屬插件的名稱,模型標識要按照如下寫法

1
2
AyuLiao--->ayu_liao
Ayuliao--->ayuliao

 

如果該模型所屬插件處理開頭字母大寫外還有其他字母大寫,就需要使用下劃線分開,這是Think PHP3.2默認方式,而WeiPHP基于Think PHP3.2所以也有這種特性
然后在所屬插件中選擇剛剛創建的插件,如下圖

創建完模型后,可以編輯該模型,直接點擊模型名稱進程相應模型編輯界面則可,然后選擇字段編輯,為該模型添加一些字段,如下圖為添加文章內容字段,因為文章要是富文本,所以使用字段類型為編輯器

模型字段的編輯除了基礎編輯還有高級編輯,這里看到高級這個Tab,可以通過函數的形式自動完成字段內容的填寫,這里使用WeiPHP內置的time函數,自動獲得時間并添加到該字段上

添加完字段后,還不可以直接使用,這樣前臺是顯示不出相應內容的,要再次進入編輯模型的界面,此次進入設計,然后編寫列表定義,這些定義就是展示規則


這樣使用了get_img_html()方法獲得數據庫中對應的圖片,不然封面圖就顯示該圖對應在數據庫中的位置,這里還使用了time_format()方法,格式化時間

接著進入前臺,點擊一個例子這個插件,然后點擊新增,添加相應的標題、內容和封面圖

這樣我們就完成了內容的創建

但是想要讓微信小程序端獲得相應的內容還需要在相應的php文件中編寫代碼,進入到我們創建的插件所對應的文件中,也就是weicms/Addons/AyuLiao/Controller文件夾下的AyuLiaoController.class.php文件

AyuLiaoController.class.php文件中的代碼如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
namespace Addons\AyuLiao\Controller;
use Home\Controller\AddonsController;

class AyuLiaoController extends AddonsController{
function getList(){
		//設置連接超時時間,這里為永不超時
		set_time_limit(0);
		//用I函數來接收客戶端發送過來的數據,默認為10
		//limit為一頁顯示的數量
		$limit = I('limit',4,'intval');
		//這一頁最后一個item的id
		$lastid = I('lastid',0,'intval');
		//從哪個id開始找,找5個
		if($lastid > 0){
			$map['id'] = array('lt',$lastid);
		}
		//order從小到大,where從哪里開始查,order返回結果排序,field要查詢的內容,limit一次查詢多少條
		$list = M('ayu_liao')->where($map)->order('id desc')->field('id,title,img,cTime')->limit($limit)->select();
		//&表示引入它本身
		foreach($list as &$vo){
			//get_cover_url將圖片轉成url
			$vo['img'] = get_cover_url($vo['img']);
			$vo['cTime'] = time_format($vo['cTime']);
		}
		//ThinkPHP中的方法,將數據以JSON格式返回
		$this->ajaxReturn($list);
	}

	function getDetail(){
		$map['id'] = I('id',0,'intval');
		$info = M('ayu_liao')->where($map)->find();

		$info['img'] = get_cover_url($info['img']);
		$info['cTime'] = time_format($info['cTime']);

		// dump($info);
		$this->ajaxReturn($info);

	}
}

 

這樣寫了兩個方法,分別是getlist()方法用于返回文章列表、getDetail()方法用于返回文章的具體內容

看到getlist()方法,在該方法中,首先通過set_time_limit()方法設置連接超時時間,這里設置為0,表示永不超時,然后通過I()函數來接收客戶端發送的消息,,然后通過同M()方法來查詢ayu_liao數據表

看看編寫的方法成不成功,可以訪問以下相應的url,獲得對應的JSON數據就表示成功了

到這里,就編寫完微信小程序-月經管理這個小項目了,你還可以添加一下代碼來提升用戶體驗,比如獲取后端數據時彈出正在加載的提示等等

項目的完整代碼已經上傳到github,地址如下
https://github.com/ayuLiao/weixin-calender

后端WeiPHP已經上傳到百度云,內部還有該項目相應的代碼,直接可以使用
http://pan.baidu.com/s/1c7XJky
密碼為:帥B



易優小程序(企業版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/17983.html 復制鏈接 如需定制請聯系易優客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×