sql多種注入型別介紹
Node.js不是JS檔案,也不是一個JS框架,而是Server side JavaScript runtime,伺服器的一個JS執行時
Node.js是一個基於Chrome v8 引擎的JavaScript執行環境
Node.js使用了一個事件驅動、非阻塞式的I/O模型,使其輕量又高效。
Nodejs的版本管理工具(Node Version Manager),由於Nodejs迭代速度特別快,不同的專案可能需要不同的版本,NVP就類似Python中Anaconda?可以管理不同的Python版本?
windows:https://github.com/coreybutler/nvm-windows/releases下載zip檔案即可
linux:https://github.com/creationix/nvm
簡單使用:https://www.jianshu.com/p/8671e439a811
windows在nvm安裝包下的settings檔案下配置如下:
root: D:\nvm_setup\nvm path: D:\nvm_setup\nodejs arch:64 proxy:none node_mirror: https://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.org/mirrors/npm/
- 在使用者環境變數下加入,啟用 export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node - 配置node環境的npm映象 - 列印預設的 registry 地址 npm config -g get registry # https://registry.npmjs.org/ - 設定淘寶映象 npm config -g set registry https://registry.npm.taobao.org
nvm install v7.9.0 #命令後加版本號就可以進行安裝,字母v可以不寫,如下圖
nvm uninstall v7.9.0
首先啟動nvm,不啟動nvm在控制檯輸入node會報node不是內部或外部命令。
nvm on # 輸入後會列印nvm已啟動,並且顯示當前正在使用的版本
nvm off # 關閉nvm後,系統就會遮蔽對node的使用
nvm use v7.8.0
建議使用nvm去安裝(nvm install node版本號)!
傻瓜式安裝-安裝後命令行輸入:path,可以檢視到安裝過程中已經將nodejs路徑加入了path中
由於node是親核心的,本事沒有這麼多功能,但是有很多包,但是包和包直接存在依賴,我們需要一個工具幫我們管理包。這就需要使用NPM了。
類似java的maven,是隨同Nodejs一起安裝的包管理工具,能解決Nodejs程式碼部署上的很多問題。
允許使用者從NPM伺服器下載並安裝別人編寫的命令列程式到本地使用。
允許使用者將自己編寫的包或命令列程式上傳到NPM伺服器供別人使用。
注意:新版的nodejs已經集成了npm,輸入npm -v即可檢視是否安裝成功。
window下修改npm安裝包的全域性路徑(類似於maven的setting檔案中安裝包的全域性路徑),新建.npmrc檔案,內容如下:
cache=E:\nvm-setup\npm\cache
prefix=E:\nvm-setup\npm\repository
cache表示快取目錄,prefix表示npm包安裝目錄。然後將該檔案丟到user/admin目錄下。然後判斷是否設定成功:命令列:
npm config list
如果打印出自己所配置的內容,就代表設定成功。以後在使用npm install -g <package modul>安裝全域性包時就會安裝在這個配置的目錄下(-g:global)。
npm install npm -g
sudo npm install npm -g
npm install <Module Name> // @版本號 下載對應版本號的模組 // --save 儲存到package檔案。 如果有了package檔案,打包專案可以直接刪除node_modules模組,當別人使用時,可以直接在專案中使用nmp install命令自動讀取package.json,生成新的node_modules模組。其實就是在package.json裡添加了這個模組的依賴。 // --save-dev 表示在開發環境下使用
npm提供了一些工具包:gulp,我們自己做的東西跟他沒關係,但是開發時候需要用到,gulp就屬於開發階段的依賴。boostrap,我們做的頁面用到了這個包,bootstrap就是任何環節都依賴,這是專案依賴。當生成package檔案的時候,將專案打包給別人的時候(沒有node_modules),別人會通過npm install初始化package中所需要的包,這時候不會去安裝開發依賴所需要的包】
例如:使用npm 安裝常用的Nodejs web框架模組express
安裝好之後,express 包就放在了工程目錄下的 node_modules 目錄中,因此在程式碼中只需要通過require('express')的方式就好,無需指定第三方包路徑。
npm install express # 本地安裝
npm install express -g # 全域性安裝
npm err! Error: connect ECONNREFUSED 127.0.0.1:8087
$ npm config set proxy null
將安裝包放在 ./node_modules 下(執行 npm 命令時所在的目錄),如果沒有 node_modules 目錄,會在當前執行 npm 命令的目錄下生成 node_modules 目錄。
將安裝包放在 /usr/local 下或者你 node 的安裝目錄。
如果你希望具備兩者功能,則需要在兩個地方安裝它或使用npm link。
package.json 位於模組的目錄下,用於定義包的屬性。
例如上面安裝的express模組:【node_modules/express目錄下】
npm uninstall <Module Name> npm update <Module Name> npm search <Module Name>
建立模組,package.json 檔案是必不可少的。我們可以使用 NPM 生成 package.json 檔案,生成的檔案包含了基本的結果。
npm init
然後根據提示輸入你要建立模組的資訊,最後yes,生成的package.json就在專案的根目錄下。(使用npm init --yes可生成預設的package.json檔案)
註冊npm資源庫【username:liuwei04 password:常用密碼之一 郵箱:qq郵箱】
npm adduser
npm publish
如果你以上的步驟都操作正確,你就可以跟其他模組一樣使用 npm 來安裝。先建立自己的模組,然後釋出到遠端npm庫上,再用時就使用npm install yourpackageName【要先npm login】
npm install -g cnpm --registry=https://registry.npm.taobao.org
npm
類似windows/linux終端,或者mongoDB的終端【mongo.exe】
nrm的作用:提供了一些最常用的NPM包映象地址,能夠讓我們快速的切換安裝包時候的伺服器地址;
什麼是映象:原來包剛一開始是隻存在於國外的NPM伺服器,但是由於網路原由,經常訪問不到,這時候,我們可以在國內,建立一個和官網一樣的NPM伺服器,只不過,資料都是從人家那裡拿過來,除此之外,使用方式完全一樣;
npm i nrm -g # 全域性安裝nrm包
nrm ls # 檢視當前所有可用的映象源地址以及當前所使用的映象源地址
nrm use npm 或 nrm use taobao # 切換不同的源地址
nrm只是提供不同的源地址,真正下載安裝還是使用npm命令去裝,只是從nrm指定的映象源裡下載罷了。
引入 required 模組:我們可以使用require指令來載入 Node.js 模組。【類似於java中的import】
建立伺服器:伺服器可以監聽客戶端的請求,類似於 Apache 、Nginx 等 HTTP 伺服器。
接收請求與響應請求伺服器很容易建立,客戶端可以使用瀏覽器或終端傳送 HTTP 請求,伺服器接收請求後返回響應資料。
var http = require('http'); http.createServer(function (request,response) { // 傳送HTTP頭部 //HTTP狀態值:200:OK //內容型別:text/plain response.writeHead(200,{'Content-Type':'text/plain'}); //傳送相應資料“Hello World” response.end("Hello World\n"); }).listen(8888); //終端列印如下資訊; console.log('Server running at http://127.0.0.1:8888/') // 在server.js所在目錄啟動終端:執行node server.js,即可啟動伺服器
非同步程式設計依託於回撥來實現,但不能說使用了回撥後程序就非同步化了。
回撥函式在完成任務後就會被呼叫,Node 使用了大量的回撥函式,Node 所有 API 都支援回撥函式。
例如,我們可以一邊讀取檔案,一邊執行其他命令,在檔案讀取完成後,我們將檔案內容作為回撥函式的引數返回。這樣在執行程式碼時就沒有阻塞或等待檔案 I/O 操作。這就大大提高了 Node.js 的效能,可以處理大量的併發請求。
function foo1(name, age, callback) { } function foo2(value, callback1, callback2) { }
Node.js 是單程序單執行緒應用程式,但是因為 V8 引擎提供的非同步執行回撥介面,通過這些介面可以處理大量的併發,所以效能非常高。
Node.js基本上所有的事件機制都是用設計模式中觀察者模式實現。
Node.js 單執行緒類似進入一個while(true)的事件迴圈,直到沒有事件觀察者退出,每個非同步事件都生成一個事件觀察者,如果有事件發生就呼叫該回調函式.
Node.js 使用事件驅動模型,當web server接收到請求,就把它關閉然後進行處理,然後去服務下一個web請求。
當這個請求完成,它被放回處理佇列,當到達佇列開頭,這個結果被返回給使用者。
這個模型非常高效可擴充套件性非常強,因為webserver一直接受請求而不等待任何讀寫操作。(這也被稱之為非阻塞式IO或者事件驅動IO)
在事件驅動模型中,會生成一個主迴圈來監聽事件,當檢測到事件時觸發回撥函式。
整個事件驅動的流程就是這麼實現的,非常簡潔。有點類似於觀察者模式,事件相當於一個主題(Subject),而所有註冊到這個事件上的處理函式相當於觀察者(Observer)。
events 模組只提供了一個物件: events.EventEmitter。EventEmitter 的核心就是事件觸發與事件監聽器功能的封裝。
功能的封裝。