上次寫了一個單獨一個檔案轉換為 data uri ,但在網站圖片尚未完全確定前這樣做事相當花費時間而且難以驗證檔案,所以再寫了一個 script 夾帶再出 build 流程中,方便的把圖片轉換為 data uri,當然 data uri 沒辦法適用所有的圖片,所以 script 中的 minSize 就是設定要轉換的圖片尺寸上限,單位為 pixel (大約計算出檔案大小),由於 html parse 重寫一次比較麻煩,所以使用了 cheerio 方便做 dom selector
由於許久沒寫 coffeeScript 決定用這 script 快速複習一下
相關連結
cheerio
nodejs image to Data uri
coffeeScript
image in css/html from url to uri
by Isken Huang - 9/09/2013 0 回應 - Javascript, Nodejs, Web
html script tags combined a js flie
最近每天都在做網頁效能優化,過去 javascript 可能因為很多 plugin 增加了很多 request 次數,或許可以使用 parallel 方式來加速,但始終沒解決浪費頻寬問題,使用 uglify 可以方變得解決需要壓多個 javascript ,但如果網站有一堆頁面都要這樣做一次,每次出 build 都要做一次是非常累人的事,因此寫了一個 script 來處理這個累人的問題。之後再找時間來處理些 error handle 以及,包成一個完整的 module
使用方法很簡單,下載檔案後要先設定好幾個重要的路徑
// javascript 資料夾路徑(相對路徑,相對於 uglify.js這檔案)設定完後只要下簡單的一行,就會進行兩件事 1. 把 html files 符合 "jsTagRegex" 這規則的 javascript 拿掉,取代為 <script src="XXXXX.min.js"></scrips> 2. 把 html 頁面中會需要用到的 javascript 壓成一支
JSRootUrl = __dirname + '/js/',
// html 資料夾路徑(相對路徑,相對於 uglify.js這檔案)
viewRoot = __dirname+ '/../application/views',
// 要略過的檔案名稱( html 資料夾)
skipFiles = ['.DS_Store', 'mail'],
// 壓縮完的檔案名稱後需要加上哪些文字,例如 main.min.js
suffix = '.min',
// 要壓縮哪些 scripts 設定( html 資料夾的 tag 名稱)
jsTagRegex = /\\<\/script\>/ig,
node uglify
相關連結
uglify
by Isken Huang - 9/05/2013 0 回應 - Javascript, Nodejs, Web
Quick launch nodejs expressjs web server
Expressjs 是一套 nodejs 上非常熱門的 web framework ,提供了相當彈性的功能,豐富的社群支持,是個很棒的 nodejs web framework 選擇,但身為前端工程師常常需求只是 "想要建立一個單純的 web server ",這需求達成方法有很多, apache, nginx 等都可以達到想要的功能,但如果是同時間需要多開幾台 servser 模擬,或好多個專案在不同資料夾中透過 apache, nginx 設定可能不是這麼快速(好吧...應該是我手殘)
立馬下載
使用方法
Step1. 安裝 nodejs & npm (download: http://nodejs.org/download/)
Step2. 安裝 expressjs (http://expressjs.com/) 在 global
$ sudo npm install express -g
Step3. 立馬開始使用
$ node app
預設的 PORT 為 3000,根目錄路徑為 與 app.js 相同路徑,如果還要再多開一個呢?請多開一個 terminal ,然後再下一次" $ node app ",這時候應該會遇到錯誤訊息告訴你 server 已經開啟,所以提供了另一個功能,可以自訂 PORT 以及根目錄
開啟在 web server 在 8000 PORT 根目錄為 web1
$ node app 8000 ../web1
開啟在 web server 在 9000 PORT 根目錄為 web2
$ node app ../web2 9000
* PORT, 根目錄兩個參數前後順序可以自訂
相關連結
Expressjs
apache
nginx
by Isken Huang - 9/04/2013 0 回應 - Javascript, Nodejs, Web
nodejs image to Data uri
前端為了減少 request 數量可以說是用盡各種方式, Javascript 壓成一支, css 壓成一支,圖片用 image sprite 壓成一張大圖,用盡各種方式把 request 數量減少,讓使用者體驗變得更好。
對於圖片來說 image sprite 是一種很好的方法,但是總會問一下自已「能不能更好?」於是找到了 Data uri 的方式,把圖片轉換為字串,跟著 html, css 一起載入, HTML 的img tag 的 src ,或者 CSS 的 backbround-image 一並載入。產生 Data uri 有些線上工具可以使用,但基於懶人精神 懶得按滑鼠、懶得選取檔案、懶得連上網路(那你做 web 幹嘛!?) 所以就寫了一個簡單的工具,目的當然很簡單,不用上網( local 可以解決),不用使用滑鼠( command line 就可以執行),產生完自動幫我複製到剪貼簿(立馬可使用 ctrl + v)
根據 Caniuse 表示 Data uri 在 IE8+, firefox 2.0+, chrome 4.0+, safari 3.1+, opera 9.0+, 以及所有的 mobile browser 都有支援,所以網站如果是支援 IE8 以上的網頁應該是可以安心服用。
Gist - https://gist.github.com/IskenHuang/6434813
使用方法很簡單在下載後的檔案同目錄下輸入
node img YOUR_IMAGE_PATH
馬上就產出 data uri 並且複製到剪貼簿中,立馬享有 ctrl + v 快速產出的快感( Mac only ),產生出來的字串包含了 data:image/png;base64, 所以直接貼入 HTML img 的 src="PASTE_HERE" ,或 CSS background-image 的 url( PASTE_HERE ) 中。
source
相關連結
Caniuse - datauri
Gist - https://gist.github.com/IskenHuang/6434813
by Isken Huang - 9/04/2013 0 回應 - Javascript, Nodejs, Web
SUNYORY烏龍茶 + CC Lemon
由於看到 把檸檬水倒入烏龍茶後我震驚了! 覺得蠻神奇的,基於實驗精神決定自己來嘗試看看
首先確認是「SUNYORY烏龍茶」以及「CC Lemon」,雖然CC Lemon不是與影片中相同瓶子,但同一家的產品應該是可以確認的。

先將烏龍茶打開並倒入杯中

最後就是見證奇蹟的時刻
真的很神奇,因為一點反應都沒有!?兩種混合後喝起來有種「檸檬烏龍茶」的感覺(廢話),說實在不太對味,還是一句老話「認真就輸了」
題外話,為了做這實驗才了解到瓶裝飲料原來這麼貴,我是在住家附近的全家所購買,SUNYORY烏龍茶要價「39」CC Lemon要價「29」新台幣,而且購買後才發現原來兩家都同為SUNYORY公司旗下產品,不禁讓人有種炒作的感覺。
相關連結
SUNYORY烏龍茶
CC Lemon