js學習總結----初步瞭解node

来源:http://www.cnblogs.com/diasa-fly/archive/2017/07/31/7263171.html
-Advertisement-
Play Games

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")
});

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這個小程式旨在通過自然語言對話查詢快遞、身份證、天氣、詩歌、詞典等等的功能。 自然語言對話,即使用中文語言直接對程式下命令,比如:‘查一下天氣’,“幫我查一下123456這個運單號吧”,“我想聽李白的靜夜思”等等。 如果還是不明白,請閱讀博客 https://i.cnblogs.com/EditPo ...
  • (ฅ´ω`ฅ) 來源《JavaScript高級程式設計第三版》,建議學習時間 2小時 ...
  • 最近開發項目中碰見很多時間戳的轉換,現在總結一下: 1、時間戳轉化成時間格式 function(times){ return new Date(parseInt(times) * 1000).toLocaleString().replace(/:\d{1,2}$/,' '); } 2、時間戳轉換為距 ...
  • 數據結構 效果圖 之前已經寫過用Vue實現圖上效果的方法,此篇為用knockout.js實現上圖效果的方法,同樣通過模板將數據綁定到頁面。 模板代碼 請對比之前一篇Vue的方法,瞭解兩種方式模板綁定方式的不同。 模板寫完,在頁面上使用模板。 html代碼 JavaScript代碼 css樣式同之前一 ...
  • 在第三章中(canvas學習總結三:繪製路徑-線段)我們提高Canvas繪圖環境中有些屬於立即繪製圖形方法,有些繪圖方法是基於路徑的。 立即繪製圖形方法僅有兩個strokeRect(),fillRect(),兩個方法都是用來繪製矩形的。 Canvas的API提供瞭如下三個方法,分別用於矩形的清除,描 ...
  • <!doctype html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name=" ...
  • 數據結構為數組中包含對象--樹形結構,用Vue組件的寫法實現以下的效果: 樹形列表,縮進顯示層級,第5級數據加底色,數據樣式顯色,點擊展開摺疊數據。本文為用Vue實現方式,另有一篇為用knockout.js的實現方法。 html代碼 組件模板代碼 JavaScript代碼 數據顯示完畢,接下來是樣式 ...
  • http equiv顧名思義,相當於http的文件頭作用,它可以向瀏覽器傳回一些有用的信息,以幫助正確和精確地顯示網頁內容,與之對應的屬性值為content,content中的內容其實就是各個參數的變數值。 引用 meat標簽的http equiv屬性語法格式是:<meta http equiv=" ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...