多端瀏覽器同步調(diào)試工具:browserSync與webpack的結(jié)合

天氣越來(lái)越冷,我剛買(mǎi)的毛線手套在今中午騎ofo單車(chē)時(shí)候都快有點(diǎn)頂不住了,問(wèn)我為什么中午出去騎單車(chē),因?yàn)槲液臀腋绺缂s了一頓寬板凳火鍋。很久沒(méi)吃火鍋了,果斷騎車(chē)20分鐘去約飯,回來(lái)時(shí)候心滿(mǎn)意足,邊騎車(chē)邊想,不如做一套針對(duì)ofo共享單車(chē)的共享車(chē)鎖密碼應(yīng)用,每次使用完單車(chē)后順手上傳車(chē)牌號(hào)和密碼,反正每輛車(chē)都是固定密碼的,以后大家用車(chē)就可以先通過(guò)車(chē)牌查詢(xún)有無(wú)對(duì)應(yīng)的密碼共享出來(lái),這才是真正的共享經(jīng)濟(jì)嘛。哈哈,不過(guò)這種事也就是想想罷了,就像當(dāng)初12306網(wǎng)站的登錄注冊(cè)都存在著sql注入漏洞,但是也沒(méi)有人敢去搞一搞,有些事還是想想就夠了。酒足飯飽,回到工位,還是趁熱乎把昨天說(shuō)的盡快落實(shí)一下吧...

1. 先說(shuō)說(shuō)使用背景

說(shuō)起前端開(kāi)發(fā),不得不說(shuō)現(xiàn)在如火如荼的移動(dòng)端H5,從朋友圈廣泛傳播的各種酷炫活動(dòng)頁(yè)到現(xiàn)在各大App應(yīng)用中內(nèi)嵌的移動(dòng)端H5網(wǎng)頁(yè),都屬于移動(dòng)端網(wǎng)頁(yè)的開(kāi)發(fā)。但是作為一名前端開(kāi)發(fā)者,實(shí)際在開(kāi)發(fā)移動(dòng)端頁(yè)面的時(shí)候,真機(jī)調(diào)試是一個(gè)很頭疼的問(wèn)題,因?yàn)橐苿?dòng)端頁(yè)面不像PC端頁(yè)面那樣能直接用電腦瀏覽器雙擊打開(kāi) *.html 文件來(lái)瀏覽調(diào)試,最最笨的方法就是將正在開(kāi)發(fā)中的文件通過(guò)數(shù)據(jù)線從電腦拷貝到手機(jī),然后手機(jī)打開(kāi)html文件預(yù)覽。當(dāng)然這種非人類(lèi)的辦法效率實(shí)在是極其低下也很難以啟齒...所以我們要想一個(gè)辦法,能做到十分省時(shí)省力的就能在手機(jī)上預(yù)覽甚至調(diào)試到我們正在開(kāi)發(fā)的移動(dòng)端頁(yè)面。
記得去年畢業(yè)進(jìn)入我的上家公司,當(dāng)時(shí)的我一問(wèn)三不知,我的導(dǎo)師組長(zhǎng)引領(lǐng)了我一年的成長(zhǎng)之路,這一年多我學(xué)會(huì)了很多,很感激這一年來(lái)公司給我提供的成長(zhǎng)環(huán)境,和那一堆給予我?guī)椭耐隆Q詺w正傳,剛來(lái)公司首先要做的就是熟悉公司的開(kāi)發(fā)模式,經(jīng)過(guò)組長(zhǎng)給我的講解,我明白了我們的大概開(kāi)發(fā)流程,我們的工程框架用的是fis || grunt,我們?cè)诒镜亻_(kāi)發(fā)并編譯好代碼文件,同時(shí)會(huì)運(yùn)行一個(gè)腳本,在每次保存本地代碼時(shí),腳本會(huì)把編譯好的代碼文件push到我們每個(gè)人配置好的開(kāi)發(fā)機(jī)服務(wù)器上,同時(shí)對(duì)應(yīng)一個(gè)個(gè)人測(cè)試域的url,在內(nèi)網(wǎng)里訪問(wèn)這個(gè)url就可以訪問(wèn)我們正在開(kāi)發(fā)的頁(yè)面,這樣就實(shí)現(xiàn)了邊開(kāi)發(fā),手機(jī)通過(guò)一個(gè)url就可以實(shí)時(shí)邊訪問(wèn)頁(yè)面了。但是這種很大工程化流程在我們自己私下想搭環(huán)境時(shí)候就不好搞了,最起碼我搞不來(lái)。
因?yàn)楫?dāng)時(shí)我們的是用git進(jìn)行代碼管理的,所以我又想可以通過(guò)git來(lái)同步我的代碼,生成一個(gè)url來(lái)訪問(wèn),就是每次還得git push上傳代碼,也是有點(diǎn)繁瑣。
后來(lái)現(xiàn)在的同事給我推薦了browserSync,一頭霧水的我查了一下,不查不知道,一查驚呆了,世間還有這等神器!官網(wǎng)首頁(yè)的幾句話(huà)就把我深深吸引住了,如獲至寶,于是研究了一下,起初不依賴(lài)什么框架就是在外面單純的跑腳本,沒(méi)問(wèn)題,很強(qiáng)大,后來(lái)又把它集成到了gulp里,但是后來(lái)我決定放棄剛用了一次的gulp,轉(zhuǎn)投webpack,幸運(yùn)的是,webpack也很強(qiáng)大地支持browserSync,喜大普奔。
好了,廢話(huà)了這么多,其實(shí)在webpack中使用browserSync也很簡(jiǎn)單,就是在上篇文章《webpack從安裝到起飛》中提到的webpack.config.js中配置一下就好了,那么我們先從頭說(shuō)一下browserSync是個(gè)什么東東。

2. 初識(shí)browserSync

正如標(biāo)題所說(shuō),它是一個(gè)省時(shí)的瀏覽器同步測(cè)試工具,借用一下官方的介紹:

Browsersync能讓瀏覽器實(shí)時(shí)、快速響應(yīng)您的文件更改(html、js、css、sass、less等)并自動(dòng)刷新頁(yè)面。更重要的是** Browsersync可以同時(shí)在PC、平板、手機(jī)等設(shè)備下進(jìn)項(xiàng)調(diào)試**。您可以想象一下:“假設(shè)您的桌子上有pc、ipad、iphone、android等設(shè)備,同時(shí)打開(kāi)了您需要調(diào)試的頁(yè)面,當(dāng)您使用browsersync后,您的任何一次代碼保存,以上的設(shè)備都會(huì)同時(shí)顯示您的改動(dòng)”。無(wú)論您是前端還是后端工程師,使用它將提高您30%的工作效率。


Browsersync

有了它,您不用在多個(gè)瀏覽器、多個(gè)設(shè)備間來(lái)回切換,頻繁的刷新頁(yè)面。更神奇的是您在一個(gè)瀏覽器中滾動(dòng)頁(yè)面、點(diǎn)擊等行為也會(huì)同步到其他瀏覽器和設(shè)備中,這一切還可以通過(guò)可視化界面來(lái)控制。


Browsersync

看到這里,我們就知道了,是它,是它,就是它,它就是我一直在尋找的最優(yōu)解決方案——Browsersync。

3. Browsersync的基本使用

對(duì)于Browsersync的用法,我不在用自己的話(huà)描述了,官方的文檔說(shuō)的很詳細(xì)很好,這里就直接引用了:

  1. 安裝 Node.js
    BrowserSync是基于Node.js的, 是一個(gè)Node模塊, 如果您想要快速使用它,也許您需要先安裝一下Node.js 安裝適用于Mac OS,Windows和Linux
  1. 安裝 BrowserSync
    您可以選擇從Node.js的包管理(NPM)庫(kù)中 安裝BrowserSync。打開(kāi)一個(gè)終端窗口,運(yùn)行以下命令:
    npm install -g browser-sync
    您告訴包管理器下載BrowserSync文件,并在全局下安裝它們,您可以在所有項(xiàng)目(任何目錄)中使用。
    當(dāng)然您也可以結(jié)合gulpjs或gruntjs構(gòu)建工具來(lái)使用,在您需要構(gòu)建的項(xiàng)目里運(yùn)行下面的命令:
    npm install --save-dev browser-sync
  2. 啟動(dòng) BrowserSync
    一個(gè)基本用途是,如果您只希望在對(duì)某個(gè)css
    文件進(jìn)行修改后會(huì)同步到瀏覽器里。那么您只需要運(yùn)行命令行工具,進(jìn)入到該項(xiàng)目(目錄)下,并運(yùn)行相應(yīng)的命令:
    靜態(tài)網(wǎng)站
    如果您想要監(jiān)聽(tīng).css
    文件, 您需要使用服務(wù)器模式。 BrowserSync 將啟動(dòng)一個(gè)小型服務(wù)器,并提供一個(gè)URL來(lái)查看您的網(wǎng)站。
    // --files 路徑是相對(duì)于運(yùn)行該命令的項(xiàng)目(目錄) browser-sync start --server --files "css/\.css"
    如果您需要監(jiān)聽(tīng)多個(gè)類(lèi)型的文件,您只需要用逗號(hào)隔開(kāi)。例如我們?cè)偌尤胍粋€(gè).html
    文件
    // --files 路徑是相對(duì)于運(yùn)行該命令的項(xiàng)目(目錄) browser-sync start --server --files "css/\
    .css, \.html"http:// 如果你的文件層級(jí)比較深,您可以考慮使用 \\(表示任意目錄)匹配,任意目錄下任意.css 或 .html文件。 browser-sync start --server --files "\\/\.css, \\/\.html"
    我們做了一個(gè)靜態(tài)例子的示范,您可以下載示例包,文件您可以解壓任何盤(pán)符的任何目錄下,不能是中文路徑。打開(kāi)您的命令行工具,進(jìn)入到BrowsersyncExample目錄下,運(yùn)行以下其中一條命令。Browsersync將創(chuàng)建一個(gè)本地服務(wù)器并自動(dòng)打開(kāi)你的瀏覽器后訪問(wèn)http://localhost:3000地址,這一切都會(huì)在命令行工具里顯示。你也可以查看Browsersync靜態(tài)示例視頻
    // 監(jiān)聽(tīng)css文件 browser-sync start --server --files "css/\
    .css"http:// 監(jiān)聽(tīng)css和html文件 browser-sync start --server --files "css/\.css, \.html"
    動(dòng)態(tài)網(wǎng)站
    如果您已經(jīng)有其他本地服務(wù)器環(huán)境PHP或類(lèi)似的,您需要使用代理模式。 BrowserSync將通過(guò)代理URL(localhost:3000)來(lái)查看您的網(wǎng)站。
    // 主機(jī)名可以是ip或域名browser-sync start --proxy "主機(jī)名" "css/\.css"
    在本地創(chuàng)建了一個(gè)PHP服務(wù)器環(huán)境,并通過(guò)綁定Browsersync.cn來(lái)訪問(wèn)本地服務(wù)器,使用以下命令方式,Browsersync將提供一個(gè)新的地址localhost:3000來(lái)訪問(wèn)Browsersync.cn,并監(jiān)聽(tīng)其css目錄下的所有css文件。
    browser-sync start --proxy "Browsersync.cn" "css/\
    .css"
    一點(diǎn)建議
    我們建議您結(jié)合gulp或grunt來(lái)使用,我們這里有詳細(xì)說(shuō)明Gulp文檔Grunt文檔。如果您還沒(méi)有使用gulp或grunt,那么可以通過(guò)以上方式創(chuàng)建Browsersync

到此為止,我們基本可以脫離或者依賴(lài)gulp||grunt來(lái)使用browsersync了,比如在gulp中,我們?cè)趃ulpfiles.js中配置好了browsersync,執(zhí)行g(shù)ulp watch,就會(huì)直接調(diào)起browsersync服務(wù),我們?cè)诿钚锌梢钥吹絇C和移動(dòng)端對(duì)應(yīng)的url訪問(wèn)地址,值得注意的是,browsersync會(huì)默認(rèn)尋找根目錄下的index.html文件,有則執(zhí)行,無(wú)則報(bào)錯(cuò),如果我們想訪問(wèn)目錄下的其他文件,只需要在url后面加上相應(yīng)的路徑地址即可。
比如:http://localhost:3000/app/index.html
那么我們?nèi)绾卧趙ebpack中使用browserSync呢,官方文檔只給了gulp和grunt的集成方式,接下來(lái)看看browsersync在webpack中怎么配置。

4. webpack中的browsersync

還是找到我們上一個(gè)文件項(xiàng)目,打開(kāi)webpack.config.js備用。

依然打開(kāi)命令行終端,進(jìn)入項(xiàng)目根目錄,執(zhí)行
npm install browser-sync-webpack-plugin --save-dev 來(lái)安裝browsersync插件
安裝完畢,package.json中也顯示了安裝完畢后的依賴(lài)項(xiàng):
"extract-text-webpack-plugin": "^1.0.1",

接下來(lái)就是配置webpack.config.js了,
首先引入插件:var BrowserSyncPlugin = require('browser-sync-webpack-plugin');
然后再 plugins 配置項(xiàng)中配置:

new BrowserSyncPlugin({
        host: 'localhost',
        port: 3000,
        files: '',
        server: {
            //指定服務(wù)器啟動(dòng)根目錄
            baseDir: './'
        }
})

基本這么一配置,就ok了,似不似很簡(jiǎn)單,似不似很開(kāi)熏...
然后我們直接 webpack -w 就發(fā)現(xiàn)瀏覽器自動(dòng)打開(kāi)了,默認(rèn)訪問(wèn)了http://localhost:3000/
我們根據(jù)要訪問(wèn)的文件路徑,補(bǔ)充好url后續(xù),就可以開(kāi)心的開(kāi)發(fā)了,你會(huì)發(fā)現(xiàn)每次一保存代碼,瀏覽器就自動(dòng)刷新,不管是PC端還是移動(dòng)端,而且在一端滾動(dòng)頁(yè)面,另一端也會(huì)同步滾動(dòng),感覺(jué)屌爆了。
好了,這么神奇的東西就這樣為我們所用了。開(kāi)心。

5. 最后

這次編輯文章用的 markDown語(yǔ)法,簡(jiǎn)直比昨天用的富文本不能再好了,程序員寫(xiě)文檔神器,雖然之前我組長(zhǎng)就讓我寫(xiě),但是我懶啊,沒(méi)寫(xiě),現(xiàn)在還是用到了,所以說(shuō)要學(xué)習(xí)的地方還是很多啊小伙子。
今天過(guò)得好快,下一個(gè)項(xiàng)目也要來(lái)了,坐等...
886我要準(zhǔn)備下班了,今晚還要去健身房差點(diǎn)忘了…
對(duì)了,接下來(lái)會(huì)記錄一下webpack+vue的組件模塊化開(kāi)發(fā)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,673評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,610評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,939評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,668評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 56,004評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評(píng)論 3 449
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 43,173評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,705評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,426評(píng)論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,656評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,833評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,247評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,580評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,371評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,621評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容

  • 原文標(biāo)題:Gulp for Beginners作者: Zell Liew翻譯:治電小白菜原文地址:https://...
    ZZES_ZCDC閱讀 1,603評(píng)論 6 18
  • 參照Gulp for Beginners來(lái)學(xué)習(xí)Gulp基本內(nèi)容。以下為學(xué)習(xí)記錄筆記。 安裝Gulp 首先需要安裝N...
    JenniferYe閱讀 2,558評(píng)論 1 17
  • 安裝Gulp首先需要安裝Node.js,并在控制臺(tái)輸入$ npm install gulp -gMac端需要寫(xiě)成$...
    LaBaby_閱讀 938評(píng)論 0 1
  • 在現(xiàn)在的前端開(kāi)發(fā)中,前后端分離、模塊化開(kāi)發(fā)、版本控制、文件合并與壓縮、mock數(shù)據(jù)等等一些原本后端的思想開(kāi)始...
    Charlot閱讀 5,476評(píng)論 1 32
  • 相關(guān)鏈接:Browsersync官網(wǎng)Browsersync中文網(wǎng) 前言:1分鐘快速使用 Browsersync 下...
    AlessiaLi閱讀 3,166評(píng)論 0 5