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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...