1. 程式人生 > >MUI框架-09-MUI 與後臺數據交互

MUI框架-09-MUI 與後臺數據交互

plus javascrip wiki article mar 手機 r+ syntax 性能

MUI框架-09-MUI 與後臺數據交互

  • 本篇介紹使用 art-template 和原生 MUI 的數據交互 mui.ajax 來實現
  • 我們大家都知道,想要數據交互就要有數據,每次當我們發送請求,我們要清楚,怎麽發,發給誰,返回的數據是什麽內容,格式
  • 先放一張圖,給大家學習的動力:
    技術分享圖片
  • 然後今天呢,介紹的是調用 API,API 是什麽呢,就是一個接口,比如知乎日報的API ,我們可以通過這個 API 獲取到知乎上最新的消息,並且是 json 格式,我們就不用再去找數據了,其他類型 API 還有 百度語音識別,就是百度給我們一個接口,我們可以想這個接口發送 語音,然後返回給我們識別的結果,我們就沒必要就了解具體是怎麽識別的
  • 【註意】:我這裏收集了大量的 API ,贈送給大家:
  • 鏈接地址:中國國內 - 可用API合集

API 分析

  • 這裏我們就使用知乎日報 API
  • 知乎日報 API 分析:https://github.com/izzyleung/ZhihuDailyPurify/wiki/%E7%9F%A5%E4%B9%8E%E6%97%A5%E6%8A%A5-API-%E5%88%86%E6%9E%90
  • 怎麽使用呢,比如說我們想要拿到日報的主題,大家可以看上面的那篇文章,找到主題,下面有一個鏈接,就是我們需要的 API
    技術分享圖片
  • 下面也給出了響應實例
  • 我們就只需要考慮怎麽使用這些數據就 OK 了
  • 然後大家也可以試一下這個鏈接:https://news-at.zhihu.com/api/4/theme/11
  • 為了方便查看,大家也可以通過這個鏈接格式化 json 數據:在線代碼格式化
    技術分享圖片

Ajax

  • MUI Ajax 官方文檔
  • 參數呢,大家自己在官網看就可以,下面開始實戰
  • 這裏我們先一起看一下,官網給出的代碼示例:如下為通過post方式向某服務器發送鑒權登錄的代碼片段:
mui.ajax('http://server-name/login.php',{
    data:{
        username:'username',
        password:'password'
    },
    dataType:'json',//服務器返回json格式數據
    type:'post',//HTTP請求類型
    timeout:10000,//超時時間設置為10秒;
    headers:{'Content-Type':'application/json'},                  
    success:function(data){
        //服務器返回響應,根據響應結果,分析是否登錄成功;
        ...
    },
    error:function(xhr,type,errorThrown){
        //異常處理;
        console.log(type);
    }
});
  • 上面這段代碼就是說,ajax請求,設置一個目標地址,逗號,大括號後面是傳入的參數信息
  • 大家記住一句話 大括號開始 大括號結束就是 json 格式
  • 然後我們就根據這個做一個實例,準備呢,大家請先根據這篇創建一個簡單的頁面:MUI框架-08-窗口管理-創建子頁面
  • 然後打開我們的自己建的 html 目錄下的那個子頁面 html文件
  • 我們用下面代碼替換 init() 的 script 標簽,具體步驟寫在註釋:

<script type="text/javascript">
            mui.init()

            //plusReady,用來定義加載dom後的操作
            mui.plusReady(function() {
                
                //發起 ajax請求,地址使用知乎日報 api 
                mui.ajax('https://news-at.zhihu.com/api/4/theme/11', {
                    /* data 是參數,我們這裏不需要,我們只是從 api獲取數據
                    data: {
                        username: 'username',
                        password: 'password'
                    },
                    */
                    dataType: 'json', //服務器返回json格式數據
                    type: 'get', //HTTP請求類型
                    timeout: 10000, //超時時間設置為10秒;
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    success: function(data) {
                        //服務器返回響應,根據響應結果,分析是否登錄成功;
                        
                        //我們現在控制臺打印一下請求結果
                        console.log(data)
                
                        //然後獲取json數據中的具體值
                        console.log(data.stories[0].title)
                    },
                    error: function(xhr, type, errorThrown) {
                        //異常處理;
                        console.log(type);
                    }
                });

            })
        </script>
  • 如果你沒有安卓手機,建議下載一個夜神安卓模擬器,配置方法:
    MUI框架-07-HBuilder+夜神安卓模擬器 配置
  • 然後我們點擊【運行】>【】真機運行
    技術分享圖片
  • 我們可以看到控制臺
    技術分享圖片
  • 檢查一下:
    技術分享圖片

把返回的 json 數據放在頁面 -

使用 art-template - JavaScript 模板引擎

  • 返回的數據不能就展示在控制臺吧,怎麽把數據放在頁面是不是也很關鍵
  • 這裏要介紹另一位主角:art-template,它是高性能 JavaScript 模板引擎
  • art-template 官網: http://aui.github.io/art-template/zh-cn/index.html
  • 1.下載的話可以從官網下載
  • 2.可以直接下載我的 template -web.js:https://download.csdn.net/download/qq_40147863/10689407
  • 3.如果你會用 npm 包管理器,那麽建議新建一個文件夾,因為我們只需要一個 template -web.js 文件,我們有很多都不需要

    npm install art-template --save

  • 然後找到 art-template/template -web.js 文件
    技術分享圖片
  • 然後我們拷貝到項目 js 目錄的下面:
    技術分享圖片
  • 打開需要使用的 html 文件,在 head 標簽裏加入:
<script src="../js/template-web.js"></script>
  • 然後我們看一下 art-template 官網
    技術分享圖片
  • 也就是說們要使用這個 art-template,語句使用就要放在 這種 script 標簽裏,做對數據的渲染
  • 第一步:把頁面上 ul 標簽裏的內容都刪掉,給ul 標簽加一個id為zhihu截圖:
<ul class="mui-table-view" id="zhihu"></ul>
  • 第2步把頁面裏 init 函數的那個 script 標簽刪掉,步驟,寫在註釋裏了,粘貼下面這段代碼:
<!-- 引入template-web.js -->
        <script src="../js/template-web.js" type="text/javascript" charset="UTF-8"></script>
        <!-- 使用<script id="list" type="text/html"> 拼接 html -->
        <script id="list" type="text/html">
                <!-- 循環語法 -->
                {{each stories as list}}
                <li class="mui-table-view-cell mui-media">
                    <a href="javascript:;">
                        <img class="mui-media-object mui-pull-left" src="{{list.images[0]}}">
                        <div class="mui-media-body">
                            <!-- 獲取 title -->
                            {{list.title}}
                        </div>
                    </a>
                </li>
                {{/each}}
            </script>
        <script type="text/javascript">
            mui.init()

            //plusReady,用來定義加載dom後的操作
            mui.plusReady(function() {
                
                //發起 ajax請求,地址使用知乎日報 api 
                mui.ajax('https://news-at.zhihu.com/api/4/theme/11', {
                    /* data 是參數,我們這裏不需要,我們只是從 api獲取數據
                    data: {
                        username: 'username',
                        password: 'password'
                    },
                    */
                    dataType: 'json', //服務器返回json格式數據
                    type: 'get', //HTTP請求類型
                    timeout: 10000, //超時時間設置為10秒;
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    success: function(data) {
                        //服務器返回響應,根據響應結果,分析是否登錄成功;
                        
                        //我們現在控制臺打印一下請求結果
                        console.log(data)
                        
                        //然後獲取json數據中的具體值
                        //console.log(data.stories[0].title)
                        
                        //list 對應上面的 id,就是得到 拼接的 html
                        var html = template('list', data);
                        //把得到的 html 放到id為 zhihu 的 ul 標簽裏
                        document.getElementById("zhihu").innerHTML = html;
                        console.log(html);

                    },
                    error: function(xhr, type, errorThrown) {
                        //異常處理;
                        console.log(type);
                    }
                });

            })
        </script>

真機運行

  • 註意 web 瀏覽器是看不到效果的,必須真機運行
  • 截圖:
    技術分享圖片

  • art-template 官方文檔:http://aui.github.io/art-template/zh-cn/docs/syntax.html

更多文章鏈接:MUI 框架


  • 本筆記不允許任何個人和組織轉載

MUI框架-09-MUI 與後臺數據交互