官方說明javascript
1.NodeJS宣稱其目標是「旨在提供一種簡單的構建可伸縮網絡程序的方法」。php
2.node是一個基於Chrome V8引擎進行代碼解釋的、輕量、可伸縮的具備事件驅動和非阻塞I/O機制的js運行環境。前端
3.node適合處理高併發要求的項目,適合高I/O密集型應用。java
因此:不適合CPU密集型應用;node
CPU密集型應用給Node帶來的挑戰主要是:因爲JavaScript單線程的緣由,若是有長時間運行的計算(好比大循環),將會致使CPU時間片不能釋放,使得後續I/O沒法發起。不過,能夠分解大型運算任務爲多個小任務,使得運算可以適時釋放,不阻塞I/O調用的發起。jquery
4.node當下很火。webpack
/-----------------------------------------------------------------------/git
個人理解web
對於node.js個人瞭解是從我開始使用git和webpack的時候,由於要用到node環境,並且要接觸一部分的node控制檯代碼,不過這些都是簡單的瞭解,讓我知道了,node是可讓git和webpack運行的一種安裝環境,而且是個npm包管理工具,你須要什麼代碼,node的包也會有一部分,好比說jquery,bootstrap等;ajax
而後就是開始看到node官網的文檔,瞭解到node能夠做爲後臺的語言進行一系列的操做,可以本身搭建服務器,做爲服務器的時候咱們會用到http模塊,這屬於node自帶的模塊,而後就是createserver搭建服務器,後來以爲一直npm建立開啓服務器比較麻煩,就在網上了解到有個supervisor這個插件吧,能夠監聽服務器,而後就開始考慮做爲後臺的功能,比後臺給數據以前本身先測試一下,再好比,瞭解一下服務器與終端之間的交流Socket和H5新增的webSocket,作點聊天室的demo,固然了有點醜陋,不過基本的對話功能也是基於sorket實現了。
有時候node也須要進行與數據庫的連接,數據庫的端口爲27017---下面以node中的路由/liuyan---->數據庫User,集合liuyan作一個簡單的查找demo
MySQL我就有點看不懂了,而對於SQLServer也是僅限於學校的知識,那麼在網上學的時候就看到了另外一種Mongodb,(稍後談一下下);
var router = express.Router(); var mongodb = require("mongodb").MongodbClient; var db_str = "mongodb://127.0.0.1:27017/{{你數據庫的名字}}" router.get("/liuyan", (req, res) => { // res.render("liuyan",{}); var findLy = function(db, cb) { var conn = db.collection("liuyan"); conn.find({}).toArray((err, result) => { cb(result); }) } mongodb.connect(db_str, (err, db) => { if (!err) { findLy(db, (result) => { res.render("liuyan", { result: result }); db.close(); }) } }) })
簡單說一下Mongodb,我用這個數據庫也是因爲node.js,並且,控制檯的代碼我也沒有記得很清楚,因此就常在小火箭V3可視化工具裏操做Mongodb的數據。
Mongodb:做爲數據庫是一種不難的數據庫,他的流行應該歸於他的分佈式和非關係型數據庫上,以及操做簡單,有大量的查詢指令,可是他已經不支持32位系統了,而且佔用空間比較大。
並且和通常數據庫不一樣的是,他的三元素構成是數據庫,集合,文檔,固然也和關係型數據庫中的數據庫,表,行相對應。而且,使用前(僅限於window系統,Mac等有錢了再買吧)須要將在盤符下的mogodb/bin/mongod.exe和mongo.exe依次打開,敲黑板這是重點操做,而且,直接盤符下還要有一個空的db文件夾,用來存儲數據。
後來,瞭解到node能夠建立後臺項目,摸索着用express框架作了個我的的系統,express -e pro建立pro文件目錄結構,
1 pro 2 |----bin 3 | |----www 4 | 5 |----public 6 | |----images 7 | |----javascript 8 | |----stylesheet 9 | 10 |----router 11 | |----index.js 12 | |----users.js 13 | 14 |----view 15 | |----index.ejs 16 | |----error.ejs 17 | 18 |----app.js
固然,express也須要進行npm install下載,頁面雖然說不夠完美不過也在一直完善,頁面的ejs文件也是從最初的index.ejs到如今的有了簡單的登陸註冊留言等,雖然裏面的數據是我寫的假的數據,可是也是我用node.js連接數據庫,再使用mongodb的查詢或者是寫入的代碼進行的瀏覽以及寫入,而數據庫的控制檯的代碼查看着有點費勁,我就用他的可視化工具「v3小火箭」進行操做。
--------------------------------------------------------------------------------------------
在接下來的瞭解中發現,node.js不是很適合做爲純粹的後臺,和java,php這種成熟的語言來講,他自己就有必定的缺陷,好比不能充分利用cpu,並且他是單線程的,有一部分可能性會崩潰。但他也有好處,高併發的場景下很實用,就是由於他的非阻塞I/O機制,很適合那種大量ajax請求的狀況,並且他和前端js的合做很好,讓我一個前端人員也有機會接觸到了後臺的語言。
雖然如今node.js出現沒幾年,東西比較新,可是,他做爲和js合做的很融洽的後臺,再加上很是好用的npm,能夠加快咱們的代碼開發速度.
不過要說node火了,我以爲否則,而爲隱隱以爲這是假象,雖然node用起來真的很順心,也放寬了擼代碼時間。不過,就目前來講,node還算是挺新的,還算是在開荒的狀態,想讓他真的火起來,可能還須要一點時間。而他火起來的緣由,大概是,前端同志們被後臺大哥們"打壓"的過久了吧,哈哈哈,好不容易有了可能翻身的機會,抓住機會就開始學,固然,不可否認node和前端的接觸真的很融洽,並且接觸的Mongodb這個數據庫也不是很艱難。
(ps:作項目和它火不火有什麼關係啊,項目以最優的水平作出來,bug調試好,我以爲就很不錯了,哈哈哈)