使用 Webix 建立 Email 客戶端
Webix 是一個JavaScript UI 庫,提供了多達88個UI小部件和功能豐富的 CSS/HTML5 JavaScript 控制元件。使用 Webix 可以有效地加快 Web 應用的開發。文字將演示瞭如何透過 Webix 框架,來建立一個 Email 客戶端原型。
安裝 Webix可以下載 Webix 的 JS、CSS 檔案,但最快的方式是使用 Webix 的 CDN, 如下:
...
快速開始 我們為我們的第一個應用建立第一個頁面 index.html。在 中定義 js 指令碼,來放置 UI 配置:
/* UI 配置 */
接著,我們編寫 UI 配置:
webix.ui({
rows: [
{
view: "template",
type: "header",
template: "我的應用!"
},
{
view: "datatable",
autoConfig: true,
data: [
{ title: "Way Lau", year: 1987, votes: 533848, rating: 8.9, rank: 5 },
{ title: "老衛", year: 1987, votes: 53248, rating: 5.9, rank: 6 }
]
}
]
});
為了能更加友好顯示中文,我們在標籤裡面加上
。
這樣,我們完整的第一個應用的程式碼如下:
用瀏覽器直接開啟我們的index.html 頁面,可以看到如下效果:
探索專案那麼,我們來簡單介紹下 Webix 的原理。
Webix 的應用程式都是放置在 script 指令碼中:
webix.ui({
// 元件
});
需要注意的是,如果想讓 Webix 指令碼在 HTML 文件載入完了再執行,可以使用 webix.ready(function(){ ....})
來包裹我們的 Webix,用法如下:
webix.ready(function(){
webix.ui({
....
});
});
下面程式碼是用 Webix 中的 view
來定義一個檢視元件,多個 view
可以實現複雜的應用佈局結構:
rows: [
{
view: "template",
type: "header",
template: "我的應用!"
},
{
view: "datatable",
autoConfig: true,
data: [
{ title: "Way Lau", year: 1987, votes: 533848, rating: 8.9, rank: 5 },
{ title: "老衛", year: 1987, votes: 53248, rating: 5.9, rank: 6 }
]
}
]
在上述例子中,我們用到了兩種型別的 view
,其中,
-
rows
程式碼垂直佈局的多個列,這個,我們每個行(row)就是一個view
; -
是一個用於包裹 HTML 內容的容器。這裡我們用來型別為
header
的template
來說明這個是應用頭。更多template
的型別,可以自行參閱; -
是一個功能豐富的資料表格元件;
- autoConfig 設定為 true,表明表格會根據資料來自適應;
- data 就是表格中放置的資料
在快速瞭解 Webix 的相關概念之後,我們就要來建立一個稍微複雜一點的應用,就是本文的主要內容“Email 客戶端”。
佈局
從大布局開始,再逐步求精,是構建前端應用的基本思路。我們建立瞭如下佈局結構:
webix.ui({
type: "space",
rows: [
/* 1st row. Toolbar */
{
template: "Toolbar",
height: 45,
},
/* 2nd row. The rest of application */
{
type: "wide",
cols: [
/* 1st column of the second row.
/* Folder tree and Calendar */
{
type: "clean",
rows: [
{
template: "Tree",
width: 280
},
{
template: "Calendar"
}
]
},
/* 2nd column of the second row.
/* Email list, Buttons, and Message reader */
{
type: "wide",
rows: [
{ template: "Email List" },
{
height: 45, cols: [
{ template: "Button1" },
{ template: "Button2" },
{},
{ template: "Button 3" }
]
},
{ template: "Message" }
]
}
]
}
]
});
其中:
- cols 就是列,每行(row)可能包含了多個列(col);
- height 和 width 屬性來定義檢視所需的大小了
- type,它定義了佈局邊框。如果使用
clean
將獲得無邊框的單元格,使用wide
將獲得有邊框的、有更大空間的單元格。
實現 Toolbar
Toolbar(工具欄)可以包含各種元素,如按鈕或下拉選單等。
記住,要使用Webix建立元件,必須使用view:“component_name”
程式碼行,元素屬性允許選擇工具欄的內容。
...
{
view: "toolbar",
height: 45,
elements:[
{view: "label", label: "Webix Email 客戶端"}
]
},
...
- elements 用來放置子的
view
元件。 - label 就是顯示普通的文字標籤
這裡,我們使用了 ,來建立圖表。
實現 Tree
建立選單目錄樹:
...
{
view:"tree",
id: "my_tree",
select: true,
width:280,
data:[
{ id:"1", value:"收件箱"},
{ id:"2", value:"已傳送"},
{ id:"3", value:"草稿箱"},
{ id:"4", value:"垃圾箱"},
{ id:"5", value:"通訊錄", open:true,
data:[
{ id:"5-1", value:"好友"},
{ id:"5-2", value:"家人"}
]
}
]
},
...
其中:
- tree 是一個功能豐富的樹形元件;
- open 設定為 true,來讓我們的樹在初始化時就處於開啟狀態。
最終效果如下:
實現 Calendar
建立日曆元件:
...
{
view:"calendar",
timepicker:true
},
...
其中:
- calendar 是一個功能豐富的日曆元件;
- timepicker 設定為 true,在日曆上顯示時間選擇器。
最終效果如下:
實現 Email 列表
還記得我們的在“快速開始”部分的那個表格嗎?這裡同樣需要用表格來實現 Email 列表:
建立Email 列表:
...
{
id: "my_datatable",
view: "datatable",
scrollX: false,
columns: [
{
id: "checked", header: { content: "masterCheckbox" },
template: "{common.checkbox()}", width: 40
},
{ id: "name", width: 250, header: "發件人" },
{ id: "subject", header: "主題", fillspace: true },
{ id: "date", header: "時間", width: 150 }
],
data: [
{
id: 1, folder: 1, name: "Way Lau",
email: "waylau521@gmail.com", subject: "Invitation",
date: "25/07/2017 12:30:20"
},
{
id: 2, folder: 1, name: "老衛",
email: "waylau521@163.com", subject: "Report",
date: "25/07/2017 16:10:07"
},
{
id: 11, folder: 2, name: "Way Lau",
email: "waylau521@gmail.com", subject: "Re: Forecast",
date: "25/07/2017 14:10:45"
},
{
id: 12, folder: 2, name: "老衛",
email: "waylau521@163.com", subject: "Party invitation",
date: "25/07/2017 17:05:10"
}
]
},
...
其中:
- columns 用來定義表頭;
-
header:{ content:"masterCheckbox" }
定義了可以全選列表的 checkbox; -
template:"{common.checkbox()}"
設定每個列表項都會帶有一個 checkbox; - scrollX 設定為 false,意味著禁用了水平的捲軸。
- fillspace 設定為 true,意味可以自動填充寬度。
最終效果如下:
事件處理
事件,讓元件具備互動功能:
...
// 繫結事件
$$("my_datatable").bind($$("my_tree"),function(obj,filter){
return obj.folder == filter.id;
});
// 選中第一個節點
$$("my_tree").select(1);
...
其中:
- "my_datatable" 為
datatable
元件的 id。繫結了"my_tree"的點選事件; -
$$("my_tree").select(1)
意味著樹節點會選中第一個節點。
最終效果如下:
按鈕實現
按鈕實現如下:
...
{
height: 45, cols: [
{
view:"button",
label:"回覆",
width: 95
},
{
view:"button",
label:"建立",
width: 95
},
{},
{
view:"button",
label:"刪除",
width: 95
}
]
},
...
其中:
- "my_datatable" 為
datatable
元件的 id。繫結了"my_tree"的點選事件; -
$$("my_tree").select(1)
意味著樹節點會選中第一個節點。
最終效果如下:
展示 Email 正文
展示 Email 正文實現如下:
...
{
id:"details",
template:"No message selected"
},
...
如果想顯示文字,可以編寫如下指令碼:
var message = "大道至簡 ";
$$("details").define("template",message);
$$("details").render();
最終效果如下:
編輯視窗
傳送郵件,我們需要有一個編輯視窗:
webix.ui({
view:"window",
move: true,
id:"my_win",
width:400,
head:"建立新郵件",
position: "center",
body: {
view:"form",
borderless:true,
elements: [
{ view:"text", label:'收件人:', name:"address" },
{ view:"text", label:'主題:', name:"subject" },
{ view:"textarea", height:200, label:"內容:", name:"message"},
{ cols: [
{ view:"button", value: "傳送", },
{ view:"button", value: "關閉", click:("$$('my_win').hide();") }
]},
],
}
});
然後在“建立”的按鈕上,新增彈出視窗的事件:
...
{
view:"button",
label:"建立",
width: 95,
click:function(){
$$("my_win").getBody().clear();
$$("my_win").show();
}
},
...
最終效果如下:
原始碼- 本文同步至
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1868/viewspace-2799005/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#之使用CefSharp建立客戶端C#客戶端
- 如何建立NEO輕客戶端客戶端
- CXF建立webservice客戶端和服務端Web客戶端服務端
- github客戶端使用Github客戶端
- vncserver建立與客戶端連線VNCServer客戶端
- FTP 客戶端使用教程FTP客戶端
- MQTTJava客戶端的使用MQQTJava客戶端
- redis客戶端的使用Redis客戶端
- python建立tcp服務端和客戶端PythonTCP服務端客戶端
- 在.NET 6 中如何建立和使用 HTTP 客戶端 SDKHTTP客戶端
- 7.4 為投注合約建立客戶端客戶端
- 建立一個Twisted Reactor TCP客戶端ReactTCP客戶端
- git客戶端建立本地公鑰Git客戶端
- 如何建立一個Java遊戲客戶端Java遊戲客戶端
- 如何在 Ubuntu 中更改預設瀏覽器和 Email 客戶端Ubuntu瀏覽器AI客戶端
- ftp客戶端,ftp客戶端軟體具體怎麼使用?FTP客戶端
- 利用abap寫程式寄email給客戶AI
- NEO-GUI 客戶端使用GUI客戶端
- dbus客戶端使用指南客戶端
- odps dship客戶端使用客戶端
- ubuntu 下svn客戶端使用Ubuntu客戶端
- Winform客戶端引用WCF客戶端後,部分類無法正常使用ORM客戶端
- Java建立WebService服務及客戶端實現JavaWeb客戶端
- 在netweaver中建立應用程式客戶端客戶端
- 域管理客戶端自動建立共享對映客戶端
- [jaeger] 二、客戶端使用 (Java版本)客戶端Java
- Curator(ZoooKeeper客戶端)使用詳解客戶端
- 命令列客戶端MySQL如何使用命令列客戶端MySql
- zookeeper 開源客戶端ZkClient使用客戶端client
- zookeeper 開源客戶端Curator使用客戶端
- Elasticsearch及java客戶端jest使用ElasticsearchJava客戶端
- 免安裝Oracle客戶端使用Oracle客戶端
- WebSocket簡單使用(二)-客戶端Web客戶端
- 郵件客戶端的配置使用客戶端
- 中文版vnc客戶端,中文版vnc客戶端下載,中文版vnc客戶端如何使用?VNC客戶端
- ftp客戶端軟體,ftp客戶端軟體哪個好用,使用方法FTP客戶端
- dubbo客戶端客戶端
- Pulsar客戶端客戶端