NodeJS發(fā)展
作者:Dyan Dahl
跟編程無(wú)關(guān)的紐約博士
退學(xué)
云通信
web性能專家
Google V8出現(xiàn)
一個(gè)平臺(tái):集成了Google的V8引擎,讓JS運(yùn)行在服務(wù)器端的平臺(tái)**
Node發(fā)展
- 第一階段(2009年):Ryan Dahl個(gè)人開發(fā)
- 第二階段(2010年-2014年):Joyent公司資助,Dlyan Dahl負(fù)責(zé)技術(shù)工作
- 第三階段(2014年-2015年):Node技術(shù)人才自立門戶,創(chuàng)立IO.js
- 第四階段(2015年):IO.JS和NodeJS合并,步入快車道
- 目前,NodeJS版本
**使用穩(wěn)定版本:v6.10.2 最新的版本已經(jīng)到7.7.10 了
注意: 偶數(shù)是穩(wěn)定版本 奇數(shù)是不穩(wěn)定版本
特點(diǎn)
- 單線程 PHP是多線程
- 事件驅(qū)動(dòng)和回調(diào)函數(shù)
- 異步I/O
- 跨平臺(tái) 所有的平臺(tái)都支持
功能
- 復(fù)雜邏輯的網(wǎng)站|社交網(wǎng)站的大規(guī)模WEB應(yīng)用
- 網(wǎng)絡(luò)爬蟲
- WebSocket(端游,頁(yè)游)TCP/UDP套接字應(yīng)用程序
- 單元測(cè)試工具
- 圖形界面的本地應(yīng)用程序(操作系統(tǒng))
- 交互式終端程序
退出交互式的命令 .exit 可以退出 或ctrl+C 退出 2次
Node.js的缺點(diǎn)
- 大量采用匿名函數(shù),使得拋出的異常不易閱讀
- try/catch限于同步代碼,使得異常捕獲較為復(fù)雜
- 單線程:可靠性
- 不適合CPU密集型的場(chǎng)景 // 比較費(fèi)時(shí)間的操作
- 回調(diào)的代碼習(xí)慣影響閱讀
ES6 Promise 解決嵌套回調(diào)的方式
async ES2017 的語(yǔ)法
q 第三方的庫(kù)實(shí)現(xiàn)異步回調(diào)
bluebird 第三方庫(kù)實(shí)現(xiàn)解決異步回調(diào)方式
安裝
- 官網(wǎng)下載(v6.10.0):NodeJS官網(wǎng)
- 直接安裝
- 測(cè)試是否成功
- 按下cmd+R,輸入cmd,打開命令行工具
- 在命令行輸入node -v,顯示 v6.10.0,表示成功
- 順帶輸入npm -v,顯示 3.10.10,查看NPM版本
- nodejs的升級(jí) 可以安裝n模塊 然后可以升級(jí)到最新的版本
安裝n模塊 然后通過n模塊升級(jí)
查了下 在Mac下可以安裝 在Windows下無(wú)法安裝
npm install -g n
n stable 直接安裝到最新的版本 7.2.2
n 6.10.0 或者 n v6.10.0 對(duì)應(yīng)版本
NPM(Node Package Manager):Node JS包管理工具
- Node安裝成功,默認(rèn)就安裝了NPM
- NodeJS就在服務(wù)器端:(不要在服務(wù)器端使用BOM和DOM,可以使用ECMAScript基本語(yǔ)法)
1.alert()
2.docuemnt對(duì)象也不存在與服務(wù)器端
3.window對(duì)象也不存在于服務(wù)器端
功能
- 安裝,卸載,更新,查看,搜索,發(fā)布包
命令
安裝下載模塊
npm install jquery 下載jquery
npm install jquery@1.12.4 下載指定版本jquery
npm install jquery --save (簡(jiǎn)寫-S)
npm install bootstrap --save-dev (簡(jiǎn)寫-D)
// 注意只有一個(gè)-符號(hào)對(duì)應(yīng)后面的dev 并且后面還沒有空格的
npm install ejs(模板引擎 類似template 類似``模板引擎) --save:
下載ejs并且將ejs的版本信息寫入到package.json中
Mac和windows cmd下面采用 mkdir 建立對(duì)應(yīng)的目錄
NPM的安裝源 可以使用淘寶的安裝源安裝
1.1 npm config set registry https://registry.npm.taobao.org
1.2 安裝時(shí)指定安裝源
npm install jquery --registry=https://registry.npm.taobao.org
或者 npm install jquery --registry=http://registry.npm.taobao.org
參數(shù)的前后沒有空格同時(shí)下載多個(gè)模塊
<pre>
1.npm init(或者當(dāng)前目錄下新建package.json),內(nèi)容如下
{
"name": "myapp", package名字(自定義)
"version": "1.0.0", package的版本(自定義)
"description": "", 描述(自定義)
"main": "main.js", 主入口文件(自定義)
"dependencies": { package的應(yīng)用依賴模塊,及別人要使用這個(gè)package,至少需要安裝哪些東西。
"jquery": "1.8.3", 下載jquery
"bootstrap":"", 下載bootstrap
"angular":"" 下載angularJS
},
"author": "lin", 作者
"license": "ISC" 授權(quán)
}
2.npm install 下載安裝
3.npm list 查看已經(jīng)安裝的模塊
4.npm help npm的幫助文檔
</pre>卸載 npm uninstall jquery
npm uninstall jquery --save-
查看包的信息
- npm ls:查看安裝的包
- npm ls jquery:查看jquery包的特性
- npm info jquery:查看jquery包的詳細(xì)信息
更新包 npm update jquery
搜索包 npm search jquery
查看npm當(dāng)前配置 npm config list
注意事項(xiàng)
-
版本號(hào)理解(jquery-1.11.0)
// node 6.10.2 這3個(gè)數(shù)字分別代表什么意思- 主版本號(hào):不兼容的API修改
- 副版本號(hào):向下兼容的功能性新增
- 補(bǔ)丁版本號(hào):向下兼容的bug的修復(fù)
-
常見版本號(hào)理解
比如jquery^1.11.0 最終安裝的是 1.12.4- ^1.11.0 => 1.11.0 <= version < 2.0.0:比較激進(jìn)
- 1.11.0:就是1.11.1版本
比如jquery~1.11.0 最終安裝 1.11.3 版本 - ~1.11.0 => 1.11.0 <= version < 1.12.0:比較溫和,盡可能兼容
-
NPM下載目錄問題
- 上級(jí)目錄有node_modules,文件就會(huì)被下載到上級(jí)的node_modules
默認(rèn)在安裝node.js環(huán)境,path路徑就已經(jīng)添加了。
執(zhí)行命令 npm config get prefix:獲取當(dāng)前npm命令
注意:只有設(shè)置了環(huán)境變量 后面的supervisor 和 express才可以生效。
(后期設(shè)置supervisor,express等命令使用)全局安裝(global)
npm install supervisor -g
npm install bower -g
安裝的我不會(huì)出現(xiàn)在當(dāng)前目錄下,
出現(xiàn)在C:\Users\lin(自己的用戶名)\AppData\Roaming\npm
查看文件的時(shí)間 可以知道自己什么時(shí)間安裝的插件包
supervisor 組件 可以自動(dòng)檢查文件發(fā)生變化 并重新執(zhí)行node命令node程序的執(zhí)行采用2種方式
第一種 node 文件名.js
第二種 如果文件下面有package.json 采用npm run test; 對(duì)應(yīng)執(zhí)行文件
Node的模塊化開發(fā)程序
- NodeJS模塊(包)
原生模塊:C++語(yǔ)言擴(kuò)展的模塊 fs http url等:直接引入使用
文件模塊:
1.1 第三方文件模塊:
由組織或者個(gè)人寫的模塊:
必須先下載再引入模塊
ejs:模板引擎
mongodb:NoSQL數(shù)據(jù)庫(kù)
1.2 自定義文件模塊: module(模塊) exports(導(dǎo)入)
1.2.1 采用exports導(dǎo)入的方式