初識NodeJS

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

本文主要對一些NodeJS的基本概念做一個(gè)介紹。

模塊的引入方式

在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)前文件中引入第三方依賴時(shí),它優(yōu)先從當(dāng)前目錄的node_modules中查找是否有該模塊,若沒有,往上一個(gè)目錄查找,直至根目錄。舉例如下,有如下目錄:

?  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)系,
因?yàn)槿职惭b的路徑為:/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中所有的依賴

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

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

NPM Script

現(xiàn)如今,前端工程化越來越成為一種趨勢,在GitHub上面的很多項(xiàng)目中,經(jīng)??梢钥吹揭粋€(gè)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"
  }
}

雖然第三方提供了很多方便的命令行供我們使用,但是每次都要輸那么一長串命令,時(shí)間長了根本就記不住,這個(gè)時(shí)候,我們就可以往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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容