多用戶協作的前端開發環境:Silky

jopen 10年前發布 | 16K 次閱讀 Silky Web開發工具

Silky是一個多用戶協作的前端開發環境,正如她的名字一樣,Silky希望讓前端的協作開發能如絲般的潤滑。Silky基于 Handlebars和Less,選擇Handlebars作為模板引擎的原因是因為它很簡單,Less的爭議性可能沒有模板引擎這么大,畢竟可供選擇的并不多。

對于重構人員來說,TA可能只需要記住三條模板命令就能輕松實現模塊化開發了。Silky除了支持原來的Handlebars命令,還對Handlebars進行擴展,支持partialloop以及if,未來可能還會支持更多的命令。

Silky是金鷹網的內部工具,所有會有極少部分功能是供金鷹網內容使用的。未來也有可能會支持其它模板引擎和其它CSS腳本語言。

功能摘要

  • 集成HTTP功能,只需要一條命令就可以在當前目錄下創建一個Silky服務器
  • 支持代理,用于解決跨域問題
  • 支持HTML與CSS模塊化開發
  • 實時編譯coffee和less文件
  • 自動刷新功能,在開發環境下,silky會監控相關文件的變化,并通知頁面自動刷新,你無需要在網頁中增加任何代碼。

安裝

  1. 在*nix下,使用sudo npm install -g silky執行安裝,在此之前,請確保你已經安裝了node.js。請注意,silky必需全局安裝。
  2. 如果你沒有安裝coffee-script,你需要使用npm install -g coffee-script進行安裝

使用

  1. 在你的工作目錄,執行silky init創建一個新的silky工作環境 **注意:目前還不支持此命令,需要復制samples/.silky到工作目錄
  2. 執行silky命令,默認情況下,你可以使用http://localhost:14422/來訪問你的網站

silky命令及參數

silky命令的參數優先級要高于配置文件,例如你在配置文件指定了端口為14422,但如果你使用silky -p 80,那么silky的監聽端口將會是80而不是14422

build

silky build可以將項目build到一個指定的文件夾,你也可以配合-o來指定輸出的目錄,配合-e來指定工作環境,默認情況下,silky build的工作環境為production

init

'silky init可以初始化一個silky項目,這將會在當前的目錄下創建一個.silky的配置文件夾。使用silky init -f`,可以創建一個silky的示例項目,其目錄結構是silky推薦的目錄結構。

-p

silky -p指定工作端口,如sudo silky -p 80,注意:80端口在*nix下需要su權限

-e

silky -e用于指定工作環境,如silky -e production將會工作于production環境,silky將會讀取.silky/production下的所有配置文件

模板

模板是silky很重要的一環,silky采用handlebars作為標準模板,更多可以參考handlebars的官方網站。silky將.hbs作為模板的識別擴展名。

silky對handlebars進行擴展,如果你并不熟悉,你只需要記住擴展的幾個命令就可以了。

路由

silky遵從html文件優先原則,換句話說,當你訪問http://localhost:14422/index.html的時候,silky首先會查找template/index.html,如果存在則直接返回這個html文件,否則會查找template/index.hbs執行渲染并返回

數據源

silky在啟動的時候,會掃描.silky/development下的所有json文件作為模板渲染的數據源,如果工作環境為production,將會掃描./silky/production下的所有json文件。

文件名將被作為鍵值。例如在.silky/development下有global.json和index.json文件,那么,在模板中使用{{global.title}},將會取到global.json文件中的title鍵值。page.index.foo將會讀取page.json文件中的index.foo鍵值。

數據源將會處于被監控狀態,當任何數據源發生變化,都將會引起瀏覽器的自動刷新。

silky變量

在模板中,silky是一個全局變量,提供silky的一些運行信息,如{{silky.env}}將會輸出工作環境是development或production,一般用于根據開發環境或工作環境輸出不同的html。

擴展的命令

partial/import

import命令兼容partial,但推薦使用import,因為更為直觀和常用。

示例:{{import "module/header" global.foo}}

引用子模塊,handlebars本來是使用{{> module/file}}的方式引用子模板,但是原生的命令并不支持傳遞參數,import命令可以傳遞參數。在示例命令中,將會傳遞global.foo給子模板。

import的模板路徑為相對于template下的絕對路徑,換句話說,如果你的子模板在/template/module/header,而模板文件在/template/authority/signin,import的引用路徑應為module/header記住,不管你的模板文件在什么位置,或者子模板嵌套引用,都需要使用絕對路徑。

注意,如果import指定了數據源,那么被import的子模板使用的數據源就是這個被指定的數據源,而非全局的數據源。例如{{import "module/header" page.index.header}},那么在module/header這個模板中,使用{{title}}將會讀取page.index.header.title`,了解這一點非常重要。

loop

示例:{{loop "module/cell" 10}}

loop命令用于循環輸出某個子模塊,第一個參數是模塊的絕對路徑,第二個參數是將要重復的次數據,但第二個參數也可以是從數據源中取得的數組。

if

示例:{{#if silky.env "development"}}當前環境是開發環境{{/if}} 條件語句,注意中間并沒有等號,這和我們平時用的不一樣。

css/less

silky支持less和css,關于less,請參考less的官方網站。

不同的是,silky下,less需要使用絕對路徑進行引用,如果你要引用module下的header.less,應該是使用@import "module/header";,而不是@import "../module/header";

路由

當你訪問http://localhost:14422/css/main.css,將會和模板路由同樣的原則,css優先于less,所以,不要試圖在同一個文件下存在文件名相同而擴展名不同的文件。如main.css和main.less,這樣將永遠無法響應到main.less

js/coffee

silky同時支持js和coffee,如果是coffee,在被請求的時候,將會編譯為js并返回。關于coffeescript,參考coffeescript的官方網站。

路由

當你訪問http://localhost:14422/js/main.js,將會和模板路由同樣的原則,js優先于coffee,所以,不要試圖在同一個文件下存在文件名相同而擴展名不同的文件。如main.js和main.coffee,這樣將永遠無法響應到main.coffee

基于內部原因,silky會替換掉路徑中含有.souce的字符,如http://localhost:14422/js/main.souce.js,返回的將會是http://localhost:14422/js/main.js

配置文件

配置文件位置在.silky/config.js,config.js是一個node.js文件。

port

指定端口,默認為14422

proxy

指定代理,一般用于跨域請求,silky集成的代理為json-proxy。通常情況下,只需要配置proxy.forward鍵就可以了。關于proxy的配置,請參考json-proxy的相關設置

build

用于配置build相關

output

指定輸出目錄,默認為./build

compress

指定是否壓縮,可指定的項包括:jscsshtmlinternal。注意internal是指定是否壓縮內聯script

copy

將要復制的目錄,通常有些目錄在產品環境下是不需要的,如一些demo圖片文件等

compile

編譯處理的目錄,在這里你可以設置build目標的目錄和忽略文件。例如,你希望將template目錄中的文件都build到根目錄下,則配置template.target./即可。ignore可以配置忽略哪些文件,template和css默認情況下為/module$/i,這將忽略名為module的文件夾

watch

配置將要監控哪些目錄下文件的改動,key即是目錄名,value是一個正則表達式,用于監控時匹配文件名。如果文件處于被監控中,當文件發生改變,將會引發瀏覽器中網頁的自動刷新。

Silky項目的文件組織

一個典型的Silky的結構如下:

|____.silky
| |____config.js
| |____development
| | |____global.json
| | |____global.less
| |____production
| | |____global.json
| | |____global.less
|____css
| |____main.less
| |____module
| | |____global.less
| |____normalize.css
|____images
|____js
| |____main.coffee
| |____thorax.js
|____template
| |____index.hbs
| |____module
| | |____footer.hbs
| | |____head.hbs
| | |____header.hbs

template

template目錄用于存放模板文件.hbs.html文件

css

css目錄用于存放.css.less文件

js

js目錄用于存放.js.coffee文件

.silky

.silky文件夾是silky的配置文件

項目主頁:http://www.baiduhome.net/lib/view/home/1411995364468

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!