在工作中,爲了將業務團隊的服務構建狀態展示(jenkins上的數據),更好的提醒業務團隊去及時的處理問題,公司決定將構建數據展示到釘釘投屏上,定時刷新。
項目前端使用vue+element+nodejs的構架,webpack打包之後生成的都是靜態的html文件,通過axios進行後臺請求,在功能開發的過程中沒有任何問題,但是釘釘投屏卻顯示不出來。索性將全部的請求都註釋掉,只留下html標籤,頁面投出來了。所以發現問題了,就是用釘釘投屏的功能不支持js從後臺取數據(不知道釘釘是不是真的有這問題,也有可能我這個項目是前後端分離的問題,反正我遇到的就是這個樣子的)。
所以改爲另一種請求方式,xmlHttp請求後臺的方式。
XmlHttp是一套可以在Javascript、VbScript、Jscript等腳本語言中通過http協議傳送或從接收XML及其他數據的一套API。XmlHttp最大的用處是可以更新網頁的部分內容而不需要刷新整個頁面。
來自MSDN的解釋:XmlHttp提供客戶端同http服務器通訊的協議。客戶端可以通過XmlHttp對象(MSXML2.XMLHTTP.3.0)向http服務器發送請求並使用微軟XML文檔對象模型Microsoft® XML Document Object Model (DOM)處理迴應。
現在的絕對多數瀏覽器都增加了對XmlHttp的支持,IE中使用ActiveXObject方式創建XmlHttp對象,其他瀏覽器如:Firefox、Opera等通過window.XMLHttpRequest來創建xmlhttp對象。
代碼如下:
var xmlHttp;
if(window.ActiveXObject){//這裏進行判斷是爲了兼容IE瀏覽器
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
var url="*******/getScreenCiList?page=1&limit=10";//這裏是請求的後端接口地址,可以改成自己的
xmlHttp.responseType = 'json'
xmlHttp.overrideMimeType("application/json");
xmlHttp.open("GET",url,true);//創建一個新的http請求,並指定此請求的方法、URL以及驗證信息(用戶名/密碼)
xmlHttp.onload = function(e) {
if (xmlHttp.status == 200) {
mythat.list = xmlHttp.response.pageInfo.list;//這裏是返回的數據的接收
//mythat.listLoading = false;
}
};
xmlHttp.send();//發送請求到http服務器並接收回應
以上代碼即可實現向後臺發送請求。xmlHttp還有很多的屬性,讀者可以自行了解,在進行設置循環調用即可實現數據的刷新。
在設置數據刷新的過程中還遇到了個小插曲,我在做這個功能的時候,因爲用的是nodejs,所以我引入了一個node的cron插件,版本是1.7.0,因爲這個插件的功能強大,可以寫我們熟悉的cron表達式,時間規則定義起來多樣化,可是在投屏的過程中發現,釘釘企業工作臺投屏也是不支持的,鬱悶至極,所以又改爲了常見的js的setInterval方式,時間規則沒有之前的多樣化了,但也滿足了需求。
希望我的經歷能夠幫助到你。附上我的成品,這是一個根據瀏覽器屏幕大小,自動調節充滿的程度,自動調節字體大小和背景顏色,比較基礎(後臺數據計算規則、排序規則和行鏈接卻很複雜),可能會在後續的文章中更新。