日韩偷拍一区二区,国产香蕉久久精品综合网,亚洲激情五月婷婷,欧美日韩国产不卡

在線客服
Node.js開發實戰詳解圖書
人氣:53

Node.js開發實戰詳解

涵蓋Node.js基礎知識、模塊與NPM、Web應用、UDP服務、異步編程思想、異常處理過程、操作數據庫的方法、框架開發與應用、開發工具等
  • 所屬分類:圖書 >計算機/網絡>程序設計>其他  
  • 作者:[黃丹華] 等
  • 產品參數:
  • 叢書名:Web開發典藏大系
  • 國際刊號:9787302349471
  • 出版社:清華大學出版社
  • 出版時間:2014-04
  • 印刷時間:2014-04-01
  • 版次:1
  • 開本:12開
  • 頁數:--
  • 紙張:膠版紙
  • 包裝:平裝
  • 套裝:

內容簡介

書由淺入深,、系統地介紹了Node.js開發技術。書中提供了大量有針對性的實例,供讀者實踐學習,同時提供了大量的實踐練習題及詳盡的解答,幫助讀者進一步鞏固和提高。本書重在代碼實踐,閱讀時應多注重實踐編程。本書提供8小時配套教學視頻及實例源代碼下載,便于讀者高效、直觀地學習。

本書共分為11章。涵蓋的主要內容有:Node.js的概念、應用場景、環境搭建和配置、異步編程;Node.js的模塊概念及應用、Node.js的設計模式;HTTP簡單服務的搭建、Node.js靜態資源管理、文件處理、Cookie和Session實踐、Crypto模塊加密、Node.js與Nginx配合;UDP服務器的搭建、Node.js與PHP之間合作;Node.js的實現機制、Node.js的原生擴展與應用;Node.js的編碼習慣;Node.js操作MySQL和MongoDB;基于Node.js的Myweb框架的基本設計架構及實現;利用Myweb框架實現一個簡單的Web聊天室;在線聊天室案例和在線中國象棋案例的實現;Node.js的日志模塊、curl模塊、crontab模塊、forever模塊、xml模塊和郵件發送模塊等應用工具。

本書非常適合從事編程開發的學生、教師、廣大科研人員和工程技術人員研讀。建議閱讀本書的讀者對JavaScript的語法和PHP的相關知識有一定的了解。當然,如果你是初學者,本書也是一本難得的參考書。

編輯推薦

騰訊Web前端工程師揭秘原生Node.js的開發實踐,不借助任何第三方框架,通過編寫原生代碼,講解Node.js應用開發

深入詳解Node.js原生文檔,根據原生API實踐和大量應用實例,詳細分析Node.js的開發過程,了解原生Node.js的API應用

涵蓋Node.js基礎知識、模塊與NPM、Web應用、UDP服務、異步編程思想、異常處理過程、操作數據庫的方法、框架開發與應用、開發工具等

注重實踐,430多個代碼小示例、30多個編程實踐練習題及解答、5個大型系統,贈送8小時教學視頻(需下載)

推薦閱讀(請點叢書鏈接查看)

《網頁制作與網站建設實戰大全+JavaScript網頁特效實例大全+DIV+CSS網頁樣式與布局實戰詳解(套裝全3冊)》

《Highcharts網頁圖表制作實例詳解》

《HTML 5移動Web開發實戰詳解》

《Xamarin iOS移動開發實戰》

《Swift入門很簡單》

《iOS編程實戰寶典》

《iOS開發范例實戰寶典(基礎篇)》

《iOS開發范例實戰寶典(進階篇)》

作者簡介

黃丹華,騰訊公司Web前端工程師。專注于PHP與Node.js的開發與應用。較早時間就開始關注Node.js的發展,并系統地學習和研究了國內外大量的Node.js學習資料。獨創Mywebl.0的Node.js框架,目前正在開發Myweb2.0的Node.js框架。自營chinaNode.js微信公眾賬號,通過公眾賬號給國內外Node.js愛好者提供一個學習交流的平臺。個人技術博客中提供的Node.js入門、資源分享和Nde.js異常分析等文章,被眾多的Node.js愛好者所認可。

目錄

第1章Node.js基礎知識

1.1概述

1.1.1Node.js是什么

1.1.2Node.js帶來了什么

1.2Node.js配置開發

1.2.1Windows配置

1.2.2Linux配置

1.2.3HelloWorld

1.2.4常見問題

1.3異步編程

1.3.1同步調用和異步調用

1.3.2回調和異步調用

1.3.3獲取異步函數的執行結果

1.4本章實踐

1.5本章小結

第2章模塊和NPM

2.1什么是模塊

2.1.1模塊的概念

2.1.2Node.js如何處理模塊

2.1.3Node.js實現Web解析DNS

2.1.4Node.js重構DNS解析網站

2.1.5exports和module.eXports

2.2NPM簡介

2.2.1NPM和配置

2.2.2Express框架

2.2.3jade模板

2.2.4forever模塊

2.2.5socket.io模塊

2.2.6request模塊

2.2.7Formidable模塊

2.2.8NPM模塊開發指南

2.3Node.js設計模式

2.3.1模塊與類

2.3.2Node.js中的繼承

2.3.3單例模式

2.3.4適配器模式

2.3.5裝飾模式

2.3.6工廠模式

2.4本章實踐

2.5本章小結

第3章Node.js的Web應用

3.1HTTP服務器

3.1.1簡單的HTTP服務器

3.1.2路由處理

3.1.3GET和POST

3.1.4GET方法實例

3.1.5POST方法實例

3.1.6HTTP和HTTPS模塊介紹

3.2Node.js靜態資源管理

3.2.1為什么需要靜態資源管理

3.2.2Node.js實現簡單靜態資源管理

3.2.3靜態資源庫設計

3.2.4靜態文件的緩存控制

3.3文件處理

3.3.1FileSystem模塊介紹

3.3.2圖片和文件上傳

3.3.3jade模板實現圖片上傳展示功能

3.3.4上傳圖片存在的問題

3.3.5文件讀寫

3.4Cookie和Session

3.4.1Cookie和Session

3.4.2Session模塊實現

3.4.3Session模塊的應用

3.5Crypto模塊加密

3.5.1Crypto介紹

3.5.2Web數據密碼的安全

3.5.3簡單加密模塊設計

3.6Node.js+INginx

3.6.1Nginx概述

3.6.2Nginx的配置安裝

3.6.3如何構建

3.7 文字直播實例

3.7.1 系統分析

3.7.2 重要模塊介紹

3.8 擴展閱讀

3.9 本章實踐

3.10 本章小結

第4章 Node.js高級編程

4.1 構建UDP服務器

4.1.1 UDP 模塊概述

4.1.2 UDP Server構建

4.2 UDP服務器應用

4.2.1 應用分析介紹

4.2.2 UDP Server端(圖片處理服務器)實現

4.2.3 UDP Client端(Web Server)

4.2.4 Jade頁面實現

4.2.5 應用體驗

4.3 Node.js與PHP合作

4.3.1 UDP方式

4.3.2 腳本執行

4.3.3 HTTP方式

4.3.4 三種方式的比較

4.4 本章實踐

4.5 本章小結

第5章 深入Node.js

5.1 Node.js的相關實現機制

5.2 Node.js原生擴展

5.2.1 Node.js擴展開發基礎V8

5.2.2 Node.js插件開發介紹

5.3 Node.js異步擴展開發與應用

5.4 本章實踐

5.5 本章小結

第6章 Node.js編碼習慣

6.1 Node.js規范

6.1.1 變量和函數命名規范

6.1.2 模塊編寫規范

6.1.3 注釋

6.2 Node.js異步編程規范

6.2.1 Node.js的異步實現

6.2.2 異步函數的調用

6.2.3 Node.js異步回調深度

6.2.4 解決異步編程帶來的麻煩

6.3 異常邏輯的處理

6.3.1 require模塊對象不存在異常

6.3.2 對象中不存在方法或者屬性時的異常

6.3.3 異步執行的for循環異常

6.3.4 利用異常處理辦法優化路由

6.3.5 異常情況匯總

6.4 本章實踐

6.5 本章小結

第7章 Node.js與數據庫

7.1 兩種數據庫介紹

7.1.1 MySQL介紹

7.1.2 MongoDB模塊介紹

7.2 Node.js與MySQL

7.2.1 MySQL安裝配置應用

7.2.2 MySQL數據庫接口設計

7.2.3 數據庫連接

7.2.4 數據庫插入數據

7.2.5 查詢一條數據記錄

7.2.6 修改數據庫記錄

7.2.7 刪除數據庫記錄

7.2.8 數據條件查詢

7.3 Node.js與MongoDB

7.3.1 MongoDB的安裝以及工具介紹

7.3.2 MongOD的啟動運行方法

7.3.3 MongoDB的啟動運行

7.3.4 MongoDB數據庫接口設計

7.3.5 數據插入

7.3.6 數據修改

7.3.7 查詢一條數據

7.3.8 刪除數據

7.3.9 查詢數據

7.4 MySQL與MongoDB性能

7.4.1 測試工具及測試邏輯

7.4.2 MySQL性能測試代碼

7.4.3 MongoDB性能測試代碼

7.4.4 性能測試數據分析

7.5 本章實踐

7.6 本章小結

第8章 MyWeb框架介紹

8.1 MyWeb框架介紹

8.1.1 MyWeb框架涉及的應用

8.1.2 MyWeb框架應用模塊

8.2 MyWeb源碼架構

8.2.1 框架MVC設計圖

8.2.2 框架文件結構

8.2.3 擴展閱讀之更快地了解新項目

8.3 框架源碼分析

8.3.1 框架入口文件模塊

8.3.2 路由處理模塊

8.3.3 Model層基類

8.3.4 Controller層基類

8.4 本章實踐

8.5 本章小結

第9章 框架應用MyChat

9.1 編碼前的準備

9.1.1 應用分析

9.1.2 應用模塊

9.1.3 功能模塊設計

9.2 系統的編碼開發

9.2.1 Model層

9.2.2 Controller層

9.2.3 View層

9.3 項目總結

9.3.1 forever啟動運行項目

9.3.2 系統應用體驗

9.3.3 系統開發總結

9.4 擴展閱讀之MyWeb 2.0的介紹

9.5 本章實踐

9.6 本章小結

第10章 Node.js實例應用

10.1 實時聊天對話

10.1.1 系統設計

10.1.2 系統的模塊設計

10.1.3 系統編碼實現

10.2 聯網中國象棋游戲

10.2.1 系統設計

10.2.2 系統的模塊設計

10.2.3 系統編碼實現

10.2.4 系統體驗

10.3 本章小結

第11章 Node.js實用工具

11.1 日志模塊工具

11.1.1 日志模塊介紹

11.1.2 日志模塊實現

11.1.3 日志模塊應用

11.2 配置文件讀取模塊

11.2.1 配置文件解析模塊介紹

11.2.2 配置文件解析模塊實現

11.3 curl模塊

11.3.1 curl模塊介紹

11.3.2 curl模塊實現

11.3.3 curl模塊應用

11.4 crontab模塊

11.4.1 crontab模塊介紹

11.4.2 crontab模塊設計實現

11.4.3 crontab模塊應用

11.5 forever運行腳本

11.5.1 forever運行腳本介紹

11.5.2 forever運行腳本實現

11.5.3 forever運行腳本應用

11.6 xml模塊的應用

11.6.1 xml解析模塊介紹

11.6.2 xml模塊設計實現

11.6.3 xml模塊應用

11.7 郵件發送模塊應用

11.7.1 郵件模塊介紹

11.7.2 郵件模塊設計實現

11.7.3 郵件模塊應用

11.8 本章小結

在線預覽

第3 章 Node.js 的Web 應用

本章將介紹Node.js 的Web 應用,主要包括HTTP 服務器、Node.js 靜態資源管理、

Node.js 的文件處理功能、Cookie 和Session 的應用、Node.js 安全加密,介紹Node.js

如何與Nginx 搭檔。

本章將會結合"文字直播Web 應用"來貫穿本章的知識點。文字直播應用是一個長連

接多請求的應用,Node.js 在這方面具有非常大的優勢,因此本章使用該例子來介紹本章知

識點。該應用使用Node.js 開發可以在很大程度上降低服務器壓力,同時給予用戶一個更

好的在線體驗。文字直播Web 應用需求簡單介紹如下。

用戶:直播員(需登錄),游客。

直播方式:直播員登錄后臺,輸入相應的直播信息,可包含圖片和文字。

技術統計:需在線實時記錄運動員數據。

游客討論:游客可實時進行在線討論。

微博分享:游客可通過騰訊微博和新浪微博分享直播內容。

3.1 HTTP 服務器

本節將介紹如何應用Node.js 創建一個HTTP 服務器來處理客戶端的POST 和GET 數

據請求,以及服務器端Node.js 如何實現url 路由請求處理。會介紹Node.js 模塊中的

HTTP 和HTTPS。重點是介紹如何實現Node.js 的服務器路由。

3.1.1 簡單的HTTP 服務器

創建一個HTTP 服務器的相關知識點在Node.js 的配置開發已經有所介紹。應用

Node.js HTTP 模塊中的createServer() API。代碼如下:

var http = require('http');

/ 應用Node.js 的原生模塊HTTP 來實現Web 服務器創建 /

http.createServer(function(req, res) {

res.writeHead(200, { 'Content-Type': 'text/plain' });

res.end('Hello World\n');

}).listen(1337, "127.0.0.1");

console.log('Server running at 127.0.0.1:1337/');

http.createServer()接收一個request 事件函數,該事件函數有兩個參數request 和

Node.js 開發實戰詳解

·78 ·

response,request 是 http.ServerReques1的實例對象,response 則為http.ServerRespons2實例

對象。request 對象主要是獲取請求資源信息,包括請求的url、客戶端參數、資源文件、

header 信息、HTTP 版本、設置客戶端編碼等。Response 對象主要是響應客戶端請求數據,

包括HTTP 的header 處理、HTTP 請求返回碼、響應請求數據等。

http.createServer()調用返回的是一個server 對象,server 對象擁有listen 和close 方法,

listen 方法可以指定監聽的IP 和端口。

實例介紹:創建一個HTTP 服務器,獲取并輸出請求url、method 和headers,同時根

據請求資源做不同的輸出。

當請求'/index',返回200,并且返回一個html 頁面數據到客戶端。

當請求'/img',返回200,并且返回一個圖片數據。

若為其他情況,則返回404,并輸出'can not find source'。

先創建HTTP 服務器,使用switch 判斷請求資源類型分配。代碼如下:

/ http.js /

var http = require('http'),

fs = require('fs'),

url = require('url');

/ 創建http 服務器 /

http.createServer(function(req, res) {

/ 獲取Web 客戶端請求路徑 /

var pathname = url.parse(req.url).pathname;

/ 打印客戶端請求req 對象中的url、method 和headers 屬性 /

console.log(req.url);

console.log(req.method);

console.log(req.headers);

/ 根據pathname,路由調用不同處理邏輯 /

switch(pathname){

case '/index' : resIndex(res); // 響應HTML 頁面到Web 客戶端

break;

case '/img' : resImage(res); // 響應圖片數據到Web 客戶端

break;

default : resDefault(res); // 響應默認文字信息到Web 客戶端

break;

}

}).listen(1337);

[代碼說明]

var pathname = url.parse(req.url).pathname:獲取客戶端請求路徑。

console.log(req.url):輸出請求url。

console.log(req.method):輸出請求方法。

console.log(req.headers):輸出請求header 信息。

resIndex(res):判斷請求參數是否為/index,如果是就執行resIndex(res)。

resImage(res):判斷請求參數是否為/img,如果是就執行resImage(res)。

resDefault(res):返回404 not find。

1 參考網站nodejs.org/api/http.html#http_class_http_serverrequest。

2 參考網站nodejs.org/api/http.html#http_class_http_serverresponse。

第3 章 Node.js 的Web 應用

·79·

記住要把res 參數傳遞到處理返回函數,如果需要執行HTTP 響應請求時,也必須將

req 傳遞到處理函數。代碼如下:

/

@desc 創建resIndex 響應首頁html 函數

@parameters res HTTP 響應對象

/

function resIndex(res){

/ 獲取當前index.html 的路徑 /

var readPath = __dirname + '/' +url.parse('index.html').pathname;

var indexPage = fs.readFileSync(readPath);

res.writeHead(200, { 'Content-Type': 'text/html' });

res.end(indexPage);

}

/

@desc 創建resImage 響應image 函數

@parameters res HTTP 響應對象

/

function resImage(res){

/ 獲取當前image 的路徑 /

var readPath = __dirname + '/' +url.parse('logo.png').pathname;

var indexPage = fs.readFileSync(readPath);

res.writeHead(200, { 'Content-Type': 'image/png' });

res.end(indexPage);

}

/

@desc 創建resDefault 響應404 函數

@parameters res HTTP 響應對象

/

function resDefault(res){

res.writeHead(404, { 'Content-Type': 'text/plain' });

res.end('can not find source');

}

[代碼說明]

resIndex(res)處理并返回'Content-Type': 'text/html'的html 頁面。

esImage(res)處理并返回'Content-Type': 'image/png'的png 圖片。

resDefault(res)處理并返回404 輸出'can not find source'。

執行http.js,打開瀏覽器,輸入不同的請求資源,查看和比較不同的返回結果。

node http.js

(1)打開瀏覽器,輸入127.0.0.1:13371,如圖3-1 所示返回了404,并輸出了'can not find

source'。

1 本文輸入的192.168.1.120:1337 為個人的一個測試服務器,和本地服務器IP 地址127.0.0.1:1337

是一致的,讀者輸入的是127.0.0.1:1337。

Node.js 開發實戰詳解

·80 ·

圖3-1 瀏覽127.0.0.1:1337 返回Web 頁面圖

(2)HTTP 新增請求路徑/index,127.0.0.1:1337/index,如圖3-2 所示返回200,并輸出

index.html 頁面內容。

圖3-2 瀏覽127.0.0.1:1337/index 返回Web 頁面圖

(3)改變HTTP 路徑為/img,127.0.0.1:1337/img,如圖3-3 所示返回200,并輸出了一

個png 的logo 圖片。

圖3-3 瀏覽127.0.0.1:1337/img 返回Web 頁面圖

如圖3-4 所示為服務器端輸出的結果,這里只截取了部分,輸出的結果包含了每次請

求的url,method 和請求headers。可以看到每次HTTP 請求都會自帶一個/favicon.ico 請求,

這個是網頁的ico,是大多數瀏覽器自我發出的請求,如果需要去除這個請求,可以設置返

回一個有效的/favicon.ico 文件,并且指定expire 時間。

第3 章 Node.js 的Web 應用

·81·

圖3-4 Node.js 服務器運行流水日志圖

3.1.2 路由處理

了解Node.js 服務器創建功能實現后,接下來介紹根據不同客戶端的請求資源路徑,

來分配服務器處理邏輯。在3.1.1 節中已經初步了解到可以使用switch 來實現路由,當然

這是一種路由處理辦法,但是在請求資源非常復雜時,使用switch 來判斷處理就會顯得很

龐大,而且難以維護和擴展。本節將介紹兩種路由處理方法,大家可根據自己的想法設計

出更多的路由處理方法,另外在本章的習題1 中還會提供第三種路由處理方法。

1.特定規則請求路徑

特定規則請求參數:可以根據用戶請求的url,依據特定的規則得到相應的執行函數,

例如請求參數/index,根據特定規則轉化為resIndex(res, req)方法。

這里將HTTP 的請求路徑/index,根據一定的規則得到其處理函數resIndex,當我們需要

新增處理邏輯時,例如/img,則必須在服務器端新增處理函數resImg。具體實現過程如下:

var param = pathname.substr(2),

// 獲取客戶端請求的url 路徑,并獲取其及時個參數,將其小寫轉為大寫

firstParam = pathname.substr(1,1).toUpperCase();

// 根據pathname 獲取其需要執行的函數名

var functionName = 'res' + firstParam + param;

response = res;

if(pathname == '/'){

resDefault(res)

} else if (pathname == '/favicon.ico') {

return;

}

else{

eval(functionName + '()');

}

[代碼說明]

firstParam = pathname.substr(1,1).toUpperCase():將參數的首字母改為大寫,例如

/index,獲取i,并將其改為大寫的I;

Node.js 開發實戰詳解

·82 ·

functionName = 'res' + firstParam + param:獲取需要執行的函數名,res 為前綴,

firstParam 為首字母,例如/index,firstParam 為I,param 為ndex,因此functionName

為resIndex;

pathname == '/':無參數時返回default 頁面;

pathname == '/favicon.ico':對于該請求返回空信息;

eval(functionName + '()'):使用eval 執行字符串函數。

該方法有一個很明顯的缺點,就是res 和req 參數必須設置為全局變量,否則函數中無

法獲取該res 和req 對象參數。

這里只是介紹了一種實現方式,可以根據/param 參數來判斷需要調用的模塊和函數,

對于小項目而言可以實現這種路由處理。

2.利用附帶參數來實現路由處理

利用自帶參數來實現路由處理:url 路徑指定需要執行的模塊,通過在HTTP 的url 中

攜帶一個c 參數,表示需要調用的模塊中的方法名,從而實現簡單的路由處理。例如

/image?c=img 表示獲取index 模塊中img 方法,同樣/index?c=index 表示獲取index 模塊中

的index 方法。具體實現是創建client.js 作為服務器模塊,代碼如下:

/ 首先require 加載兩個模塊 /

var http = require('http'),

url = require('url'),

querystring = require("querystring");

/

@desc 創建web 服務器

/

http.createServer(function(req, res) {

/ 獲取用戶請求的url 路徑 /

var pathname = url.parse(req.url).pathname;

if (pathname == '/favicon.ico') { // 過濾瀏覽器默認請求/favicon.ico

return;

}

/ 根據用戶請求的url 路徑,截取其中的module 和controller /

var module = pathname.substr(1),

str = url.parse(req.url).query,

controller = querystring.parse(str).c,

classObj = '';

try { // 應用try catch 來require 一個模塊,并捕獲其異常

classObj = require('./' + module);

}

catch (err) { // 異常錯誤時,打印錯誤信息

console.log('chdir: ' + err);

}

if(classObj){ // require 成功時,則應用call 方法,實現類中的方法調用執行

classObj.init(res, req);

classObj[controller].call();

} else { // 調用不存在的模塊時,則默認返回404 錯誤信息

res.writeHead(404, { 'Content-Type': 'text/plain' });

res.end('can not find source');

}

}).listen(1337);

第3 章 Node.js 的Web 應用

·83·

[代碼說明]

var pathname = url.parse(req.url).pathname:獲取客戶端的HTTP 請求路徑,也就是

請求模塊;

controller = querystring.parse(str).c:獲取請求參數c,也就是請求模塊的方法;

classObj = require('./' + module):使用try catch 獲取一個require 模塊;

媒體評論

本書從實踐出發,一步步地引領讀者深入學習Node.js的原生Web開發技術。書中的一些案例分析來自于作者的開發實踐,有很強的實用性和指導意義。總之,本書對于Node.js愛好者來說是一本非常有價值的參考書,值得閱讀。

——騰訊國際業務部社區平臺開發總監劉志浩

本書高屋建瓴地闡述了Node.js的理論知識,又深入淺出地介紹了其技術細節,談及的編程技巧可謂波譎云詭,而其應用實踐更是變幻莫測。總之,筆觸簡練深沉,力透紙背,行文如流水,讀來酣暢淋漓,全文一氣呵成,渾然一體,實乃作者扛鼎大作,亦屬業界佳品。

——騰訊公司后臺開發工程師 王震

本書結合工作項目,帶你領略一番JavaScript在服務器端的英姿,內容涵蓋了Node.js的精髓,很多內容是作者在項目應用中的成果。可以說,本書是當前市場上最為詳細而實用的一本Node.js開發圖書。

——騰訊公司CDG前端開發工程師 郭湃欽

本書就像描述一段曠世奇戀,隨著劇情的深入,每個人心中的記憶之門都在無意中被打開,而書中一個驚人的秘密也隨之被揭開:原來Node.js技術在騰訊帥哥工程師的筆下居然是如此引人入勝,相見恨晚。

——騰訊公司博學測試工程師吳曉丹

網友評論(不代表本站觀點)

來自無昵稱**的評論:

2015-09-21 23:35:32
來自樂提**的評論:

不錯

2015-10-29 06:30:07
來自無昵稱**的評論:

太貴了,做這行沒辦法,讀起來還行

2016-02-15 16:24:15
來自無昵稱**的評論:

應該是放久了,有些舊

2016-03-06 08:15:00
來自如此就**的評論:

很有實用學習價值

2016-03-07 11:55:42
來自dangdan**的評論:

不錯

2016-03-08 10:18:19
來自perfri**的評論:

買回來收藏的

2016-04-26 16:39:24
來自j309z**的評論:

紙質好。

2016-06-15 22:12:08
來自西西撒**的評論:

挺好的,當當的東西還是值得信任.就是物流方面需要加強點.

2016-08-15 12:03:19
來自人送外**的評論:

不錯,物流快。

2016-09-04 15:19:32
來自無昵稱**的評論:

嗯,不錯很喜歡

2016-10-23 15:58:12
來自無昵稱**的評論:

很好

2016-11-05 16:34:22
來自無昵稱**的評論:

評論有積分賺哦

2016-11-24 08:48:37
來自無昵稱**的評論:

不錯的一本書

2016-12-09 10:56:50
來自匿名用**的評論:

例子挺多的,可以好好學習參考一下

2017-03-23 23:26:15
來自い***事**的評論:

包裝太差勁,一個角都裂開了

2017-06-02 12:57:40
來自獨上蘭**的評論:

非常好的一本書,推薦閱讀!

2017-07-15 07:33:39
來自匿名用**的評論:

書很好 發貨超快 閃速

2017-07-21 16:01:19
來自芯***(**的評論:

喜歡,整體感覺不錯,包裝也很好

2017-07-27 16:51:33
來自smesoft**的評論:

性價比高,是正版書,推薦購買。

2017-07-31 09:59:20
來自匿名用**的評論:

好書好書,幫朋友買的

2017-08-02 10:56:35
來自阿輝78**的評論:

很不錯的書,斷斷續續看了部分,性價比高!

2017-08-14 15:53:24
來自無昵稱**的評論:

內容很好就是書中有錯誤不知道是印刷錯誤還是盜版,目前閱讀到17頁發現的一個錯誤

2017-09-02 12:27:27
來自mr流星**的評論:

寫的很詳細

2017-09-28 10:46:24
來自不會飛**的評論:

書的質量還可以,內容還沒有開始看。就是剛收到貨封皮就掉了,我也是真心醉了。

2015-09-24 09:18:17
來自bluesan**的評論:

書的內容不錯 例子也很實用 只不過 node. js發展太快 版本不同一些代碼的寫法也不同了 。需要自己結合網上查的資料來學習

2015-03-20 12:56:10
來自無昵稱**的評論:

網上盛傳好,還沒有看多少。但是作者的精神而言應該錯不了的。書很大氣,很好。

2017-10-28 21:19:11
來自蘇格拉**的評論:

用來學習前端知識— —知乎看到推薦買的,就買來了!

2017-08-10 18:33:07

免責聲明

更多出版社
主站蜘蛛池模板: 苍溪县| 桓台县| 鹰潭市| 芜湖县| 仙游县| 漳州市| 宁南县| 当阳市| 固原市| 阜城县| 政和县| 海原县| 博兴县| 湘西| 晋城| 丘北县| 大连市| 巨野县| 福安市| 安岳县| 阿克| 阿荣旗| 罗城| 九寨沟县| 沅陵县| 浦江县| 宁城县| 彭山县| 霍邱县| 互助| 扎兰屯市| 黄大仙区| 内丘县| 历史| 山东省| 巨鹿县| 石河子市| 兰西县| 茌平县| 突泉县| 太仆寺旗|