JS是一門“運行在客戶端(運行在瀏覽器)”的“輕量級”的腳本編程語言 JS目前不僅僅只能在瀏覽器中運行,還可以在NODE中運行 node的優點:基於谷歌V8引擎的,具有強大的io操作,基於事件驅動的非同步 編程。 1、什麼是node node是一個環境,供JS代碼執行的環境,我們可以把他等價於瀏覽器, ...
JS是一門“運行在客戶端(運行在瀏覽器)”的“輕量級”的腳本編程語言
JS目前不僅僅只能在瀏覽器中運行,還可以在NODE中運行
node的優點:基於谷歌V8引擎的,具有強大的io操作,基於事件驅動的非同步 編程。
1、什麼是node
node是一個環境,供JS代碼執行的環境,我們可以把他等價於瀏覽器,只不過我們一般都會把node這個環境安裝到伺服器端,這樣的話我們就可以在伺服器端使用JS編寫程式了,也就是JS不僅僅是客戶端的語言,也是伺服器端的語言...
2、node && 瀏覽器
NODE採用的是谷歌的V8引擎來渲染JS的(運行的速度快、穩定、我們編寫的JS代碼不需要考慮相容)
瀏覽器中的全局JS對象是window,而node環境下的全局JS對象是global
瀏覽器是安裝在客戶端的,為了保護客戶端的安全,基本上不可能提供用JS對客戶電腦磁碟上的文件進行操作的功能;但是node環境中提供了對應的I/O操作(伺服器上文件的操作),我們使用JS可以對伺服器磁碟下的文件進行增刪改查。
NODE是基於事件驅動的 / 非同步編程(我們在NODE環境下編寫的JS程式一般都是非同步編程的)
NODE提供給JS很多新的方法:http.createServer、fs.writeFileSync、fs.readFileSync...
3、如何讓JS代碼在NODE中執行?
利用webStrom嵌入了NODE的環境,直接把編寫的JS通過右鍵“run xxx.js”在NODE環境中執行(不建議大家經常這樣使用,因為有些時候我最新執行的操作其實會運行前幾次的緩存,因為有些時候會有緩存)
在命令視窗中執行
在當前要執行的JS文件目錄下,shift+右鍵 =>在此處打開命令視窗 => node xxx.js 相當於把JS代碼在NODE環境中執行了。
在NODE中執行JS代碼和瀏覽器中執行一樣,如果JS代碼發生了修改,想要看到最新的效果需要重新執行對應的JS文件。
在命令視窗中執行node,然後開始編寫對應的JS代碼測試即可(RPEL命令操作),和在瀏覽器的控制台編寫代碼測試一樣。
4、NODE模塊
內置模塊(NODE環境天生提供的):http(createServer...)、fs(writeFileSync、readFileSync)、url...
自定義模塊:我們自己定義的模塊
在NODE環境中,我們在當前的項目下創建了一個JS文件,就相當於創建了一個模塊,例如:新建一個a.js,就相當於創建了a模塊
如果需要提供一些方法給其他的模塊使用,則需要通過module.exports把方法導出,例如:在A模塊中寫了module.exports = {fn:fn} / module.exports.fn = fn
如果現在B模塊中使用,我們需要先導入var a = require("./a");這樣就可以調取A模塊導出的方法 a.fn()
第三方模塊:別人寫好的模塊我們拿來使用 在NODE中如果需要使用別人的模塊,需要使用npm這個命令進行管理 https://www.npmjs.com/
安裝: npm install 第三方模塊名稱 -g (安裝在NODE的全局環境中)
卸載:npm uninstall 第三方模塊名稱 -g
安裝成功後在JS中通過 var less = require("less");把剛纔安裝的第三方模塊導入到JS中,這樣的話我們就可以使用這個模塊中提供的方法了 less.render...
5、服務創建成功後,如何的向伺服器發送請求
在瀏覽器中輸入 http://localhost:埠號/
在瀏覽器中輸入 http://本機的IP地址:埠號/
下麵是常用的http、fs、url的方法的代碼:
//導入三個常用的NODE內置模塊 var http = require("http"), fs = require("fs"), url = require('url');//URL模塊提供了一個方法,url.parse(str),用來解析url地址。第一個參數為傳遞的url,第二個參數預設是false,變為true後,返回結果的query中存儲的是經過處理解析後的結果:把傳遞進來的多組數據以鍵值對的方式進行存儲 //1、HTTP /* http.createServer 創建一個服務,變數server就是我們創建出來的那個服務 server.listen:為這個服務監聽一個埠80 */ var server = http.createServer(function(request,response){ //當客戶端向伺服器端的當前服務(埠號是80這個服務)發送一個請求,並且當前服務已經成功接收到這個請求後 //request(請求):存放的是所有客戶端的請求信息,包含客戶端通過問號傳參的方式傳遞給伺服器的數據內容 // console.log(request.url);//客戶端請求的地址,我們服務端通過request.url獲取到的是不包括localhost或者ip地址的信息例如:index.html?name=zhangsan&age=7 var urlObj = url.parse(request.url,true), pathname = urlObj.pathname, query = urlObj.query; //根據請求的URL地址(具體的是根據地址中的pathname)獲取到對應資源文件中的源代碼 if(pathname === "/1.html"){ //fs.readFileSync([path+name],[encode])同步讀取指定文件夾中的內容:文件中的內容讀取不完不執行下麵的操作 var con = fs.readFileSync('./1.html',"utf-8"); } //response(響應):提供了向客戶端返回內容和數據的方法 //response.write:向客戶端返回內容 //response.end:告訴伺服器響應結束了(一定要加) response.write(con); response.end(); }); server.listen(80,function(){ //當服務創建成功,並且埠號監聽成功之後執行這個回調函數 console.log("server is create success,listening on 80 port") });