node的特色
- 他是一個JavaScript的運行環境
- 依賴於Chrome V8 引擎進行代碼解釋
- 事件驅動
- 非堵塞
- 單線程
- 輕量,適用於實時數據交互
exports和module.exports的區別
- exports是對module.exports引用
- node爲每一個模塊提供一個exports變量,他指向module.exports
- 不能將它直接指向一個值,那樣會改變他的指向
- 若是exports和module.exports同時存在,那麼只顯示module.exports
http請求和響應的報文格式和常見http狀態碼
- 請求: 請求行,請求頭,空行,請求體
- 響應: 狀態行,響應頭,空行,響應頭
- 編碼格式 1.. 表示請求已發送 2.. 表示請求成功 3.. 表示等待用戶進一步操做,重定向 4.. 表示頁面加載錯誤 5.. 表示服務器錯誤
MIME類型有什麼用
- http協議中定義文檔性質及格式的標準
- 服務器經過MIME告知響應內容什麼類型,而瀏覽器經過MIME類型來缺點如何讓處理文檔
模塊加載機制
Nodejs遵循commonjs規範的模塊加載機制,使用require加載文件,使用exports和module.exports導出文件css
NPM的做用html
- 容許用戶從NPM服務器下載別人編寫的第三方包到本地使用
- 容許用戶從NPM服務器下載並安裝別人編寫的命令行程到本地使用
- 容許用戶將本身編寫的包或命令行程序上傳到NPM服務器供別人使用
url組成
協議+域名+端口+pathname+search+hash前端
fs文件操做模塊可否刪除一個非空目錄,若是不能應該怎麼作
不能 它只能刪除空的目錄 若是目錄不爲空,他必須先遍歷文件夾,刪除裏面的內容,而後若是還有文件夾,繼續遍歷 從而遞歸執行操做,只有當裏面的內容所有清空後,纔會刪除一個目錄html5
exports 中Router要解決的問題?
- 能夠認爲他是一個處理中間件和控制器的微型app,他擁有和app相似的方法
- 他解決了把模塊暴露給其餘模塊被濫用的風險
npm start命令,應該在哪裏配置,在哪裏能夠正確運行?
- 在package.json 中的script中配置npm命令
- key是npm的自定義命令名稱
- value是真正終端中執行的命令
- 在使用npm 運行自定義命令時, 須要確保命令路徑的位置上擁有package.json文件
express生成器的做用是什麼
能夠經過express-generator能夠快速建立一個應用骨架,包含一整套配置好的服務器配置,文件和文件夾,包括靜態資源的暴露,路由和模板引擎的配置,以及錯誤頁面的處理node
請回答, 前端Ajax請求後端接口/api/getNews, 接口過程當中, 都發生了什麼?
首先前端代碼運行在瀏覽器中,由瀏覽器的XMLHTTPRequest發起一個請求, 若是經過了跨域的檢測, 進行http鏈接, 發送請求信息, 服務器觸發對應監聽的"/api/getNews"接口的回調函數, 執行其中的代碼, 最後res返回響應的內容等給本次請求的地方.webpack
請求對象中包含哪些內容
請求協議,請求方式,請求地址,請求頭,請求頭web
響應對象中包含哪些內容
響應協議,響應狀態碼,響應狀態信息,響應頭,相應數據ajax
express的優勢
Express的優勢是線性邏輯:數據庫
- 路由和中間件完美結合
- 經過中間件形式把業務邏輯細分,簡化
- 隨隨便便的一個請求,經過一系列中間件處理後再響應給客戶,在複雜的邏輯也線性了
###什麼是中間件express
-
Express是一個自身功能及其簡單,徹底由路由和中間件構成的文本開發框架
-
他就是在操做各類中間件處理複雜的邏輯
-
非內置的中間件經過require導入就可使用了
-
經常使用第三方中間件:
- cookie-parser
- ejs
- express-session
- http-errors
- Multer
- Nodemon
- config-lite
express 缺點是什麼
- express是基於callback來組合業務邏輯
- callback有兩大缺點:
- 不可組合
- 異常不可捕獲
同步/異步
同步操做
因此線程都得等待,只有上一段代碼執行完畢,而後下一段代碼纔會執行,堵塞線程
異步操做
不會等待,當有程序在執行過程當中,後面的代碼繼續執行,當異步操做成功,通常使用回調函數來處理異步成功的動做
ejs
EJS是JavaScript的模板庫,用來從json數據生HTML文件
koa
優勢:
- 藉助promise和generator的能力,丟掉callback,完美解決異步組合問題和異步異常捕獲問題
- koa把router,view等功都移除了,更加輕量級
缺點
- Connect/Express 的中間件基本不能重用,基本要重寫
pug
- pug是一款健壯,靈活,功能豐富的HTML模板引擎,專門爲Node.js平臺開發
- 是一種經過縮減方式編寫代碼,不須要考慮閉合標籤,能夠提升速度和複用性
設計一個先後端交互的流程?
前端編寫HTML+CSS代碼之後, 經過JS的Ajax進行網路請求, 請求後臺指定的數據接口, 根據業務需求, 能夠還須要傳遞參數等信息, 獲取數據之後, 進行JSON解析和DOM建立展現. 服務器端 編寫接口, 接收參數等, 鏈接數據庫, 根據業務邏輯編寫業務代碼, 返回不一樣的數據
分頁功能,先後的如何交互
分頁功能分先後端
- 前端
- 先後端配合
cookie和session區別
session是區別於數據庫存在的一種服務器臨時存儲技術, 它主要存儲一些無需持久化的數據, 好比臨時的登陸狀態信息等 cookie是存在於瀏覽器上的一種瀏覽器本地存儲的方式, 同域名下的cookie不一樣標籤頁能夠共享, 默認過時時間是瀏覽器關閉時, 並且在進行http請求時, 會自動帶上瀏覽器所有的cookie發給後臺, 後臺也能夠獲取cookie, 設置能夠在響應時, 想瀏覽器中設置cookie。
解決跨域
當ajax請求所在的域名或者接口和請求目標的域名或者接口有一個不一樣,即發生跨域
解決
- 若是可讓後臺改碼,可讓後臺開啓跨域支持/使用jsonp處理
- cors設置set.heaader
- webpack設置跨域
爲何進行模塊化
- 是目前前端的開發趨勢
- 有更好的維護性,可複用性等好處
模塊化和組件化的區別
- 組件化讓一些小功能通用性和可複用性來抽象組件
- 組件化更多的關注UI部分,好比用戶看到的彈出框,頁腳,確認按鈕等,這些組件能夠組合成新的組件,又能夠和其餘組件組合組合成新的組件
- 一些小模塊的複用
- 模塊化是按照業務邏輯劃分大模塊
- 模塊化側重於數據的封裝,一組相關的組件定義成一個模塊,一個json對象能夠是一個模塊
AMD 和 CMD
AMD 依賴前置 CMD 就近依賴
常見的web優化有哪些?
- 減小代碼重複
- 壓縮 css,js
- 減小圖片大小數量
- 減小http請求,合理設置緩存
- CDN加速
- 反向代理
- js減小DOM操做,編碼使用eval和function,減小做用域鏈查找
koa與express的區別?該如何選擇?
websocket是什麼
他是html5新增的協議,創建瀏覽器和服務器之間不受限制的雙向通道
websocket的優勢:
- 持雙向通訊,實時性更強。
- 減小通訊量,只要創建起websocket鏈接,就一直保持鏈接,在此期間能夠不斷的傳送消息,直到關閉請求。
- 節約帶寬。
爲何要進行先後端分離?
- 提高開發效率,由於能夠先後端並行開發,而不是像之前的強依賴
- 能夠實現真正的先後端解耦(前端能夠根據用戶不一樣時期的體驗需求迅速改版,後端對此毫無壓力。同理,後端進行的業務邏輯升級,數據持久方案變動,只要不影響到接口,前端能夠絕不知情。)、增長代碼的維護性及易讀性
- 先後端開發人員的職責更加專一:前端傾向於呈現,着重處理用戶體驗相關的問題;後端則傾向於業務邏輯、數據處理和持久化等。