nodejs(一)基礎介紹

一. nodejs介紹

因爲網上關於這種介紹性質的文章太多了,在此推薦幾篇相關的介紹,以及提取一些關鍵字,你們簡單瞭解一些便可,如想繼續深刻的同窗,能夠自行在網上搜索相關資源html

:thumbsup:相關文章推薦node

:point_down:淺談我的理解正則表達式

首先咱們來看一下Nodejs官網的描述npm

Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境json

Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效緩存

提取關鍵字模塊化

  • Nodejs是一個==JavaScript運行環境==,即給JavaScript代碼提供運行平臺,能夠運行JavaScript代碼的一個環境
  • Nodejs使用了 ==事件驅動,非阻塞式I/O模型==
  • Nodejs優勢:輕量又高效
  • 剛接觸的同窗不用去糾結事件驅動和非阻塞式I/O模型是什麼,後面對nodejs有必定的瞭解以後,再回來查看這個介紹,必定會有不同的認識

二. nodejs安裝

nodejs的安裝相對比較簡單,這裏推薦以下安裝教程,對着該教程一步步操做下去便可成功安裝nodejs函數

菜鳥教程:nodejs安裝工具

安裝完成以後,在命令行輸入 node -v 便可查看當前nodejs版本,因爲我本地安裝的nodejs版本是 V8.11.3,因此建議跟着個人筆記學習的小夥伴安裝一樣的nodejs版本,避免後續出現一些不可預見的小問題學習

nodejs安裝完成以後,會附帶的幫咱們安裝另外一個工具,npm(node package manager)

npm是什麼:經過npm的全稱咱們能夠得知,npm是一個nodejs的包管理工具,咱們可使用npm工具便捷的管理咱們須要使用到的nodejs模塊包

這裏一樣建議,剛接觸的同窗不用糾結npm這個東西,跟着筆記一步一步的去使用,就能明白npm是什麼,給咱們的開發帶來了哪些便捷,想深刻了解的小夥伴,這裏推薦兩個連接

三. npm命令

如下是npm常見命令,能夠先混個眼熟,後續須要使用再來查看

前5個我用黑體標粗的是平時咱們開發過程當中使用得最多的幾個命令

  1. **npm -v:**查看npm版本。
  2. **npm init:**初始化後會出現一個package.json配置文件。能夠在後面加上-y ,快速跳過問答式界面。
  3. **npm install:**會根據項目中的package.json文件自動下載項目所需的所有依賴。
  4. **npm install 包名 --save-dev(npm install 包名 -D):**安裝的包只用於開發環境,不用於生產環境,會出如今package.json文件中的devDependencies屬性中。
  5. **npm install 包名 --save(npm install 包名 -S):**安裝的包須要發佈到生產環境的,會出如今package.json文件中的dependencies屬性中。
  6. npm list:查看當前目錄下已安裝的node包。
  7. npm list -g:查看全局已經安裝過的node包。
  8. npm --help:查看npm幫助命令。
  9. npm update 包名:更新指定包。
  10. npm uninstall 包名:卸載指定包。
  11. npm config list:查看配置信息。
  12. npm 指定命令 --help:查看指定命令的幫助。
  13. npm info 指定包名:查看遠程npm上指定包的全部版本信息。
  14. npm config set registry https://registry.npm.taobao.org: 修改包下載源,此例修改成了淘寶鏡像。
  15. npm root:查看當前包的安裝路徑。
  16. npm root -g:查看全局的包的安裝路徑。
  17. npm ls 包名:查看本地安裝的指定包及版本信息,沒有顯示empty。
  18. npm ls 包名 -g:查看全局安裝的指定包及版本信息,沒有顯示empty。

四. 模塊化的概念

Node.js採用的是CommonJs規範,在NodeJS中,通常將代碼合理拆分到不一樣的JS文件中,每個文件就是一個模塊,而文件路徑就是模塊名。

在編寫每一個模塊時,都有requireexportsmodule三個預先定義好的變量可供使用。

4.1 詳細說明

  • **require:**用於在當前模塊中加載和使用其餘模塊,傳入一個模塊名,返回一個模塊導出對象。模塊名可以使用相對路徑(以./開頭),或者是絕對路徑(以/C:之類的盤符開頭)。另外,模塊名中的.js擴展名能夠省略。如下是一個例子。

    var person1 = require("./person");
    var person2 = require("./person.js");
    複製代碼
  • exports:exports對象是當前模塊的導出對象,用於導出模塊公有方法和屬性。別的模塊經過require函數使用當前模塊時獲得的就是當前模塊的exports對象。如下例子中導出了一個公有方法。

    exports.hello = function(){
        console.log("hello world!");
    }
    複製代碼
  • module:經過module對象能夠訪問到當前模塊的一些相關信息,但最多的用途是替換當前模塊的導出對象。例如模塊導出對象默認是一個普通對象,若是想改爲一個函數的話,可使用如下方式。

    module.exports = function(){
        console.log("替換當前模塊化導出對象")
    }
    複製代碼
    • 以上代碼中,模塊默認導出對象被替換爲一個函數。

4.2 模塊初始化 和主模塊

**模塊初始化:**一個模塊中的JS代碼僅在模塊第一次被使用時執行一次,並在執行過程當中初始化模塊的導出對象。以後,緩存起來的導出對象被重複利用。

**主模塊:**經過命令行參數傳遞給NodeJS以啓動程序的模塊被稱爲主模塊。主模塊負責調度組成整個程序的其它模塊完成工做。例如經過如下命令啓動程序時,main.js就是主模塊。

node main.js
複製代碼

4.3 Demo示例

在同級目錄下面,建立counter.jsmain.js,以下所示

//counter.js

var i = 0;

function count() {
    return ++i;
}

exports.count = count;
複製代碼
// main.js
var counter1 = require('./counter');
var counter2 = require('./counter');

console.log(counter1.count());
console.log(counter2.count());
console.log(counter2.count());
複製代碼

經過node 命令運行主模塊,運行測試:

  • 不管counter被初始化多少次,都是同一個counter對象

五. 總結

  • NodeJS是一個JS腳本解析器,任何操做系統下安裝NodeJS本質上作的事情都是把NodeJS執行程序複製到一個目錄,而後保證這個目錄在系統PATH環境變量下,以便終端下可使用node命令。
  • 終端下直接輸入node命令可進入命令交互模式,很適合用來測試一些JS代碼片斷,好比正則表達式。
  • NodeJS使用CMD模塊系統,主模塊做爲程序入口點,全部模塊在執行過程當中只初始化一次。
  • 使用npm工具來管理nodejs中的各類包模塊
相關文章
相關標籤/搜索