151.Node.js學習筆記(五)2018.12.16
阿新 • • 發佈:2018-12-20
快捷鍵
Ctr+Shift+左鍵、右鍵、上鍵、下鍵 等於選中
Ctr+D 選中相鄰的單詞
0. 知識點
- Express
- MongoDB
- 專案
1. 反饋
- callback是不是相當於函式自呼叫?
- 很簡單,函式也是一種資料型別,既可以當作引數進行傳遞,也可以當作方法的返回值
注意:a是形參、ret是實參
- 很簡單,函式也是一種資料型別,既可以當作引數進行傳遞,也可以當作方法的返回值
-
我們現在用的模組化是CMD吧 ?能不能擴充套件一下AMD?
- PHP 中為什麼就可以直接 require、include ?因為 PHP 當初在設計的時候就加入了這個功能
- PHP 這門語言天生就支援
- 模組作用域
- 可以使用 API 來進行檔案與檔案之間的依賴載入
- 在 Node 這個環境中對 JavaScript 進行了特殊的模組化支援 CommonJS
- JavaScript 天生不支援模組化
- require
- exports
- Node.js 才有的
- 在瀏覽器中也可以像在 Node 中的模組一樣來進行程式設計
- script標籤來引用載入,而且你還必須考慮載入的順序問題
- require.js 第三方庫 AMD
- sea.js 第三方庫 CMD
- 無論是 CommonJS、AMD、CMD、UMD、EcmaScript 6 Modules 官方規範
- 都是為了解決 JavaScript 的模組化問題
- CommonJS、AMD、CMD 都是民間搞出來的
- EcmaScript 是官方規範定義
- 官方看民間都在亂搞,開發人員為了在不同的環境使用不同的 JavaScript 模組化解決方案
- 所以 EcmaScript 在 2015 年釋出了 EcmaScript 2016 官方標準
- 其中就包含了官方對 JavaScript 模組化的支援
- 也就是說語言天生就支援了
- 但是雖然標準已經發布了,但是很多 JavaScript 執行換將還不支援
- Node 也是隻在 8.5 版本之後才對 EcmaScript 6 module 進行了支援
- 後面學 Vue 的時候會去學習
- less 編譯器 > css
- EcmaScript 6 -> 編譯器 -> EcmaScript 5
- 目前的前端情況都是使用很多新技術,然後利用編譯器工具打包可以在低版本瀏覽器執行。
- 使用新技術的目的就是為了提高效率,增加可維護性
-
var router = require(’./router’) 這一步不是載入router.js並執行該檔案嗎 為什麼還要執行app.use(router) app.use 不是開放靜態資源嗎 app.use(router)在這裡是什麼意思,掛載到 app 服務中的意思是? module.exports = app 也不懂
- 這裡涉及到一箇中間件的概念
- app.use 不僅僅是用來處理靜態資源的
- 還可以做很多工作
- 配置 body-parse 也是通過 app.use 來配置的
- 這叫中介軟體,其中有一套規則
-
npm init --yes 生成一個package.json 檔案 npm --save 檔名 又生成一個package-lock.json檔案,又生成的檔案和初始化生成的檔案有區別嗎?
- 當你安裝包的時候,新版的 npm 還會自動生成一個檔案:package-lock.json
-
為什麼模板引擎在app.js中引入之後在router.js中不引入可以直接使用,而express還需要在router.js中再引入一次 app.js中路由器掛載不是很懂 router.js中為什麼要建立一個路由器容器,不知道作用是幹什麼的 es6中的find方法不是很懂
- 中介軟體
- ECMAScript 6 的 find 方法