本文章主要寫給那些想了解node語言的開發,個人目標但願你們經過閱讀本篇文章可以簡單使用node進行開發,以及瞭解一些事件驅動的異步編程風格,主要分node的背景
,安裝配置
,模塊建立引用
等幾個方面描述html
建議你們在閱讀本篇文章途中 能夠親自
嘗試一下我所帶來的小例子,這樣才能更好
的掌握!node
Node.js
,或者Node,是一個可讓JavaScript 運行在服務器端的平臺
。它可讓JavaScript 脫離瀏覽器的束縛運行在通常的服務器環境下,就像運行Python、Perl、PHP、Ruby程序同樣。你能夠用Node.js 輕鬆地進行服務器端應用開發,Python、Perl、PHP、Ruby 能作的事情Node.js 幾乎都能作,而能夠作得更好。web
Node.js 是一個爲實時Web (Real-timeWeb)
應用開發而誕生的平臺,它從誕生之初就充分考慮在實時響應
、超大規模數據要球下架構的可擴展性
。這使得它摒棄了傳統平臺依靠多線程來實現高併發的設計思路
,而採用了線程
、異式I/O
、事件驅動式
的程序設計模型。這些特性不只帶來了大的性能提高
,還減小多線程程序設計的複雜性,進而提升了開發效率。Node.js 最初是由Ryan Dahl 發起的開源項目,後來被Joyent 公司注意到。Joyent 公司將Ryan Dahl 招人旗下,所以如今的Node.js 由Joyent 公司管理並維護。儘管它誕生的時間( 2009年) 還不長,但它的周圍配經造成了一個龐大的生態系統。Nodejs 有着強大而靈活的包管理器(nodepackagemanager,npm)
,目前已經有上萬個第三方模塊,其中有網站開發框架,有MySQL、PostgreSQL、MongoDB 數據庫接口,有模板語言解析、CSS 生成T 具郵件、加密、圖形、調試支持,甚至還有圖形用戶界面和操做系統API 具。由VMware 公司創建的雲計算平臺CloudFoundry 率先支持了Node.js。2011年6月,微軟宣佈與Joyent 公司合做,將Node.js 移植到Windows,同時Windows Azure 雲計算平臺也支持Node.js。Node.js 目前還處在迅速發展階段,相信在不久的將來它必定會成爲流行的Web應用開發平臺。數據庫
讓咱們從如今開始,一同探索Node.js 的美妙世界吧!express
在window上面很容易安裝node 只須要訪問node官網,點擊DownLoad連接,而後選擇window Installer,下載安裝包,下載完成後打開 點擊Next 如圖,就能夠安裝完成npm
爲了檢測安裝是否完成,打開命令行CMD,而後輸入node 若是下載成功 便進入node交互模式 如圖:編程
經過這種方式安裝還會自帶NPM 咱們能夠直接在使用它!json
Mac OS X上安裝Node.js
只須要訪問node官網,點擊DownLoad連接,而後選擇Macintosh Installer,下載安裝包,下載完成後運行安裝包,根據提示完成安裝:瀏覽器
node和npm都會安裝到/usr/local/bin目錄下,安裝過程須要管理員權限,安裝完後在終端輸入node回車進入node交互模式,若是提示-bash:node :command not found 那就是沒有已正確的方式安裝完成。須要從新安裝bash
進入node交互環境
能夠進行加減乘除
運算
接下來建立一下第一個應用 也能夠叫模塊 !
打開你所經常使用的文本編輯器輸入
var http = require('http'); //經過require對象(指令)來引用http模塊 //參數request表明是發送請求對象 response表明是響應請求的對象 http.createServer(function(req,res){ //經過http對象的方法createServer建立一個服務器 res.writeHead(200, {'Content-Type': 'text/html'}); //規定數據的content-type文本類型爲text/html res.write('<h1>Node.js</h1>'); //響應請求而後write 字體大小爲h1標準的node.js字樣 res.end('<p>Hello World</p>'); //發送響應數據爲 hello world; }).listen(8888); //該服務監聽本地host 端口8888 console.log('Server running at http://127.0.0.1:8888/'); //在終端告訴用戶該服務運行與8888端口
保存爲hello.js
而後你打開當前目錄,打開命令行輸入 node hello.js 你就會在命令行處看到Server running at http://127.0.0.1:8888/ ,而後就能夠打開瀏覽器輸入這個http://127.0.0.1:8888/ 就能夠看到剛纔寫的響應數據
**是否是特別簡單!!!!!
學習node.JS必須懂的一些地方
此次先講前倆點,和稍微滲透3 4 點
第一點!
模塊是Node.js應用程序的基本組成部分,文件和模塊是一一對應的。換句話說,一個Node.js文件就是一個模塊,這個文件多是JavaScript代碼,JSON或者編譯過的C/C++擴展。
var http= require('http'),其中http是Node.js的一個核心模塊,其內部是用C++實現的,外部用Javascript封裝。咱們經過require函數獲取這個模塊 ,從而才能使用其中的對象。
第二點!
在Node.js,建立一個模塊很是簡單,由於一個文件就是一個模塊,咱們要關注的問題僅僅只是如何在其餘文件獲取這個模塊,Node.js提供了exports和require倆個對象,其中exports是模塊公開的接口,require用於從外部獲取一個模塊的接口,即獲取模塊的exports對象。
// 建立模塊 //module.js var name; exports.setName = function(thyName){ name = thyName; } exports.sayHello = function() { console.log('hello' + name) }
同級目錄下建立getmodule.js
//引入模塊 // getmodule.js var myModule = require('./module'); myModule.setName('zhangsan'); myModule.sayHello(); 在命令行運行node getmodule.js 輸出// hello zhangsan
以上該例子中,module.js經過exports對象吧setName 和 sayHello做爲模塊的訪問接口,在getmodule.js中經過
require('./module')加載這個模塊,而後就能夠之間訪問module.js中exports對象的成員函數了
require 不會重複加載模塊,不管調用多少次require,得到的模塊都是同一個,修改一下上面的getmodule.js
//修改getmodule.js var hello1 = require('./module'); hello1.setName('zhangsan'); var hello2 = require('./module'); hello2.setName('zhangsan2'); hello1.sayHello(); // 輸出結果爲zhangsan2!
由於變量hello1和變量hello2執行都是同一個實例,所以hello1.setName的結果被hello2.setName覆蓋!結果由後者決定
把一個對象封裝到模塊中 例如:
//hello.js function hello (){ var name; this.setName = function(thyName) { name = thyName; } this.sayHello = function() { console.log('hello' + name); } };
module.exports = Hello; //導出該模塊接口; 若是按導出方法哪有 exports.Hello = Hello 引入require('./hello').Hello;
按上面module.exports = Hello導出 引入模塊; //getHello.js var Hello = require('./hello'); hello = new Hello(); hello.setName('zhangsan'); hello.sayHello(); //輸出hello zhangsan
第三點 /建立包
包是在模塊基礎上更深一步的抽象,Node.js的包類型與C/C++的函數庫或者Java/.Net的類庫.將某個獨立的功能封裝起來,用於發佈
更新,依賴管理和版本控制.Node.js根據CommonJS規範實現了包機制,開發了npm來解決包發佈和獲取;
node.js的包就是一個目錄,包含一個JSON格式的包說明文件package.json. package.json必須在包的頂層目錄下,其餘遵循CommonJS的規範不是特別嚴格
第四點 /包管理
node.js包管理,即npm是Node.js官方提供的包管理工具,它已經成爲了Node.js包的標準發佈平臺,npm提供了命令行工具,你能夠很方便去下載 安裝 升級 刪除包! 也能夠發佈 維護你本身的包!
npm install(i) pagejson_name //下載的格式 本地模式 末尾加-g (--global) 就是全局模式 npm uninstall pagejson_name //刪除的格式 末尾加-g (--global) 就是全局模式 //等等不少命令 能夠去搜索 就不一一列舉了
原本應該把node一些核心模塊一塊說了的 好比全局對象 process console 事件驅動events 事件發射器 error事件 繼承EventEmitter 等等
可是今天確實身體不適,還請諒解,可能會休息幾天 因此提早把這版發出來,暫時把他定位爲初版 對於node的探索,我還會更新 第二版的,下一章節除了會補全此次沒有講到了還會帶你們利用node來進行web開發!初步定稿爲1月2號!
但願你們能夠經過看這篇文章能有收穫,最簡單的證實就是把項目用到node的配置文件再去拿出來看看,最起碼知道它是怎麼個流程,不必定知道它幹什麼,可是知道它從哪來 是導出還說引用!這就是進步!
//進一步學習參考這篇書 學習
https://www.nodebeginner.org/