本文由作者鄭海波授權網易雲社群發布。
本文title有點大哈,相較於目前國內正流行起來的前端後移的前後端分離方案,本文介紹是一種「低碳」的版本,所以不要糾結於這個title的正確性哈。
簡而言之,puer是乙個可以實時編輯重新整理的前端伺服器。特性一覽:
可以發現這裡功能並不多,但羅列的基本都是實際前端開發中會涉及到的。可能敏銳的朋友會點出,同類的browser-sync提供了更強的操作同步的功能。這點其實主要不想去盲目攀比功能(實現其實並不難,因為基礎的注入指令碼已經做了,剩下的都只是功能堆砌),目前的出發點都是作者實際的需求(好吧,其實是懶)。還有就是,其實puer誕生比它要早一年多。
確保你安裝了nodejs(現在還有沒nodejs環境的前端? 拖出去餵狗吧)
使用npm全域性安裝puer
命令
npm install puer -g輸入
puer -h
可以檢視help
usage: puer [options...]options:強烈中文即時感的英語相信和大家交流起來不會很困難。-p,--port server's listen port, 8000 default
-f,--filetype filetype to watch(split with '|'), defualt 'js|css|html|xhtml'
-d,--dir your customer working dir. default current dir
-i,--inspect start weinre server and debug all puer page
-x,--exclude exclude file under watching(must be a regexp), default: ''
-a,--addon your addon's path
-t,--target proxy url
--no-reload close auto-reload feature,(not recommended)
--no-launch close the auto launch feature
-h,--help help list
使用
90%的使用場景下
cd /path/to/workspace ↵puer會預設為你開啟http://localhost:8000頁面(埠可以puer ↵
-p 8001
引數進行控制),並貼心的幫你列出了所有你本地可用的ip以及當前的位址***,方便手機訪問。
編輯當前路徑下的檔案,會實時更新頁面(無論你在多少臺電腦開啟多少個頁面)。
關於如何命令列下快速到達工作目錄,作者推薦兩個工具
z: 必裝shell工具,快速進入最常用目錄
sublime-terminal: 直接進入當前檔案或工程的所在路徑
在開發靜態頁面時,這個簡單的功能意義非凡,特別是雙屏的時候,可以完全解放你的f5鍵。關鍵是:
儲存後看到瀏覽器同步重新整理,有種莫名的愉悅感湧上心頭有木有?作者簡單將這種現象歸結於之前看到的一篇文章:【人無法在兩種思維模式下進行高效切換】,猜想這可能這和cpu的程序切換是一樣一樣的。
假設你的靜態頁面開發到一定程度,需要與伺服器端互動了,而後台服務還完全無法聯調,這其實是屬於最簡單的前後端分離開發的場景。一般而言, 作者會通過以下幾種方案。
層級1: 通過**解耦,直接在前端mock資料
這種方式影響較大,而且無論你解耦的如何,都會增加最終上真實環境的切換成本。
層級2: 通過fiddler等除錯**工具mock資料
優點是到正式環境的切換成本小,但配置成本較大,也介面mock也有侷限性並基本上只能是靜態資料模擬。
層級3:利用puer**的解決這個問題
puer提供了叫外掛程式(addon)的功能,整合了express的route.js來達到最簡的路由配置,可以提供基於真實http請求與相應的動態的mock資料。
puer -a route.jsroute.js 這麼寫
}%它其實就是一段nodejs程式,輸出是一配置物件,key的空格前代表的是請求method,後半部分是請求路徑,而value代表**函式和express的路由中介軟體是一致的,傳入的request和response物件,相較於原生的提供了一些額外方法,不了解的也可以戳這裡
【戳這裡看演示gif】
通過演示其實你可以發現,編輯route.js後,這份配置指令碼是動態更新的,免去了你一次次重啟伺服器的工作。
開發進行到一定階段,一般後端服務就逐步進入了,靜態頁面的開發不再適用。到這個時候,我們可以使用--target path
切換到**模式將puer作為乙個**伺服器使用。
比如本地已經存在乙個localhost:8020的服務,你要在其上實現自動重新整理的功能,請使用-t 或 --target
。
puer -t http://localhost:8020【請戳演示gif】需要注意的是,高階2提到的addon是可以和這個模式配合使用,這使得我們在後台服務青黃不接的時候率先開發完前端功能,深藏功與名。
puer -t http://localhost:8020 -a route.js【請戳target配合addon的演示】weinre是目前最常用的遠端除錯工具,它雖然幾乎無法除錯js,但是由於和平台、瀏覽器無關的特性,使得這個低效的工具一直流行至今,也有很多任務具整合了它,比如我之前提到的mihtool。
不過要使用weinre,你需要在每個除錯的頁面插入乙個記不住名字的指令碼,並開啟weinre服務,這都屬於重複性勞動。puer通過-i
flag來開啟 weinre的內建整合,每乙個經過puer的頁面都會被自動注入指令碼。你可以在9001埠找到你的weinre服務,也可以通過puer的初始頁面進入
puer -i【請戳inspect的演示】這個功能其實並不常用了,它將puer作為express/connect伺服器的中介軟體來使用,先貼個**範例。
dir: "path/to/watch/folder",
ignored: /(\/|^)\..*|node_modules/ //ignored file}
server.listen(8001, function())
一般你在development
環境開啟它,而在product
環境關閉即可,需要注意的是它必須放在可能輸出html的中介軟體之前。
乙個簡單的puer
命令可以帶你在各個開發階段自由飛翔,還不趕緊試一下?
名字含義: puer意為普洱,除了愛喝和夠短沒有任何含義,懶得取名罷了。
寫puer的原動力是作者對f5網頁免重新整理工具欲求不滿(況且它如此簡單的功能還需要開啟乙個桌面gui完全不能忍是麼),所以功能抉擇上帶有一些主觀性。如果你試用後,覺得它有價值並有改進餘地,可以在issues下留下你的灼見(必須先來一發star)。
碰到問題先puer -h
看看有沒有你的答案
puer(推薦): 「低碳」的前端伺服器工具
weinre(推薦): 常用遠端除錯工具
z(推薦): shell工具,快速跳轉到最常用的目錄。
browser-sync: 包含puer的部分功能,同時提供多頁面的操作同步(跳轉、表單)
mihtool:mihtool是前端工程師在ios裝置上除錯和優化頁面的得力助手(原slogan)
sublime-terminal: 快速開啟sublime工程或當前檔案目錄
f5網頁免重新整理工具:基於air的免重新整理gui工具,習慣windows的gui工具的童鞋可以試用下。
Node之簡單的前後端互動 例項講解
node是前端必學的一門技能,我們都知道node是用的js做後端,在學習node之前我們有必要明白node是如何實現前後端互動的。這裡寫了乙個簡單的通過原生ajax與node實現的乙個互動,剛剛學node的朋友可以看一看。一方面理解服務端與客戶端是如何互動的,一方面更熟悉node開發。先貼 有興趣的...
超簡單好用的螢幕錄影工具
viewletcam 是由 qarbon 公司推出的使用極其容易,內容又豐富精彩的多 製作工具,使用它可以快速的錄製 編輯與修改由計算機螢幕上錄製下來的完整動態影象,再製作出不可抗拒的互動 viewlet 內容來吸引住你的顧客 合作夥伴以及內部員工。viewletcam 對螢幕中完整動畫的錄製功能提...
前後端聯調的一般步驟和Nginx簡單配置
1 建立前端工程 這裡建立的是vue cli專案 2 編寫後端登入業務 3 替換頁面元素為自己需要的,比如圖示,標題之類的 4 編寫前端頁面vue元件 5 編寫跳轉到元件的路由 router index.js 6 如果需要從後端獲取資料,使用axios非同步通訊,預設框架中使用了request封裝請...