node學習筆記(連載)

這段時間玩了小程序、瀏覽器插件、koa建站,原本想寫幾篇文章總結一下的。迫於工做上有新需求要跟進,因此先寫寫讀書筆記吧。公司九點上班,不過彈性工做時間,你們基本上九點半以前到。而我做爲渣渣,八點半就到公司。來幹什麼呢?看一下子書,多學學準沒錯。css

最近在看一本名爲《Node.js 開發指南》。下面是個人我的讀書筆記,僅做爲之後溫故的時候用。下面以時間爲節點進行記錄。html

 

2017-09-27:node

  異步式 I/O 與 事件驅動:Node.js最大的特色就是採用異步式I/O與事件驅動的架構設計。傳統的架構是多線程模型,也就是爲每一個業務邏輯提供一個系統線程,經過系統線程切換來彌補同步式 I/O 調用時的時間開銷。Node使用的是單線程模型,對於全部的I/O都採用異步式的請求方式,避免繁瑣的上下文切換。Node在執行過程當中會維護一個事件隊列,程序在執行時進入事件循環等待下一個事件到來,每一個異步式I/O請求完成後會被推送到事件隊列,等待程序進程進行處理。mongodb

  舉個🌰:數據庫

  一個簡單的數據庫查詢操做,按照傳統的方式:小程序

  res = db.query('SELECT * from some_table');瀏覽器

  res.output();網絡

  Node方式:多線程

  db.query('SELECT * from some_table', function(res) {res.output();});架構

  分析: 傳統的方式確定會形成線程的阻塞,等待數據庫返回查詢結果以後纔會繼續執行下面的代碼。數據庫的查詢可能涉及磁盤讀寫、網絡通訊等。延時可能會有幾百毫秒,高併發的狀況下,線程長期阻塞等待,爲了應付新請求要不斷的增長線程,會浪費大量的系統資源,線程的增多會佔用大量的CPU時間來處理內存上下文的切換。

     Node會在第二個參數放入回調函數。進程在執行到db.query的時候,不會等待結果返回,繼續往下執行,直到進入事件循環。當數據庫查詢結果返回的時候,會將事件發送到隊列,等到線程進入事件循環之後,纔會調用以前的回調函數。

2017-09-28:

  今天我發現了一件事情,就是這本node書特麼是2012年寫的,驚了寶貝。。。我就是在公司書架上看到的一本,隨手一拿。不經感慨node這幾年發展的速度之快,2012年的時候跟如今2017年變化仍是很大的,裏面說到了node解決異步的問題能夠用async這個包,如今node更新至8.6.0,早已將async await更新進去了。在我開發的項目中已經用上了這個方法,拋棄了以前的 * yeild形式。

  最近在作公司的官網,主要是切圖爲主,別看簡單的切圖。。。設計師想出的動效卻是一套一套的。。。一個一個給他作了,發現css有不少有趣的東西是我以前沒有觸及的,有機會的話,仍是要把css系統的再過一遍,張鑫旭慕課網的教程仍是不錯的。你們有興趣能夠去慕課網搜一下。溜溜球~~~

2017-10-09: 

  國慶回家八天沒敲代碼,手感都生疏了。。。。

  今天試着用koa搭建個網站,試着連一下mongo(都是跑在本地的)。記錄一下步驟和心得,以避免以後忘記了。

  首先固然是要去mongo的官網下載數據庫https://www.mongodb.com/,我是折騰了半天才搞出來,網上不少教說是用brew裝,我嫌麻煩就直接去官網下了。下載過來以後進入安裝目錄,找到mongod.exe對應的文件夾,在控制行輸入 ./mongod,數據庫就在本地跑起來了,跑起來以後能夠去下載一個數據庫可視化工具studio 3t(之前叫mongochef),非商業版免費。而後打開這個軟件建立鏈接,端口默認是27017,本身給數據庫取個名字。

  在程序例面經過mongoose這個包去操做數據庫,如圖:鏈接數據庫

      

  鏈接成功以後,能夠去看看mongoose建立表結構和模型的文檔。http://mongoosejs.com/docs/guide.html

  表結構就是數據庫表字段的字段類型,以下

  

  模型其實就是定義數據表的意思,建立模型的時候要引入表結構(Schema)做爲參數,以下

  

  模型被某個模塊引入的時候,它其實就是一個構造函數,new出來的實例都擁有構造函數裏的方法,以下

  

  當你運行這段代碼的時候,數據庫寫入了相應的字段,以下

  

相關文章
相關標籤/搜索