nodejs學習筆記

Nodejs學習文檔整理

一、nodejs是什麼:

         nodejs是一個是javascript能在後臺運行的平臺,具體來時只是使code javascript能在後臺運行,由於不在瀏覽器中運行因此不涉及到document等對象。(Mozilla 則指出 JavaScript 由Core JavaScript 和 Client JavaScript 組成。)javascript

二、nodejs如何運行javascript:

         nodejs利用谷歌的v8引擎來執行javascript代碼(V8認爲是javascript的引擎中最快的)。java

三、nodejs的特性:

         Node.js 用異步式 I/O 和事件驅動代替多線程,帶來了可觀的性能提高。nodejs採用單線程的非阻塞模式,可使CPU的利用率達到100%。(單線程是指咱們所寫的代碼代碼每次只能執行一行,nodejs自己不是單線程的,好比咱們調用了nodejs的ioAPI,系統會經過c/c++開闢其餘線程來完成,nodejs的底層是由c/c++完成的)nodejs自己提供HTTP服務,也就是說你能夠垂手可得地實現一個網站和服務器的組合而nodejs項目不須要相似tomcat等web容器。node

四、nodejs適合的作什麼,不適合什麼:

         適合:具備複雜邏輯的網站; 基於社交網絡的大規模 Web 應用;Web Socket 服務器; TCP/UDP 套接字應用程序; 命令行工具;交互式終端程序; 帶有圖形用戶界面的本地應用程序;單元測試工具; 客戶端 JavaScript 編譯器。mysql

         不適合:1. 計算密集型的程序,2. 單用戶多任務型應用3. 邏輯十分複雜的事務4. Unicode 與國際化c++

 

五、安裝開發環境:(值舉例window下的)

         下載nodejs開發環境http://nodejs.org/download/一直next,nodejs會自動將路徑加入到path中,安裝完能夠在cmd中輸入path查看環境變量。能夠在cmd中輸入node --version查看nodejs的版本。輸入node進入node的命令行模式,輸入console.log('測試');能夠看到在控制檯有想響應的輸出。ctrl+d 或者兩次ctrl+c退出命令行模式。程序員

         編寫第一個.js文件文件,在cmd中用node 文件名的方式就能夠執行。如 console.log("hello word!");web

六、創建web項目處理不一樣的請求: 

1.構建一個 路由模塊sql

模塊做用:提供請求的URL和其餘須要的GET及POST參數,隨後根據這些數據來執行相應的代碼。所以,咱們須要查看HTTP請求,從中提取出請求的URL以及GET/POST參數。數據庫

2.構建一個 處理請求的程序模塊express

模塊做用:存放不一樣的處理程序,和請求的URL相對應

3.將前面兩個模塊和http服務器 結合起來

1、構建一個 路由 模塊

新建一個 router.js 寫入

// 路由模塊,針對不一樣的請求,作出不一樣的響應
// handle 處理請求方法
 
function route(handle, pathname) {
  console.log("About to route a request for " + pathname);
 
  // 檢查給定的路徑對應的請求處理程序是否存在,若是存在的話直接調用相應的函數
  if (typeof handle[pathname] == "function") {
    handle[pathname]();
  } else {
    console.log("No request handler found for " + pathname);
  }
}
 
exports.route = route;

2、構建一個 處理請求 的程序模塊

新建一個 requestHandlers.js 寫入

// 存放不一樣的處理程序,和請求的URL相對應
function start() {
  console.log("Request handler 'start' was called.");
}
 
function upload() {
  console.log("Request handler 'upload' was called.");
}
 
exports.start = start;
exports.upload = upload;

3、將前面兩個模塊和http服務器 結合 起來

路由模塊的做用是:提供請求的URL和其餘須要的GET及POST參數,隨後根據這些數據來執行相應的代碼。所以,咱們須要查看HTTP請求,從中提取出請求的URL以及GET/POST參數。

咱們須要的全部數據都會包含在request對象中,該對象做爲onRequest()回調函數的第一個參數傳遞。可是爲了解析這些數據,咱們須要額外的Node.JS模塊,它們分別是url和querystring模塊。

在server.js裏面分別引入

url模塊:解析url

querystring模塊: 解析GET和 POST請求帶的參數 (後面再說)

修改 server.js

// 請求(require)一個 nodejs 自帶的 http模塊
// 請求(require)一個 nodejs 自帶的 url解析模塊
var http = require("http"),
  url = require("url");
 
// console.log(url);
 
// 調用 http模塊 提供的 createServer函數: 
// 返回一個對象,這個對象有一個 listen 方法,這個方法帶一個數值參數,
// 指定這個 http 服務器監聽的端口號.
 
function start(route, handle) {
 
  function onRequest(request, response) {
    // 獲取請求路徑
    var pathname = url.parse(request.url).pathname;
 
    // 關閉nodejs 默認訪問 favicon.ico
    if (!pathname.indexOf('/favicon.ico')) {
      return; 
    };
 
    // 收到來自 pathname 的請求
    console.log("Request for " + pathname + " received.");
 
    // 路由器處理
    route(handle, pathname);
 
    // 返回數據
    response.writeHead(200, {"Content-type": "text/plain"});
    response.write("Hello world!");
    response.end();
  }
 
  http.createServer(onRequest).listen(8888);
  console.log("Server has start!");
}
 
// 開放接口
exports.start = start;

修改 index.js

var server = require("./server"),
  router = require("./router"),
  requestHandlers = require("./requestHandlers");
 
// handle 保存不一樣請求路徑對應的處理方法
var handle = {};
 
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
 
// 傳入路由模塊方法, 路徑處理方法
server.start(router.route, handle);

4、測試

在 command 面板輸入 node index.js 

http://127.0.0.1:8888/start

七、鏈接數據庫以MySQL爲例:

    利用nodejs自帶的npm模塊(node 包管理模塊)加載數據庫鏈接模塊 在項目路徑下執行npm install mysql 能夠看到路徑下多了node_modules文件夾,裏面有MySQL文件夾。編寫文件執行。

var mysql  = require('mysql');

URL = 'localhost';

USERNAME = 'root';

PASSWORD = 'root';

DATABASE = 'testnode';

var mysqlcon;

mysqlcon = mysql.createConnection(

    {

        host: URL,

        user: USERNAME,

        password: PASSWORD,

        database: DATABASE

    }

);

 

exports.getDate = function getDate(){

    mysqlcon.query('select * from user where id=?',[20],

       function(err,re){

           if(err){

              console.log(err);

           }else{

              console.log(re);

           }

       }

    );

}

八、利用express框架快速進行web項目開發:

         1.必須得安裝express框架把:express的安裝命令也更新了,須要安裝express-generator

$ npm install -g express  //全局安裝

$ npm install -g express-generator //這段命令可別忘了,否則會提示「express命令找不到的」

利用指令   express -e 項目名稱 創建項目

2.創建網站工程結構:

express -e ejs  microblog

3.根據提示,進入文件夾安裝

cd microblog //microblog爲前面建立工程的文件夾

npm install

每次修改代碼後會自動重啓。懶程序員就期望這種省事省力的工具活着了:)

  安裝:npm install -g supervisor

  執行:supervisor app.js

相關文章
相關標籤/搜索