描述了輸出元素。這是一個簡單的JSON檔,描述每種語言的縮寫(是的,你可以為不同的句法定義縮寫,比如HTML、XSL、CSS等)。通用的語言縮寫定義看起來就像這樣:
片
段就是隨意的代碼碎片,而縮寫是標籤定義。通過片段,你可以寫出你想要的任何代碼,它也會照你寫的格式輸出;但是你必須手動的格式化它(使用\n
和\t實現換行和縮進)
並將${child}變數放到你想要輸出子元素的地方,就像這樣:cc:ie6>style。如果你不使用${child}變數,子元素將會輸出於
代碼片段的
對於片段和縮寫,你可以添加一個管道符號,它告訴Zen Coding當縮寫被展開的時候游標會被定位到哪裡。預設的,Zen Coding 將游標放在空屬性的引號中間以及開始和關閉標籤的中間。
那
麼,這裡解釋一下當你寫了一個縮寫並召喚“展開縮寫”行動時發生的事情。首先,它將一個完整的縮寫分開為獨立的元素:這樣div>a
會被分成div 和a
元素,當然也會維持他們的關係。然後,每個元素,解析器先在代碼片段內而後在縮寫中尋找定義。如果它找不到,將會使用元素的名字作為新的標籤,並為其添加
縮寫中定義的id和class。比如,如果你寫mytag#example,解析器在片段或縮寫中找不到mytag定義,它就會輸出
標籤並將其移動到其它地方或者刪除它。或者有可能你在尋找一個關閉標籤並想知道它屬於那個開始標籤。
不
幸的是,很多現代開發工具在該功能方面有所欠缺。那麼我就決定寫一個我自己的標籤對匹配器作為Zen
Coding的一部分。不過它依然在beta階段並尚存一些問題,但它可以工作的很不錯並很快。不是流覽整個文檔(像通常的那種HTML標籤對匹配器的做
法),它從游標的當前位置開始尋找相關的標籤。這使得它非常快並且
上下文無關:它甚至可以用於這段
JavaScript代碼片段:
1
2
3
4
5
6
7 | var table = '
'; for (var i = 0; i < 3; i++) {
table += '
'; for (var j = 0; j < 5; j++) {
table += '
';
}
table += '
';
}
table += '
'; |
使用縮寫包裹
這真的是一個很酷的特性,它將縮寫和標籤對匹配器的功能合併到一起了。你有多少才發現你需要
添加一個包裹元素以修正一個流覽器bug?或者你需要添加一個裝飾,比如一個背景圖片或者邊框到一個塊級內容?你必須寫開始標籤,臨時打斷你的代碼,找到相關的點然後關閉標籤。這就是“使用縮寫包裹”能幫助你的地方。
該功能相當簡單:它要求你輸入縮寫,然後執行適當的“展開縮寫”行動並將你期望的文本放到你縮寫的
最後一個元素裡面。如果你沒有選擇任何文本,它就會啟動標籤對匹配器並使用結果。它同樣能搞清楚你的游標的位置:標籤的內容裡面或者是開始和關閉標籤中間。依賴於它的位置,它會包裹標籤的內容或標籤本身。
縮寫包裹為包裹個別行引入了一個特定的縮寫句法。簡單跳轉到倍增操作符後面的數字,比如:ul#nav>li*>a。當Zen Coding 發現一個使用未定義的倍增數的時候,它會將它作為一個
重複元素:你的章節中有多少行,它就會輸出多少次,並將每行的內容放到重複元素的
最後一個子元素裡面。
如果你在這段文本外面包裹這段縮寫div#header>ul#navigation>li.item$*>a>span:
1
2
3
4
5 | About Us
Products
News
Blog
Contact Up |
你將會得到以下結果:
1
2
3
4
5
6
7
8
9 | <div id="header">
<ul id="navigation">
<li><a href=""><span>About Usspan>a>li>
<li><a href=""><span>Productsspan>a>li>
<li><a href=""><span>Newsspan>a>li>
<li><a href=""><span>Blogspan>a>li>
<li><a href=""><span>Contact Upspan>a>li>
ul>
div> |
你可以看到,Zen Coding是一個強大的文本處理工具。
快速鍵
- Ctrl+,
展開縮寫
- Ctrl+M
匹配對
- Ctrl+H
使用縮寫包括
- Shift+Ctrl+M
合併行
- Ctrl+Shift+?
上一個編輯點
- Ctrl+Shift+?
下一個編輯點
- Ctrl+Shift+?
定位匹配對
這些快速鍵是可以自訂的。
線上演示
你已經學到很多關於Zen Coding如何工作以及它是如何使你的編碼更容易了。現在為什麼不自己嘗試一下呢?因為Zen Coding是用純JavaScript開發並遷移到Python,它甚至可以用於流覽器內部,這令它成為引入到CMS的首選。
支援的編輯器
Zen
Coding並不依賴某個特定的編輯器。它是一個隻處理文本的出色的元件:它獲取文本、做一些處理並放回新的文本(或索引,用於標籤匹配)。Zen
Coding由JavaScript和Python編寫,所以它實際上可以運行於任何平臺。在Windows,你可以運行JavaScript版本,而
Mac和Linux 分支可以使用Python版。
如果讓你的編輯器支援Zen Coding,你需要寫一個特定的可以在你的編輯器和Zen Coding之間轉換資料的外掛程式。問題是一個編輯器可能不會完整的支持Zen Coding因為它本身的外掛程式系統。比如,
TextMate通過使用腳本輸出替換當前行很容的就支援了“展開縮寫”功能,但是它不能處理標籤對匹配因為沒有標準的方法請求TextMate來選擇內容。
完全支持
部分支援(只支援“展開縮寫”)
Aptana是我主要的開發環境,它使用一個JavaScript版本的Zen Coding。它也包含很多其它的我用於日常工作的工具,所以任何一個新的Zen Coding版本都將會首先對Aptana可用,然後部署到Python並相容其它的編輯器。
Coda和Espresso 外掛程式被傑出的
Text Editor Actions (TEA) 平臺支援,由
Ian Beck開發。原始的原始程式碼
在GitHub上,但我還是製作了
我自己的分支以整合Zen Coding的特性。
總結
很多嘗試過Zen Coding的人都說它改變了他們寫頁面的方式。當然還有很多事情要做,還有很多的編輯器需要被支援以及一些文檔要寫。請流覽
現在的文檔 以及
原始程式碼以尋找你的問題的答案。希望你喜歡Zen Coding!
附:Zen coding的具體用法
遺憾的是, 本文原作者並沒有說明zen coding的具體用法,神飛認為有必要做以下簡要的說明。這裡就以Aptana/Eclipse和Dreamweaver為例,其它編輯器平臺暫不描述,如有疑問可以在評論中與前端觀察的網友交流。
Aptana/Eclipse
由於Aptana本身就是基於Eclipse的,所以,Zen Coding也是支援Eclipse的,只是需要一個EclipseMonkey外掛程式的支援,Aptana已經封裝了這個外掛程式,所以如果你使用Aptana,下面的第一步可以跳過。
- 通過更新網站安裝EclipseMonkey: http://download.eclipse.org/technology/dash/update(如果你使用Aptana,可跳過這一步)
- 在你的當前工作去創建一個頂級的專案,給它命名,比如,就叫zencoding
- 在新創建的項目中創建scripts資料夾
- 解壓縮下載的ZIP外掛程式包到該資料夾。專案結構看起來就像這樣:
- 安裝之後,Aptana的功能表列中的“腳本(Script)”功能表中將會出現Zen coding相關子功能表
注意事項:
- Aptana版的官方外掛程式是基於MAC機的,如果你用的是Windows,需要手動更改快速鍵(在每個檔頭部的注釋片段中更改)
- 官方的檔編碼有點兒亂,修改官方js的時候,請注意編碼問題,修改不當會造成相關功能的丟失;
DreamWeaver
好
消息是,現在已經有了Zen coding for
DreamWeaver外掛程式,壞消息是,該外掛程式支援的功能很少,只支援展開縮寫功能。而且默認的快速鍵是無效的。只能在“命令”功能表中點擊操
作。另外,沒
有測試該外掛程式是不是只支援CS4版本。不過比較好的是,作者將本外掛程式的源碼也放出了,你可以自訂一個Dreamweaver的外掛程式。
文章來自前端
文章提供::
BAYSTARS DESIGN網頁設計公司