學習筆記 broswerify + watchify + beefy

broswerify

「Browserify lets you require('modules') in the browser by bundling up all of your dependencies.」javascript

Browserify 能夠讓你在瀏覽器中經過 require('modules') 的寫法加載依賴的模塊。html

瀏覽器自己不支持 require 和 define 的模塊化開發,可是 nodejs 支持。使用 broswerify,就能夠讓瀏覽器支持和 nodejs 同樣的開發方式。(這裏不討論 CMD 和 AMD)java

 

首先是安裝node

 
$npm install broswerify --save-dev

 

編寫一段 nodejs 腳本git

//main.js
var unique = require('uniq'); var data = [1, 2, 2, 3, 4, 5, 5, 5, 6]; console.log(unique(data));
uniq 是 nodejs 的一個模塊


在 nodejs 環境中安裝 uniq 模塊github

$npm install uniq --save-dev

 

如今能夠測試下這段腳本在 nodejs 下的效果npm

$node main.js
//[ 0, 1, 2, 3, 4, 5 ]

 

以後就能夠經過 broswerify 生成 budle.js:瀏覽器

$browserify main.js > bundle.js

 

 

在 html 中加載生成的 js 腳本,frontend

<script src="./bundle.js"></script>

就能在瀏覽器中運行剛纔的結果。模塊化

 

 

watchify

和 broswerify 組隊的自動對文件修改作出響應的工具

// 安裝
$npm install watchify --save-dev


// 監聽當前目錄文件狀態,代替執行了 broswerify main.js > bundle.js
$watchify main.js > bundle.js


// -d debug 模式,會生成 sourceMap
// =v 輸出日誌
$watchify main.js > bundle.js -d -v


// -o  --outfile
$ watchify browser.js -d -o static/bundle.js -v

// -o 也能夠執行語句
watchify main.js -o 'exorcist static/bundle.js.map > static/bundle.js' -d

  

Beefy

官方推薦的基於 broswerify 和 watchify 開發的快捷啓動服務的插件。

// 安裝
$npm install beefy

// 在127.0.0.1:9966啓動一個 node 的服務,當經過這個服務訪問 main.js 這個文件時,自動 bundle 並加載,參數-l 表示啓用 liveloader
$beefy main.js -l
//> browserfy@1.0.0 start /your/path
//> beefy main.js -l
//
//beefy (v2.1.5) is listening on http://127.0.0.1:9966

  

實際使用中發現一個 bug,保存時自動加載的頁面的 Js常常是上一次保存的內容。

看了源碼後發現原來刷新頁面和啓動 broswerify 用的是兩個文件監聽,有個不太完美的解決方法就是:

修改文件 node_modules/beefy/lib/frontend-js/live-reload.js

window.location.reload();

setTimeout(function(){window.location.reload()}, 200);

相關文章
相關標籤/搜索