nodejs學習筆記一

来源:http://www.cnblogs.com/chuaWeb/archive/2016/01/29/nodejs-npm.html
-Advertisement-
Play Games

a.nodejs安裝 nodejs的安裝沒有什麼說的預設安裝即可。安裝包官網下載即可:nodejs官網 本人用的是window的安裝包node-v4.2.6-x64.msi 安裝完成後打開命令行查看使用node -v命令查看安裝node版本,有版本號展示說明安裝成功啦 需要創建一個文件夾作為node


a.nodejs安裝


  nodejs的安裝沒有什麼說的預設安裝即可。安裝包官網下載即可:nodejs官網

  本人用的是window的安裝包node-v4.2.6-x64.msi

  安裝完成後打開命令行查看使用node -v命令查看安裝node版本,有版本號展示說明安裝成功啦

  

  需要創建一個文件夾作為nodejs伺服器文件夾,比如本人在D:\chua下創建了一個chuaNodejs。這個文件夾將作為node服務端的根路徑,也就是一個獨立的工程。

  

  nodejs的基礎使用可以參考菜鳥教程的基礎教程,這裡不分析了。本文是記錄本人的實例學習nodejs。

  需要特別說明的是require使用相對路徑時相對的是當前文件。

 

b.npm


  NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問題,常見的使用場景有以下幾種:

  1.從NPM伺服器下載第三方包到本地使用。

  2.從NPM伺服器下載並安裝第三方命令行程式到本地使用。

  3.將自己編寫的包或命令行程式上傳到NPM伺服器供別人使用。

  由於新版的nodejs已經集成了npm,所以之前npm也一併安裝好了。同樣可以通過輸入 "npm -v" 來測試是否成功安裝。命令如下,出現版本提示表示安裝成功:

  

  npm安裝命令為:"npm install " + 模塊名稱

  比如有一個很好用的基於nodejs的框架express框架。Express 是一個簡潔而靈活的 node.js Web應用框架, 提供了一系列強大特性幫助你創建各種 Web 應用,和豐富的 HTTP 工具。使用 Express 可以快速地搭建一個完整功能的網站。我要構建的網站會基於這個框架,所以安裝先。

  首先使用命令定位到我的伺服器目錄chuaNodejs,然後使用安裝命令

  

  以上命令會將 Express 框架安裝在當前目錄的 node_modules 目錄中, node_modules 目錄下會自動創建 express 目錄, 並將其保存到依賴列表中(--save命令可以參考Ruthless npm的常用命令)。以下幾個重要的模塊是需要與 express 框架一起安裝的:

  • body-parser - node.js 中間件,用於處理 JSON, Raw, Text 和 URL 編碼的數據。

  • cookie-parser - 這就是一個解析Cookie的工具。通過req.cookies可以取到傳過來的cookie,並把它們轉成對象。

  • multer - node.js 中間件,用於處理 enctype="multipart/form-data"(設置表單的MIME編碼)的表單數據。

    npm install body-parser --save
    npm install cookie-parser --save
    npm install multer --save

  需要註意的是安裝分為npm 的包安裝分為本地安裝(local)、全局安裝(global)兩種,從命令行來看,差別隻是有沒有-g而已,比如

npm install express      //本地安裝
npm install express -g   //全局安裝

  本地安裝

  1. 將安裝包放在 ./node_modules 下(運行 npm 命令時所在的目錄),如果沒有 node_modules 目錄,會在當前執行 npm 命令的目錄下生成 node_modules 目錄。

  2. 可以通過 require() 來引入本地安裝的包。

  項目中的庫都不會全局安裝,npm install 時安裝在 ./node_modules 里,這些庫你只需要 require() 就能用了。

 

  全局安裝

  1. 將安裝包放在 /usr/local 下。

  2. 可以直接在命令行里使用。

  3. 不能通過 require() 來引入本地安裝的包。

  一般安裝在全局的都是有命令行需求的包,比如 bower,你需要在命令行中使用 bower 這個命令。

 

  測試:能否只安裝一次第三方包多個項目使用。本人當前的項目是chuaNodejs,在該項目下安裝了express。在此目錄下創建一個執行文件server.js,代碼如下(其中index.html是放在當前目錄下的,你可以自己隨便寫一個)

var express = require("express");

var app = express();

//指定靜態文件路勁static,可以直接訪問static下的文件test.png:http://localhost:8080/test.png
app.use(express.static('static'));

app.get("/",function(req,res){
    console.log(__dirname);
    res.sendFile(__dirname + "/index.html")
})

var server = app.listen(8080,function(){
    var host = server.address().address;
    var port = server.address().port;

    console.log("應用實例,訪問地址為 http://%s:%s", host, port)
})

  執行server

  

  瀏覽器訪問

  

  這個時候我又寫了一個執行文件test.js放在當前目錄,源碼如下

var express = require('express');
var app = express();

app.get('/', function (req, res) {
   res.send('Hello World');
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("應用實例,訪問地址為 http://%s:%s", host, port)

})

  然後也執行他,在瀏覽器中訪問效果為

  

  說明同一個工程下可以監聽多個埠。如果同時執行的是一個埠(比如server.js和test.js同為8080埠)則會報錯,所以要避免

  

 

  所以本人在chuaNodejs下建立了一個當獨的一個文件來作為一個獨立的項目,如下

  

  其中server.js更改為(其中app.use(express.static('chuayyqing/static'))中的路徑是相對於express包的安裝根目錄的。當前express是安裝在chuaNodejs下的,所以路徑是相對於chuaNodejs目錄

var express = require("express");
var app = express();

app.use(express.static('chuayyqing/static'));

app.get("/",function(req,res){
    console.log(__dirname);
    res.sendFile(__dirname + "/index.html")
})

var server = app.listen(8080,function(){
    var host = server.address().address;
    var port = server.address().port;

    console.log("應用實例,訪問地址為 http://%s:%s", host, port)
})

  執行代碼

  

  去瀏覽器運行即可。  

  如果下次來了一個新項目,就可以在chuaNodejs目錄下再建一個文件來處理即可,照樣可以使用已經安裝好的express包。

 

  在代碼中引用模塊(使用require引用模塊)分為以下幾類

  1)http、fs、path等,原生模塊,這個是安裝nodejs的時候就已經安裝好的,代碼中直接使用,如require("http")。

  2)./mod或../mod,相對路徑的文件模塊,這裡面每一個模塊就是一個js文件,比如server.js中引用同目錄下的test.js:require("./test.js")。

  3)/pathtomodule/mod,絕對路徑的文件模塊。

  4)mod,非原生模塊的文件模塊,比如第三方的包express,安裝成功以後直接使用,如require("express")。

  

  今天的筆記就先到這裡,至少首頁可以跑起來了。

 

  如果覺得本文不錯,請點擊右下方【推薦】!


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

-Advertisement-
Play Games
更多相關文章
  • 類似於幻燈片的切換效果,有時需要在網頁中完成一些圖片的自動切換效果,比如廣告,宣傳,產品介紹之類的,那麼單純的切就沒意思了,需要在切換的時候通過一些效果使得切換生動些。 比較常用之一的就是窗帘切換了。 先貼上完成的效果。 實現原理不複雜,在動的一條一條的稱之為“窗帘條”或者是“strip”,每一個s
  • 最近剛好弄了一個關於在移動端的滾動條,多多少少有點感觸! touch中共有touchstart、touchmove和touchend三個事件; touchstart:觸摸開始的時候觸發 touchmove:手指在屏幕上滑動的時候觸發 touchend:觸摸結束的時候觸發 並且每個觸摸事件都包括了三個
  • css3和html5,不會js也可以做動畫—3D翻轉
  • css實現評分效果,其實是css sprit (css精靈)的延伸應用,效果的實現主要是由 background-position 屬性移
  • JavaScript模擬右鍵菜單
  • 本文前面部分轉自木-葉的博文,後面有本人自己的一些總結和體會。 如果有人問你,GET和POST,有什麼區別?你會如何回答? 我的經歷 前幾天有人問我這個問題。我說GET是用於獲取數據的,POST,一般用於將數據發給伺服器之用。 這個答案好像並不是他想要的。於是他繼續追問有沒有別的區別?我說這就是個名
  • 1任何對象都有__proto__屬性 屬性值Object2並不是所有對象都有prototype屬性。只有方法對象(構造函數)以及基本數據類型還有Array,有prototype屬性;並且所有方法(對象)的prototype屬性都是object 在網上有很多關於原型的講解。在這裡我用console.l
  • 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...