標籤:系統 lock 非同步 javascrip 驗證 url 比較 mis 代碼
Node.js, Express的伺服器搭建過程的問題
Express : node.js 的架構,根據2012年BYvoid的說法,是node.js官方唯一推薦的架構
怎麼搭建項目? - 安裝nodejs->npm->express - express 的問題:
2017年, express-generator已經被獨立成命令列工具了,所以要用 npm install express-generator 這樣才能用express命令
怎麼啟動項目?
啟動伺服器可以用node app.js,因為app.js裝載了express模組並且運行了必須的函數; 或者用npm start,它會讀取package.json執行命令
express架構的代碼: 會出現views, config, apps目錄
可能要用到的知識(文法)
一個網頁的代碼中會有一些地方需要js處理,或者處理DOM節點,要用ajax - jQuery - 架構的常見分層(比如路由、post) - express跟請求響應的方法 app.all、app.get、app.post, app.use
有人說all,get,post是三個別名,其實是扯淡,但是三個方法也真的差不多,它只是決定了get方法和post方法訪問某個url的時候對應的處理方法。但是這種設計是非常反常理而且看不出有多大意義的,不是很懂這種設計思想。一般情況下不應該是傳遞參數嗎? 但是另外的on和addEventListener倒是明顯地有問題了,這兩個函數完全相同,但是名字不一樣。反正都是當事件觸發的時候調用了函數。
注意中介軟體
目前為止不是很懂中介軟體和架構的關係。而且也不是很清楚架構跟http請求的順序,中介軟體的功能等等。
如果單純靠網上的代碼是比較難實現大型系統的。 要做好模組化,盡量做好層次分級和可以配置。 大型系統的架構很複雜,可能還要有mongodb儲存。
在寫爬蟲的時候經常要等待防止被識別,可能會看到下面的方法,儘管如此這個是沒什麼用的,因為會大大降低效率,還不如用代理, - javascript代碼的setTimeOut(可以用來迴圈調用自身),這個是基礎js裡有的函數,但是看起來也是非同步回掉函數。
回呼函數
說到代理,剛剛看了文法感覺是只要在request方法裡改了http頭部的某個url就OK了?這個需要驗證。
在頁面解析方面: cheerio跟一般的jquery的文法相似,但是它是一個縮水版本(在cheerio的官網有說),比如祖先元素必須確定(用id)
Promise (可選外部模組) 解決回調地獄 - .then函數=>用來解決回調地獄陷阱
其他設計缺陷
Node.js問題在哪裡? require不像C++一樣會對產生的命名衝突進行檢測, 當核心模組(http, fs)跟其他模組命名衝突時,優先載入核心模組 - js的調試錯誤在瀏覽器的console是可以看的
visual studio code
在Visual Studio Code中是可以安裝Node.js的外掛程式的。好處跟其他的語言一樣,在VS Code裡看代碼比較好看。
Node.js, Express的伺服器搭建過程的問題