Magicodes.WeiChat——后台JS框架封裝


Magicodes.WeiChat同時也致力於提高后台開發效率,因此對在后台前端這塊也做了一定的封裝。我們先來說說主要的框架JS——mwc.js和mwc_elements.js。這兩個JS文件位於Scripts目錄下的app目錄:

· mwc:前端框架定義,可以理解為接口定義

· mwc_elements:基於前端框架定義的具體實現

主要API功能如下:

1日志

日志函數用於向瀏覽器控制台輸出日志信息,比如調試信息、警告信息、錯誤信息、災難信息等等,兼容主流的瀏覽器。后續還會增強相關函數,目前只做了簡單的封裝。

1.1 定義

目前封裝了5個日志記錄函數,分別是:

方法名

參數

描述

mwc.log.debug

logObject:object

輸出debug日志

mwc.log.info

logObject:object

輸出info日志

mwc.log.warn

logObject:object

輸出warn日志

mwc.log.error

logObject:object

輸出error日志

mwc.log.fatal

logObject:object

輸出fatal日志

1.2 使用示例:

mwc.log.debug('記錄調試日志')

mwc.log.info('記錄信息日志')

mwc.log.warn('記錄警告日志')

mwc.log.error('記錄錯誤日志')

mwc.log.fatal('記錄災難日志')

1.3 效果圖

image

2 通知

通知函數用於向用戶提示相關業務信息。默認顯示在用戶窗口的右上角,然后在一定時間后會自動消失。

不同函數顯示的顏色和圖標不同,通常用於顯示業務成功操作提示,警告提示,錯誤提示等信息。

2.1 定義

函數定義如下:

方法名

參數

描述

mwc.notify.success

message(消息正文):string,

title(消息標題):string

顯示success提示

mwc.notify.info

message(消息正文):string,

title(消息標題):string

顯示info提示

mwc.notify.warn

message(消息正文):string,

title(消息標題):string

顯示warn提示

mwc.notify.error

message(消息正文):string,

title(消息標題):string

顯示error提示

2.2 使用示例

mwc.notify.success('這是成功提示!','消息提示')

mwc.notify.success('這是成功提示!')

mwc.notify.info('這是信息提示!','消息提示')

mwc.notify.info('這是信息提示!')

mwc.notify.warn('這是警告提示!','消息提示')

mwc.notify.warn('這是警告提示!')

mwc.notify.error('這是錯誤提示!','消息提示')

mwc.notify.error('這是錯誤提示!')

2.3 效果圖

image

3 彈窗

彈窗信息(提示)用於向用戶顯示需要用戶確認的信息或內容,主要用於彈窗顯示信息確認、成功確認、警告確認、錯誤確認、操作確認等。

3.1 定義

方法名

參數

描述

mwc.message.info

message(消息正文):string,

title(消息標題):string

顯示Info信息

mwc.message.success

message(消息正文):string,

title(消息標題):string

顯示success信息

mwc.message.warn

message(消息正文):string,

title(消息標題):string

顯示warn信息

mwc.message.error

message(消息正文):string,

title(消息標題):string

顯示error信息

mwc.message.confirm

message(消息正文):string,

title(消息標題):string

顯示confirm信息

3.2 使用示例

mwc.message.info('圖片刪除成功!','溫馨提示')

mwc.message.success('圖片刪除成功!','溫馨提示')

mwc.message.warn('圖片刪除失敗!','溫馨提示')

mwc.message.error('圖片刪除出現錯誤,該圖片不存在!','溫馨提示')

mwc.message.confirm('確定需要刪除此項目么?','溫馨提示')

mwc.message.confirm('確定需要刪除此項目么?','溫馨提示',function(){alert('刪除成功!')})

3.3 效果圖

Info:

image

Success:

image

Warn:

image

Error:

image

Confirm:

image

4 UI阻塞

UI阻塞會顯示遮罩層以阻礙用戶的操作,通常用於Ajax請求處理或者時間比較長的業務處理,以提高用戶體驗並且防止在處理過程中用戶進行其他操作。

4.1 定義

方法名

參數

描述

mwc.ui.block

elm(jq選擇器):string

阻塞UI

mwc.ui. unblock

elm(jq選擇器):string

取消阻塞

4.2 使用示例

mwc.ui. block ()

mwc.ui. unblock ()

mwc.ui. block ('#newUsers')

mwc.ui. unblock ('#newUsers')

4.3 效果圖

image

image

5 忙碌狀態

忙碌狀態用於阻塞UI並且顯示加載動畫,通常用於Ajax請求處理或者時間比較長的業務處理,以提高用戶體驗並且防止在處理過程中用戶進行其他操作。

5.1 定義

方法名

參數

描述

mwc.ui.setBusy

elm(jq選擇器):string,

optionsOrPromise(設置):object

設置為忙碌狀態

mwc.ui.clearBusy

elm(jq選擇器):string

清除或關閉忙碌狀態

5.2 使用示例

mwc.ui.setBusy()

mwc.ui.clearBusy()

mwc.ui.setBusy('#newUsers')

mwc.ui.clearBusy('#newUsers')

mwc.ui.setBusy('#newUsers',{finally:function(){alert('終於搞完了!')}})

5.3 效果圖

image

image

6 彈出窗口

彈出窗口用於在當前頁面彈窗以Iframe的形式加載其他頁面並顯示,以便用戶在一個界面里完成所有的操作或者查看所有內容,以便提高用戶體驗。

6.1 定義

方法名

參數

描述

mwc.window.show

title(窗口標題):string,

url(url地址):string,

width(寬度,可省略):int,

height(高度,可省略):int

彈出窗口。

注意:該函數支持多級彈窗,如果沒有設置彈窗大小,子級彈窗的高寬會被自動設置比父級窗口稍小,以更好的呈現。

mwc.window.closeSeft

 

從當前窗口的內容頁關閉自身(即關閉當前窗口)

mwc.window.closeAll

 

關閉所有彈窗

6.2 使用示例

//將clicktype='modal'屬性的鏈接均用彈窗打開

$("a[data-clicktype='modal']").on('click', function () {

var url = $(this).data('url');

var title = $(this).data('title');

mwc.window.show(title, url);

});

mwc.window.closeSeft()

mwc.window.closeAll()

6.3 效果圖

image

image

image

7 Ajax請求處理

本框架封裝了對象restApi用於處理Ajax請求。主要用於使用Ajax請求REST風格的Web Api,並且根據狀態碼處理請求結果,回調成功或錯誤函數。

7.1 HTTP狀態碼處理

mwc.restApi封裝了對Ajax請求的通用處理。其定義了get、put、post、delete等4個函數,能夠很方便的訪問REST API接口。默認已支持以下類型的HTTP狀態碼處理:

HTTP狀態碼

描述

處理

對應WebApi方法

200

成功響應

調用success函數,並傳遞jsonData

Ok

201

創建成功

調用success函數,並傳遞jsonData

Created

401

需要驗證

彈出“登陸失效,請重新登陸!”提示,調用error函數,並跳轉到登錄窗口

Unauthorized

204

成功響應,無內容返回

調用success函數

StatusCode(HttpStatusCode.NoContent)

404

資源或對象不存在

彈出“您訪問的資源已被刪除或不存在!”提示,調用error函數,並傳遞錯誤消息

NotFound

400

請求失敗

調用error函數,並傳遞失敗對象消息

BadRequest

500

服務器錯誤

調用error函數,並傳遞錯誤消息對象

InternalServerError

配置說明,在Ajax默認的配置項上,增加對以下屬性的支持:

屬性名稱

類型

說明

success

function

業務處理成功后執行的回調函數

error

function

業務處理失敗后執行的回調函數

isBlockUI

bool

請求時是否阻礙UI(會顯示遮罩層以及加載動畫),默認為true

blockUI

string

Jquery選擇器表達式

7.2 定義

方法名

參數

描述

mwc.restApi.get

setting(ajax設置):object

使用Http GET發起Ajax請求

mwc.restApi.delete

setting(ajax設置):object

使用Http DELETE發起Ajax請求

mwc.restApi.put

setting(ajax設置):object

使用Http PUT發起Ajax請求

mwc.restApi.post

setting(ajax設置):object

使用Http POST發起Ajax請求

7.3 使用示例

7.3.1 GET

示例1:

mwc.restApi.get({
                    url: '/api/Menus',
                    success: function (data) {
                        $.each(data, function (i, v) {
                            if (v.sub_button) {
                                $.each(v.sub_button, function (i1, v1) {
                                    v.sub_button[i1] = $.extend(self.getModelTpl(), v1);
                                })
                            }
                            data[i] = $.extend(self.getModelTpl(), v);
                        });
                        self.Menus(ko.mapping.fromJS(data));
                    }
                });

示例2:

mwc.restApi.get({
            //請求地址
            url: '/api/News/' + newValue,
            //是否鎖定UI
            isBlockUI: true,
            //可選,鎖定元素
            blockUI: componentInfo.element,
            //成功函數
            success: function (data) {
                self.Name(data.Title);
                self.Url('/MediaFiles/thumb/' + data.ThumbMediaId + '.jpg');
            }
        });

示例3:

//加載數據
    this.loadData = function () {
        mwc.restApi.get({
            //請求地址
            url: '/api/News/' + self.currentPageIndex() + '/' + self.pageSize(),
            //是否鎖定UI
            isBlockUI: true,
            //可選,鎖定元素
            blockUI: componentInfo.element,
            //成功函數
            success: function (data) {
                self.dataRows(data.DataRows);
                self.totalCount(data["TotalItemCount"]);
                self.pages(self.getPagesArr());
                self.showLoader(false);
            }
        });
};

7.3.2 POST

示例1:

mwc.restApi.post({
                    url: "@Model.TemplateNo",
                    contentType: "application/x-www-form-urlencoded",
                    data: dataJson,
                    success: function (data) {
                        if (data.Success && data.Result)
                            location.href = '/WeiChat_MessagesTemplateSendLog?templateNo=@Model.TemplateNo&batchNumber=' + data.Result;
                        else
                            mwc.message.warn('操作失敗,具體原因請查看系統日志!');
                    }
                });

7.3.3 PUT

mwc.restApi.put({
                    url: '/api/Menus',
                    data: { menu: { button: data } }
                });

7.3.4 DELETE

mwc.restApi.delete({
                    url: "/api/images/" + $(this).data("id"),
                    success: function (data) {
                        mwc.notify.success("操作成功!");
                        setTimeout(function () {
                            location.reload();
                        }, 1000);
                    }
                });

已經在封裝微信H5 UI框架的腳本了,請關注后續更新。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM