初識NodeJS

Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環(huán)境抗斤。
Node.js 使用了一個事件驅(qū)動即寒、非阻塞式 I/O 的模型,使其輕量又高效锡宋。

本文主要對一些NodeJS的基本概念做一個介紹描焰。

模塊的引入方式

在NodeJS中媳否,可以通過require命令,引入需要的模塊栈顷,主要有以下三種方式:

  1. 引入NodeJS提供的內(nèi)置模塊逆日,譬如:http, fs
var fs = require('fs');
  1. 引入第三包,譬如http-server(前提本地已安裝了該模塊)
var httpServer = require('http-server')
  1. 引入自己封裝的模塊萄凤,譬如API.js,需要特別注意的是:需要加./相對路徑室抽,這區(qū)別于上面兩種方式。
// ① API.js
function test() {
  console.log('歡迎引入該模塊');
}
module.exports.say = test;  // 對外暴露test方法

// ② main.js
const API = require('./API.js');
API.say();

// ③ 執(zhí)行命令  node main.js

Require模塊的查找路徑

這里主要是針對第三方依賴靡努。在當(dāng)前文件中引入第三方依賴時坪圾,它優(yōu)先從當(dāng)前目錄的node_modules中查找是否有該模塊,若沒有惑朦,往上一個目錄查找兽泄,直至根目錄。舉例如下漾月,有如下目錄:

?  node pwd
/Users/xushufeng/Desktop/node

?  node ls -al
total 24
drwxr-xr-x   6 xushufeng  staff   192  8 20 17:34 .
drwx------+ 14 xushufeng  staff   448  8 20 14:42 ..
-rw-r--r--   1 xushufeng  staff    70  8 20 14:46 api.js
-rw-r--r--   1 xushufeng  staff    41  8 20 17:23 index.js
drwxr-xr-x  52 xushufeng  staff  1664  8 20 17:34 node_modules
-rw-r--r--   1 xushufeng  staff   329  8 20 17:36 package.json

先從node目錄下的node_modules查找病梢,若有則直接使用;若沒有,則往上去Desktop目錄下的node_modules繼續(xù)查找,直至根目錄蜓陌。

需要特別注意的是觅彰,模塊路徑的查找與全局安裝的模塊沒有任何關(guān)系,
因為全局安裝的路徑為:/usr/local/lib/node_modules/,找不到這里钮热。

NPM包管理

Node.js 的包管理器 npm填抬,是全球最大的開源庫生態(tài)系統(tǒng)。

通過NodeJs提供的包管理工具隧期,可以很方便的使用第三方依賴飒责。常用的npm命令有:

  • npm install -g <pkg>: 全局安裝,MAC系統(tǒng)下仆潮,安裝路徑為/usr/local/lib/node_modules/,可以在任何地方使用宏蛉。
  • npm install --save|--save-dev <pkg>: 將依賴安裝于當(dāng)前目錄中,package.json文件中的dependencies | devDependencies字段會添加一條該依賴的版本信息
  • npm install: 安裝package.json文件中,dependenciesdevDependencies中所有的依賴

另外性置,如果全局沒有安裝檐晕,又想使用項目中安裝的依賴命令時(譬如http-server), 可以使用如下方式:

./node_modules/http-server/bin/http-server

NPM Script

現(xiàn)如今,前端工程化越來越成為一種趨勢蚌讼,在GitHub上面的很多項目中,經(jīng)掣鲩牛可以看到一個package.json文件, 舉例如下:

{
  "name": "node",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "http-server": "^0.11.1"
  },
  "devDependencies": {
    "http-server": "^0.11.1"
  }
}

雖然第三方提供了很多方便的命令行供我們使用篡石,但是每次都要輸那么一長串命令,時間長了根本就記不住西采,這個時候凰萨,我們就可以往scripts字段中,配置我們需要的命令械馆。例如:

{
  "scripts": {
    "css:autoprefixer": "postcss -u autoprefixer -r dist/css/*",
    "css:compress": "csso in.css --output out.css",
    "js:lint": "eslint src/js",
    "js:uglify": "mkdir -p dist/js && uglifyjs src/js/*.js -m -o dist/js/app.js",
    "image:imagemin": "app=imagemin-cli npm run check; imagemin src/images dist/images -p",
    "server": "browser-sync start --server --files 'dist/css/*.css, dist/js/*.js'",
    "watch": "onchange 'src/js/*.js' -- npm run css:compress",
    "start": "npm run server"
  }
}
npm run css:autoprefixer
npm start

常用的第三方包

  1. nrm: 快速切換npm源
npm install -g nrm
nrm ls
nrm use taobao
nrm use npm
  1. n: 方便切換NodeJS版本
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胖眷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子霹崎,更是在濱河造成了極大的恐慌珊搀,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尾菇,死亡現(xiàn)場離奇詭異境析,居然都是意外死亡,警方通過查閱死者的電腦和手機派诬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門劳淆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人默赂,你說我怎么就攤上這事沛鸵。” “怎么了缆八?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵曲掰,是天一觀的道長疾捍。 經(jīng)常有香客問我,道長蜈缤,這世上最難降的妖魔是什么拾氓? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮底哥,結(jié)果婚禮上咙鞍,老公的妹妹穿的比我還像新娘。我一直安慰自己趾徽,他們只是感情好续滋,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孵奶,像睡著了一般疲酌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上了袁,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天朗恳,我揣著相機與錄音,去河邊找鬼载绿。 笑死粥诫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的崭庸。 我是一名探鬼主播怀浆,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼怕享!你這毒婦竟也來了执赡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤函筋,失蹤者是張志新(化名)和其女友劉穎沙合,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跌帐,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡灌诅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了含末。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猜拾。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖佣盒,靈堂內(nèi)的尸體忽然破棺而出挎袜,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布盯仪,位于F島的核電站紊搪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏全景。R本人自食惡果不足惜耀石,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望爸黄。 院中可真熱鬧滞伟,春花似錦、人聲如沸炕贵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽称开。三九已至亩钟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鳖轰,已是汗流浹背清酥。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蕴侣,地道東北人总处。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像睛蛛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胧谈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359

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