vue-hackernews-2.0 細節(jié)解讀

前言

本文按源碼文件分解解讀了vue-hackernews-2.0開源項目中的一些知識點,作為對項目源碼解讀的細節(jié)補充忧吟。

package.json解讀

該文件提供了四種命令

    # install dependencies
    npm install # or yarn
    
    # serve in dev mode, with hot reload at localhost:8080
    npm run dev
    
    # build for production
    npm run build
    
    # serve in production mode
    npm start

執(zhí)行npm install
查找package.json中的dependencies和devDependencies字段依疼,然后依次安裝里面的模塊高蜂。

Tips:dependencies與devDependencies的區(qū)別
devDependencies下的模塊椎眯,是開發(fā)環(huán)境需要的依賴項,主要是webpack打包咽袜,js語言轉(zhuǎn)碼(ES6代碼轉(zhuǎn)為ES5代碼)等模塊丸卷,這些模塊不會被部署到生產(chǎn)環(huán)境枕稀。
dependencies下的模塊询刹,是生產(chǎn)環(huán)境需要的依賴項,即運行該包時所需要的依賴項萎坷。
這里可能有疑問凹联,難道生產(chǎn)環(huán)境不需要webpack,js語言轉(zhuǎn)碼等模塊嗎哆档?
答案是:需要蔽挠,但這些模塊不需要部署到生產(chǎn)環(huán)境,僅僅在生成生產(chǎn)環(huán)境所需的部署文件時被使用瓜浸。

執(zhí)行npm run dev

    "scripts": {
    "dev": "node server",
    "start": "cross-env NODE_ENV=production node server",
    "build": "rimraf dist && npm run build:client && npm run build:server",
    "build:client": "cross-env NODE_ENV=production webpack --config build/webpack.client.config.js --progress --hide-modules",
    "build:server": "cross-env NODE_ENV=production webpack --config build/webpack.server.config.js --progress --hide-modules"
    },

查找package.json中的scripts字段對應的對象澳淑,找到dev屬性,并執(zhí)行dev屬性對應的腳本:node servernode server.js插佛,即執(zhí)行server.js

執(zhí)行npm run build
同樣杠巡,找到build屬性,并執(zhí)行:rimraf dist && npm run build:client && npm run build:server雇寇,即刪除dist目錄并執(zhí)行npm run build:clientnpm run build:server
對應功能是:設(shè)置環(huán)境變量為production氢拥,同時webpack根據(jù)config.js配置打包生產(chǎn)環(huán)境所需的部署文件

執(zhí)行npm start
同樣,找到start屬性锨侯,并執(zhí)行:cross-env NODE_ENV=production node server嫩海,即通過cross-env模塊設(shè)置NODE_ENV環(huán)境變量為production,并執(zhí)行node server

Tips:為什么是npm start而不是npm run start?
1.兩者都可以囚痴,因為start為npm內(nèi)置支持的命令叁怪,所以可以直接執(zhí)行,參見npm --help
2.其他三個命令都不是內(nèi)置命令深滚,需要經(jīng)由npm run去執(zhí)行奕谭。

index.template.html解讀

<meta name="mobile-web-app-capable" content="yes">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
<link rel="shortcut icon" sizes="48x48" href="/public/logo-48.png">
<meta name="theme-color" content="#f60">
<link rel="manifest" href="/manifest.json">

這段html代碼功能:移動端瀏覽器適配及PWA適配

Tips:PWA (progressive web apps)-本質(zhì)上仍然是個網(wǎng)站,但允許直接被放置到移動設(shè)備的桌面上(例如通過chrome瀏覽器的Add to HomeScreen)成箫,而不需要用戶去app store下載安裝應用才能使用展箱,而這與一個網(wǎng)址的快捷方式完全不同,因為這種web app提供了一種接近原生app的用戶體驗蹬昌。

接下來我們在手機(Nexus 6P/Android 7.1)上分別示范下瀏覽器體驗及PWA體驗分別是怎樣的混驰。
瀏覽器體驗:
在Chrome瀏覽器地址欄中輸入項目地址,效果如下:

open_by_chrome.png

PWA體驗:
通過Chrome的Add to Homescreen功能,將該站點添加到桌面栖榨。效果如下:

chrome_menu.png
chrome_menu_add_to_homescrren.png
chrome_add_to_homescrren_pwa.png

點擊桌面生成的應用圖標后昆汹,可以看到具備了過渡啟動圖界面,而且進入后婴栽,不再是瀏覽器內(nèi)看網(wǎng)站的體驗满粗,地址欄消失了,看起來像是一個原生應用愚争。

pwa_flash_white.png

現(xiàn)在我們對manifest.json配置做一下改動映皆,來學習幾個參數(shù)的作用。以下三張電機圖標后的啟動圖界面變更分別對應manifest.json的如下三種配置改動:

  //1. 主題色:綠色 啟動圖背景色:白色
  "background_color": "#f2f3f5",
  "display": "standalone",
  "theme_color": "#48BB74"
  //2. 主題色:綠色 啟動圖背景色:綠色
  "background_color": "#48BB74",
  "display": "standalone",
  "theme_color": "#48BB74"
  //3. 主題色:橙色 啟動圖背景色:橙色
  "background_color": "#f60",
  "display": "standalone",
  "theme_color": "#f60"
pwa_flash.png
pwa_flash_green.png
pwa_flash_orange.png

Tips:
這里用到的manifest.json不要與作為離線緩存的manifest混淆轰枝。

最后來對比感受下非PWA的百度站點VsPWA站點的hackernews在Add to HomeScreen后捅彻,體驗上的差異。

pwa.gif

概括下主要的差異:
1.增加了同原生應用一樣的啟動圖過渡界面
2.進入站點后鞍陨,像是原生應用一樣步淹,沒有了地址欄等瀏覽器體驗的痕跡。
3.從點擊圖標開始到瀏覽頁面诚撵,整體的體驗上缭裆,PWA更接近原生應用。
注:PWA更多的特性這里并未應用寿烟,其實PWA可以做的更多澈驼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市韧衣,隨后出現(xiàn)的幾起案子盅藻,更是在濱河造成了極大的恐慌,老刑警劉巖畅铭,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氏淑,死亡現(xiàn)場離奇詭異,居然都是意外死亡硕噩,警方通過查閱死者的電腦和手機假残,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炉擅,“玉大人辉懒,你說我怎么就攤上這事〉В” “怎么了眶俩?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長快鱼。 經(jīng)常有香客問我颠印,道長纲岭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任线罕,我火速辦了婚禮止潮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钞楼。我一直安慰自己喇闸,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布询件。 她就那樣靜靜地躺著燃乍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪雳殊。 梳的紋絲不亂的頭發(fā)上橘沥,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天窗轩,我揣著相機與錄音夯秃,去河邊找鬼。 笑死痢艺,一個胖子當著我的面吹牛仓洼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播堤舒,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼色建,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了舌缤?” 一聲冷哼從身側(cè)響起箕戳,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎国撵,沒想到半個月后陵吸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡介牙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年壮虫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片环础。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡囚似,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出线得,到底是詐尸還是另有隱情饶唤,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布贯钩,位于F島的核電站募狂,受9級特大地震影響呵晨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜熬尺,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一摸屠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粱哼,春花似錦季二、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绊含,卻和暖如春桑嘶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背躬充。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工逃顶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人充甚。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓以政,卻偏偏與公主長得像,于是被迫代替她去往敵國和親伴找。 傳聞我的和親對象是個殘疾皇子盈蛮,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)技矮,斷路器抖誉,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 什么是 NPM npm之于Node,就像pip之于Python,gem之于Ruby,composer之于PHP衰倦。 ...
    ihoey閱讀 6,248評論 2 36
  • GitChat技術(shù)雜談 前言 本文較長袒炉,為了節(jié)省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack耿币,它要...
    蕭玄辭閱讀 12,674評論 7 110
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,522評論 25 707
  • 我一直都想寫一首詩淹接,把一句話放在詩的里頭十性。這一句是我很多年前在送一個中學時代喜歡很久的女生上火車后,在長椅上端坐了...
    冷魄閱讀 624評論 0 0