2013年3月7日 星期四

PHP - AssetToolKit

https://github.com/c9s/php-AssetToolkit 



這是一套筆者最近開發的 asset framework。


這是個獨立的 asset 管理工具,不需要安裝或使用 symfony 或 zend 之類的 fullstack web framework 就可以直接使用,可以很容易的嵌入在你自己開發的 application,也可以直接嵌入在你 single page php application 裡。

如果只想要靜態檔案,不需要動態呼叫,也可以利用 command-line 的 compile 命令,先把所有檔案編譯起來。

這有點類似 requirejs, 但 requirejs 沒辦法跟 php 模組整合, 這個工具是可以讓你的 php 模組都可以有自己的 assets,然後可以把不同模組底下的 assets 統合編譯壓縮起來成不同的檔案,來加速 client 端下載靜態檔案的速度。

以往,要在 PHP Application 內組織好 asset files 如 js, coffee-script 實在是件難事,因為每個框架的架構都不相同,要用 requirejs 也會有存取路徑的問題需要處理。

使用 AssetToolkit 的話,你可以將 assets 至於任何地方,只需要透過單一集中式的設定檔,就可以動態將所需要的 asset 載入。

舉例來說,我有一個 web application MyBlog:

apps/MyBlog


底下可以放置一些 assets,分別是:

apps/MyBlog/assets/jquery
apps/MyBlog/assets/jquery-ui

現在我另外寫了 plugin:


plugins/Post/assets/post-assets # 專為 Post 寫的 js 跟 css
plugins/News/assets/news-asset-a
plugins/News/assets/news-asset-b

各位知道,既然設計成 plugin ,那就是可以抽插代換的插件,透過 AssetToolkit 的話,各插件的 asset 載入,可以直接寫在各 plugin 的初始化區塊,所以若今天把 News plugin 或 Product plugin 拿掉,也都不會影響到整個應用程式的 assets 載入。

此外,AssetToolkit 做的不只是載入,還可以幫你透過 CoffeeScript filter, SASS filter, SCSS filter 等等,自動幫你編譯轉換並且壓縮。