三招讓你快速上手 coServ

Ben Lue
4 min readJun 19, 2019

--

Photo by BRUNO CERVERA on Unsplash

以下介紹幾個簡單的秘技,讓你快速掌握 coServ 程式開發的要領。

CLI

對初次上手 coServ 的朋友,我們非常建議使用 coServ 的 CLI (Command Line Interface)。安裝時請使用全域安裝:

npm install -g @coserv/cli

安裝成功後就可以用以下的指令啟動或關閉 coServ 服務,或是建立新的 web application:

# 建立一個新的網路程式
cd 你的工作目錄
xs create app_name
# 啟動服務
xs service
# 停止服務
xs service stop
# 重啟服務
xs service restart

在建立一個新的網路程式時,你需要為你的網路程式取一個代碼。cli 會在你的工作目錄下先建立一個www目錄,然後在 www 下建一個與代碼同名的目錄,並在這個目錄下建立程式的相關檔案。之後你就可以啟動 coServ 服務 (xs service),並用瀏覽器取讀取你程式的輸出網頁。

關於 coServ CLI 更多的資訊,請參考 coServ/cli 這個專案。

編寫網頁畫面

要搞懂 coServ 許多有趣的功能,可以先從 HTML 畫面生成開始。在 coServ 上,HTML 畫面是由 node.js 模組所產生。這個 node.js 模組必須對外公告一個 view() 函數。在 view() 這個函數中,coServ 提供了一些內建函數讓你可以快速的產出 HTML:

/* 利用 xs.e() 這個內建函數來產生一個 HTML 的標籤
* tagName: 標籤名稱,如 'div', 'h2', 'table' 等
* tagAttribute: 以 JS 物件代表標籤屬性,如:{width: 200}
* child_tags: 子標籤,可以是字串、以 xs.e() 產生的標籤,或是子標籤所構成的陣列
*/
xs.e(tagName, tagAttribute, child_tags)

利用 xs.e() 產生的標籤,他的使用方式和 jQuery 類似。你可以利用以下的函數來處理標籤:

// 先建立一個標籤
let n = xs.e('div')
// add() 加入子標籤,而且可以串接函數
n.add('h2', 'Title')
.add('div', {class: 'text-center'}, '這裡是本文')
// attr() 加入新的屬性
n.attr('style', 'font-size: 1.2rem;')
// find() 和 jQuery.find() 類似,找出下層節點
let child = n.find('h2')

喔,有件很重要的事。模組中的這個 view() 函數必須回傳一個標籤,這個標籤是「根」標籤,和一般標籤不太一樣,必須用特別的函數 xs.root() 產生。根標籤與一般標籤不同的原因,是根標籤可以掛載 CSS 樣式的描述。

// 要產生畫面的 node.js 模組必須定義 exports.view() 這個函數
exports.view = function() {
let root = xs.root(css())
.add('h2', 'My Title')
.add('hr')
return root
}
// 以 JSON 描述 CSS. 這個CSS只會被這個模組所產生的HTML片段碼參考到
function css() {
return {
h2: {
'font-size': '1.4rem'
}
}
}

附帶提一下,coServ 用來產生 HTML 的模組,雖然和一般的 node.js 模組幾乎是一樣的,但是其附屬檔名是 .xs 而不是 .js。這會有個小問題,就是開發工具的 syntax highlight 在 .xs 檔案下就不見了。還好現在最流行的開發工具 VS Code 可以透過語言設定的方式,把 .xs 檔視為 Javascript 來處理,這樣就沒問題了。

參考現有範例

如果有現成的範例,改改裡面的程式看會發生什麼事,大概是最簡單有效的上手方法。coServ 有提供一個範例程式,大家可以去 clone 下來玩。coServ 有一個功能,就是會主動監控上面掛在的程式。當你修改網路程式時,不需要重啟 coServ。只要更新網路瀏覽器的畫面,就可以看到修改的結果了。

還有其他問題嗎?你可以到 coServ 在 github 上的專案獲得更多資訊,或是加入 coServ 在臉書的社團裡討論哦。

--

--

Ben Lue
Ben Lue

Written by Ben Lue

CEO of Gocharm Inc. and father of two amazing children. Love programming since teen and still loving it.

No responses yet