Node JS基礎

Node

Node是基於chrome V8的js運行環境css

去node.js官網下載安裝包安裝便可html

在命令行工具輸入node -v後回車可查看node環境是否安裝成功前端

js是基於ECMAScript語法的,操做BOM和DOMnode

node.js也是基於ECMAScript語法,還有額外的Node APImysql

若是須要不依賴html運行js,只須要在js所在目錄按住shift,右鍵打開命令欄運行linux

node.js內部的變量和方法默認不能被外部訪問,若是a.js內部的方法要被外部(b.js)訪問使用:web

1.在a內使用exports.變量=變量sql

2.在a內使用module.exports.變量=變量chrome

若是同時使用export和module.expore變量,以module.expore爲準數據庫

3.在b內使用require(‘文件名’)訪問

Node系統模塊

fs方法

f:即file文件

s:即system系統

./表明本級目錄 ../表明下級目錄

讀取文件

fs.readFile(「文件路徑」,「文件編碼」,回調函數)

文件引用 const fs = require(」fs「);

回調函數內包含(err,doc)

err表明是否出錯,返回null表明沒有出錯,doc爲文件內容

寫入文件

fs.weiteFile(「要寫入的文件名」,「要寫入的內容」,回調函數)

若是沒有要寫入的文件系統會自動建立

路徑拼接

path方法

window的路徑基本使用/\

但服務器linux只有/

用戶上傳頭像等是保存到服務器中,因此須要路徑拼接

導入path模塊

const path= require(「path」)

let fin = path.join(「a」,「b」,「c.css」)

結果爲a\b\c.css

在大多數狀況下都會使用絕對路徑

使用--dirname能夠獲取絕對路徑

eg:path.join(__dirname,"路徑")

第三方模塊

是多個文件組成的包 npmjs.com有文檔

部分第三方模塊能夠鏈式編寫,即res.status().send()

獲取第三方模塊,使用npm(node packge manager)命令

下載:npm install 模塊名稱(下載到命令行所在目錄)

卸載:npm uninstall 模塊名稱

nodemon是一個第三方輔助執行文件(文件被修改會自動執行)

1.npm install nodemon -g(-g表明全局安裝)

2.使用nodemon代替node執行

3.ctrl+c結束命令

nrm:npm下載地址切換工具

1.npm install -g

2.nrm ls可查看下載地址列表

3.nrm use +地址

gulp第三方模塊前端構建工具

項目上線,html、js、css合併

語法轉換

公共文件抽離

1.npm install gulp

2.在項目根目錄創建gulpfile.js文件

3.建立兩個文件夾,src文件夾放置源代碼,dist文件夾放置壓縮後的文件

4.在gulpfile.js內編寫任務

5.執行gulpfile.js

gulp中的方法(用*能夠獲取全部同類型文件)

gulp.src();獲取要處理的文件

gulp.dest()輸出文件

gulp.task()創建gulp任務

gulp.watch()監控文件變化

eg:const gulp = require("gulp");

gulp.task(first,()=>{

gulp.src("./src/css").pipe(gulp.dest('dist/css'))

]})

gulp插件

gulp-htmlmin壓縮html文件中的代碼

gulp-csso壓縮css

gulp-babel js語法轉化

gulp-less less語法轉化

gulp-uglify 壓縮混淆js

gulp-file-include 公共文件包含

通常網站頭部和尾部會用到,使用@@include(「公共路徑」)能夠引用

browsersync 瀏覽器實時同步

gulp能夠將全部任務封裝起來依次執行eg:gulp.task('default',['htmlmin','cssmin','copy'])

package.json

package.json會記錄項目相關信息,包括第三方模塊(在dependencies字段中),快速生成package.json文件可使用 npm install -y

在傳輸時可避免傳遞node-modules模塊(本模塊過大),使用npm install便可下載全部第三模塊

開發依賴

項目在開發階段的依賴稱爲開發依賴,但有些項目依賴在上線以後不須要了,因此在安裝包時,在開發階段須要的依賴以--save-dev命令結尾,此文件會存儲在devDependencies中,若是在服務器線上環境使用--production

服務器端

url:傳輸協議://IP或域名:端口(默認爲80)/資源所在位置

http超文本傳輸協議

建立web服務器

請求報文

post 發送數據(安全,放在請求體中)

get 請求數據(不安全,經過url傳遞)

req.headers獲取請求報文信息

req.url獲取請求地址

req.method獲取請求方法

res.writeHead(狀態碼,{‘content-type’:文件類型})能夠設置http狀態碼和默認編碼方式

獲取文件type可使用mine插件

url.parse(req.url,true)會解析url的參數(限於get請求)

url.parse().pathname能夠返回無參數的url

querystring能夠處理post請求的字符串

路由

請求什麼響應什麼,網頁的訪問路徑

同步api從上到下執行,異步api會放在棧堆中,等到觸發才執行

異步api須要經過回調函數來調用,沒有返回值,因此須要封裝callback函數

讀取文件是異步API,第二部是回調函數

回調異步解決的方法:將回調函數寫入回調函數中,但會致使過多嵌套,還可使用promise構造函數

eg:let promise = new Promise((resolve,reject)=>{

fs.readFile("./1.txt",''utf8',(err ,result) = >{

​ if(err!=null){

​ reject(err)

}else{resolve(result)}

})

})

promise.then((result)=>{

​ console.log(result);

})

.catch((err)=>{console.log(err)})

若是成功調用resolve,失敗調用reject

es7新增異步函數

在普通函數前加async關鍵字,默認返回promise

eg: anync function fn (){

throw"發生了一些錯誤"

return 123;

}

fn().then(function(data){

​ console.log(data)

}).catch(function(err){

​ console.log(err)

})

throw拋出異常,使用catch接收,throw後的代碼不執行

async內部有await方法,能夠暫停函數的執行,只有有返回值才執行

promisify方法能夠改造異步方法好比fs方法,返回一個prominse對象

在調用Promisify方法

eg:const promisify = require("util").promisify

const readFile = promisify(fs.readFile)

在瀏覽器中去全局對象是window,在node中全局對象是gobal

數據庫

網站的數據是存儲在數據庫中

mongoDB 基於JSON

mysql 用於PHP

第三方模塊mongooes

須要啓動MongoDB net stat MongoDB

增刪改查

EXPRESS框架

使用npm install express命令進行下載

框架特性

提供了簡潔的路由定義

對獲取http請求參數進行簡化處理

對模板引擎支持程度高,方便渲染html

提供了中間件機制有效控制http請求

擁有大量第三方中間件對功能進行擴展

中間件

中間件就是一堆方法,能夠接收客戶端發來的請求,也能夠對請求作出響應,也能夠將請求交給下一個中間件處理

中間件由中間件方法(由框架提供),請求處理函數(開發人員提供)

能夠針對同一個請求設置多箇中間件

中間件默認從上到下匹配,匹配成功就終止匹配,可使用next方法將請求的控制權交給下一個中間件

中間件經常使用來作登陸保護,沒有登陸就不調用next方法

還能夠在網站維護時設置中間件,攔截全部路由

能夠自定義404頁面,在全部路由最後定義,表明上面的都沒有匹配,使用res.status設置狀態碼

框架模板引擎

unique能夠判斷數據是否重複

serializeArray能夠獲取表單中用戶輸入的內容,默認是數組內部有兩個值,一個是name即表單的name,一個是value,即表單的value

密碼加密

第三方模塊bcrypt,單程加密,能夠在密碼中加入隨機字符串增長密碼的破解難度

cookie和session

cookie是服務器在第一次響應客戶端請求的時候存儲在客戶端,在下一次請求服務器時,會自動發送cookie中的儲存數據給服務器端,cooike是有過時時間的

session是一個對象,能夠儲存多條數據 ,每條數據都有對應的sessionid做爲標識,頁面關閉session就失效了

相關文章
相關標籤/搜索