摘要:來(lái)微信支付有2年多了,從2年前的互聯(lián)網(wǎng)模式轉(zhuǎn)變?yōu)镺2O模式,主要的場(chǎng)景是跟線下的商戶(hù)去打交道,不像以往的互聯(lián)網(wǎng)模式,有產(chǎn)品經(jīng)理提需求,我們幫忙去解決問(wèn)題。轉(zhuǎn)型后是這樣的,團(tuán)隊(duì)成員更多需要去尋找業(yè)務(wù)的方向,思考能為商戶(hù)或者業(yè)務(wù)做點(diǎn)什么來(lái)體現(xiàn)其身價(jià)值,這樣的轉(zhuǎn)變是機(jī)會(huì)也是挑戰(zhàn),我一直相信在特別的環(huán)境下能迅速磨練出了跨崗位技能和綜合素質(zhì),然而一路走來(lái)也發(fā)現(xiàn)了自己的短板(所謂的產(chǎn)品思維),并非想提升就可以
來(lái)微信支付有2年多了,從2年前的互聯(lián)網(wǎng)模式轉(zhuǎn)變?yōu)镺2O模式,主要的場(chǎng)景是跟線下的商戶(hù)去打交道,不像以往的互聯(lián)網(wǎng)模式,有產(chǎn)品經(jīng)理提需求,我們幫忙去解決問(wèn)題。
轉(zhuǎn)型后是這樣的,團(tuán)隊(duì)成員更多需要去尋找業(yè)務(wù)的方向,思考能為商戶(hù)或者業(yè)務(wù)做點(diǎn)什么來(lái)體現(xiàn)其身價(jià)值,這樣的轉(zhuǎn)變是機(jī)會(huì)也是挑戰(zhàn),我一直相信在特別的環(huán)境下能迅速磨練出了跨崗位技能和綜合素質(zhì),然而一路走來(lái)也發(fā)現(xiàn)了自己的短板(所謂的產(chǎn)品思維),并非想提升就可以,有時(shí)候感到自己很無(wú)能。
于是這樣熬過(guò)來(lái),暗示自己保持積極樂(lè)觀的心態(tài),平時(shí)使用一些通用的方法來(lái)提醒自己,如多問(wèn)自己為什么這樣做,給自己定制一些小的目標(biāo)等,心態(tài)好、思維清晰、目標(biāo)明確。
雖然沒(méi)有獲得多大的成就,但必須看到自己在進(jìn)步,除了技術(shù)進(jìn)步外,關(guān)鍵還是自身的思想進(jìn)步,本事長(zhǎng)在自己身上,沒(méi)有人搶得走。
進(jìn)入正文~
上一篇文章《npm 常用命令詳解》主要是整理了最常使用的npm命令及相關(guān)介紹,其中有提到全局安裝(npm install gulp -g)和本地安裝(npm install gulp),下圖來(lái)自Gulp中文網(wǎng)入門(mén)指南,可以看出全局安裝后gulp后還要進(jìn)行本地安裝,一開(kāi)始我疑惑了?為什么全局安裝的gulp么,還要進(jìn)行本地安裝,難道不能在項(xiàng)目中直接調(diào)用本地安裝的包?
帶著疑惑,在google找了相關(guān)文檔,雜七雜八湊合起來(lái)才有了點(diǎn)眉目,讓我們一起解開(kāi)nodejs全局安裝和本地安裝的一些疑惑,如果有講錯(cuò)的地方,還請(qǐng)大家留意指正。
本文以Windows平臺(tái)上做測(cè)試,以gulp為示例做教程
目錄
什么是全局安裝(global)
什么是本地安裝(local)
為什么全局安裝后還要本地安裝
僅全局安裝足夠嗎
本地安裝的重要特性
什么是全局安裝(global)
安裝位置
全局安裝方式是鍵入命令:npm install gulp -g 或 npm install gulp --global,其中參數(shù)-g的含義是代表安裝到全局環(huán)境里面,包安裝在Node安裝目錄下的node_modules文件夾中,一般在 \Users\用戶(hù)名\AppData\Roaming\ 目錄下,可以使用npm root -g查看全局安裝目錄。
調(diào)用方式
全局安裝后可以供命令行(command line)使用,用戶(hù)可以在命令行中直接運(yùn)行該組件包支持的命令,如下圖全局安裝gulp后的cmd文件
什么是本地安裝(local)
安裝位置
本地安裝方式是鍵入命令:npm install gulp 或 npm install gulp --save-dev等,其中參數(shù)--save-dev的含義是代表把你的安裝包信息寫(xiě)入package.json文件的devDependencies字段中,包安裝在指定項(xiàng)目的node_modules文件夾下。
調(diào)用方式
本地安裝后可以直接通過(guò)require()的方式引入項(xiàng)目中node_modules目錄下的模塊,如下示例,本地安裝后直接在gulpfile.js中require('gulp')。
為什么全局安裝后還要本地安裝
僅全局安裝足夠嗎
1.在js實(shí)例代碼中,默認(rèn)下node.js會(huì)在NODE_PATH和目前js所在項(xiàng)目下的node_modules文件夾下去尋找模塊,因此,如果只是全局安裝,不能直接通過(guò)require()的方式去引用模塊,需要手動(dòng)解決包路徑的配置問(wèn)題,當(dāng)然你也可以復(fù)制全局安裝的node_modules文件夾到項(xiàng)目下,還有辦法可以選擇將環(huán)境變量的NODE_PATH設(shè)置為C:\Program Files\nodejs。
2.對(duì)于包的更新不好管理,可能你需要為每個(gè)包重新命名,如gulp@3.8.1、gulp@3.9.1...,為了區(qū)別不同項(xiàng)目使用指定的包,保證模塊之間的相互依賴(lài)(這塊下面會(huì)介紹),區(qū)別每個(gè)項(xiàng)目正常運(yùn)行。
因此,不推薦只全局安裝。
本地安裝的重要性
最早的node.js/npm實(shí)際上是全局的,包括現(xiàn)在還兼容NODE_PATH,但是不能支持全局多版本,于是nodejs團(tuán)隊(duì)改成本地安裝的方法可能就是為了保證不同版本包之間的相互依賴(lài),什么意思呢,舉個(gè)例子weui組件中相互依賴(lài)的包就有12個(gè)
其中依賴(lài)包的指定版本號(hào)如下,不可輕易去修改,因?yàn)椴煌姹景鼘?duì)應(yīng)依賴(lài)包的版本的功能有所差別,如果修改指定的版本來(lái)運(yùn)行weui,就可能會(huì)編譯出錯(cuò)等bug。
再舉個(gè)例子:
包版本為: A(0.0.1)依賴(lài)B(0.0.2),B(0.0.1)依賴(lài)C(0.0.3) 一段時(shí)間原作者更新后,包版本為: A(1.0.1)依賴(lài)B(1.0.0),B(1.0.0)依賴(lài)C(1.0.0)
每一次的更新可能帶來(lái)不一樣的功能,在多人合作、發(fā)布模塊到npmjs社區(qū)、上傳到github給其他人使用時(shí),保留模塊的版本信息可用于下載指定的版本號(hào)顯得特別重要。
本地安裝可以讓每個(gè)項(xiàng)目擁有獨(dú)立的包,不受全局包的影響,方便項(xiàng)目的移動(dòng)、復(fù)制、打包等,保證不同版本包之間的相互依賴(lài),這些優(yōu)點(diǎn)是全局安裝難以做到的。
另外,據(jù)node團(tuán)隊(duì)介紹,本地安裝包對(duì)于項(xiàng)目的加載會(huì)更快。
有優(yōu)點(diǎn)也少不了缺點(diǎn),如每次新項(xiàng)目都要本地安裝所依賴(lài)的包,安裝包時(shí)間相對(duì)較長(zhǎng),一來(lái)是包太大導(dǎo)致下載慢;二是浪費(fèi)了硬盤(pán)空間,不過(guò)現(xiàn)在電腦硬盤(pán)動(dòng)不動(dòng)就幾個(gè)T,你還會(huì)在意節(jié)省這點(diǎn)空間嗎?