nodejs基礎部分(一)

来源:https://www.cnblogs.com/flypig-322/archive/2019/01/01/10201993.html
-Advertisement-
Play Games

前言 業餘時間充實自我,入手學習瞭解一下傳說中純事件驅動/非阻塞的js架構 --nodejs 好記性不如爛筆頭,本系列隨筆用於整理記錄學習nodejs過程中的心得 目錄 1. nodejs簡介 nodejs基於Google開源js引擎V8開發,從2009年誕生起就獲得強烈關註,是一套用來編寫高性能網 ...


前言

  業餘時間充實自我,入手學習瞭解一下傳說中純事件驅動/非阻塞的js架構 --nodejs

  好記性不如爛筆頭,本系列隨筆用於整理記錄學習nodejs過程中的心得

目錄

  1. nodejs簡介
  2. nodejs安裝
  3. nodejs載入模塊

1. nodejs簡介

  nodejs基於Google開源js引擎V8開發,從2009年誕生起就獲得強烈關註,是一套用來編寫高性能網路伺服器的js工具包。簡單的說 nodejs 就是運行在服務端的 JavaScript。

  優勢:

  •   純事件驅動,非同步非阻塞。框架內部提供的大多api都是非同步調用風格,無需等待某個操作完成
  •   單線程。這裡的單線程指主線程為單線程,所有的阻塞的全部放入一個線程池中,然後主線程通過隊列的方式跟線程池來協作
  •   易入手。基於js語言,js是開發者必備的一項技能,不用再單獨新學一門陌生的語言,降低了學習的門檻
  •   高效穩定。選擇了目前最快的瀏覽器內核V8做為執行引擎,保證了Nodejs的性能和穩定性

  弱勢:

  •   業務複雜程式。面對複雜業務,需要大量計算顯然是沒有後臺代碼給力
  •   記憶體管控。js是一門弱類型語言,數據結構較為單一。對象都是基於json,無法使用記憶體管控
  •   不需要非同步的程式。對於nodejs的非同步特性來說,不需要非同步操作的程式可能會比較麻煩

2. nodejs安裝

  由於本人基於Windows系統開發,這裡只介紹Windows環境安裝過程。

  打開nodejs官網找到自己環境相匹配的安裝文件下載(需要區分32位還是64位),這裡我安裝的最新版本v10.15.0-x64

  下載地址:https://nodejs.org/en/download/releases/

  安裝下載好的文件,(傻瓜式安裝一直下一步即可)

  安裝過後WIN-R打開cmd命令視窗運行指令 node -v查看是否對應安裝的版本,即是否安裝成功

  

 

  擴展:安裝和應用包管理(NPM)

  NPM是三位一體的系統——第三方包庫,管理電腦中安裝的包的機制以及定義包依賴關係。當我們使用npm去安裝一些第三方庫的時候,安裝包會放在運行NPM命令時所在的目錄中的node_modules文件夾中,從v0.6.0以後npm就已經包含在nodejs的安裝包內。

  在cmd命令視窗執行npm init先初始化NPM,以填寫表單方式初始化生成一個新的package.json文件。(都有預設值一直下一步即可)

  初始化後即可通過NPM安裝需要的插件,通過命令指向安裝的文件夾路徑,再執行安裝命令npm install <package name>@<version>安裝所需的第三方包(version不填代表最新版本),命令行完成之後,我們會看到在文件夾中就新建了一個node_modules文件夾,並且把我們需要的庫已經安裝在文件夾中,如下圖:

   

  

  NPM兩種模式:

  本地模式(預設):該模式只工作在本地文件夾層次,不會引起系統範圍的變化,如果想安裝包時不對本地已安裝的包造成影響,本地模式十分合適。

  全局模式:全全局模式適合安裝那些全局可用的包,比如提供命令行實用工具的包或不被應用程式直接調用的包。

  安裝包: npm install  <package name>@<version>

  安裝全局模式包:npm install -g ...

  卸載包:npm uninstall  ...

  卸載全局模式包:npm uninstall -g ...

  更新包:npm update ...

  更新全局模式包:npm update -g ...

3. nodejs載入模塊

  nodejs取消了JavaScript預設的全局名稱空間,使用commonjs模塊系統取代,可以直接使用require函數載入模塊,如果模塊存在並且沒有錯誤語法,那麼調用require()函數就會返回這個模塊對象

  3.1.載入核心模塊

  核心模塊是nodejs框架內部自帶且非常重要常用的,核心模塊不能通過文件路徑引用只能通過模塊名引用,即使已經存在一個與其同名的第三方模塊也會被優先載入。例如想載入和使用http核心模塊

  var http = require('http');

  這裡會返回http模塊對象,細節可參見nodejs的httpapi文檔

  3.2.載入文件/文件夾模塊

  可以通用提供文件/文件夾路徑的方式載入非核心模塊。

  var module1= require('/script/module1'); 按文件載入此處可省略文件擴展名.js
  var module = require('/script');  

  按文件夾載入,node就會在指定文件夾下查找package.json文件,如果文件夾下不存在該文件,則預設尋找文件夾下index.js文件載入。存在則會解析該配置文件,找到main屬性配置的文件路徑載入。

  如果一個模塊名未找到載入文件,node就會嘗試在當前目錄的node_modules文件夾下查找,如果還是沒有找到會繼續查找父級文件夾,知道最上級或找到為止。

  3.3.緩存模塊

  模塊在首次載入時會被緩存,如果模塊名被解析為相同的模塊,那麼每次調用require(modulename)都會只返回同一模塊,且初始化過程只會執行一次

  

  

  

 

  

 


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

-Advertisement-
Play Games
更多相關文章
  • 管理員用戶登錄oracle資料庫 [oracle@DBORACLE ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Tue Jan 1 14:59:27 2019 Copyright (c) 1982, 2013, ...
  • 2016-12-22 13:58:48 該系列文章鏈接NoSQL 資料庫簡介Redis的安裝及及一些雜項基礎知識Redis 的常用五大數據類型(key,string,hash,list,set,zset)Redis 配置文件介紹Redis 持久化之RDBRedis 持久化之AOFRedis 主從複製 ...
  • Redis給人的印象是簡單、很快,但是不代表它不需要關註它的性能指標,此文簡單地介紹了一部分Redis性能指標.翻譯過程中加入了自己延伸的一些疑問信息,仍然還有一些東西沒有完全弄明白。原文中Metric to watch *** 和 Metric to alert on ***這裡翻譯為需要觀察的指 ...
  • 你好2019!一起努力呀! 主要分三種類型: 1、原子操作相關: nonatomic、atomic nonatomic:非原子操作,對屬性賦值的時候不加鎖,多線程併發訪問會提高訪問效率 atomic:原子操作,提供多線程安全,只在其相關的setter或getter方法的時候有加鎖安全機制,其他的線程 ...
  • new 是構造函數生成實例的命令, ES6為 new 命令引入了 new.target屬性。這個屬性用於確定構造函數是怎麼調用的。 在構造函數中, 如果一個構造函數 操作符調用的, 會返回 undefined。 使用場景 如果一個構造函數不通過 new 命令生成實例, 就報錯提醒 es5中是這樣做的 ...
  • 原文地址:https://medium.com/javascript scene/rethinking unit test assertions 55f59358253f 作者: "Eric Elliott" 「斷言」是編程術語,表示為一些布爾表達式,程式員相信在程式中的某個特定點該表達式值為真,可 ...
  • 什麼是客戶端? 客戶端(Client)或稱為用戶端,是指與伺服器相對應,為客戶提供本地服務的程式。 第一天學習知識的總結 <!DOCTYPE>是什麼意思? <!DOCTYPE>位於HTML第一行,在<html>標簽之前,用來告訴瀏覽器用什麼文檔標準,解析這個文檔是標準模式還是相容模式。如果該標簽不存 ...
  • 目標效果:點擊搜索框,搜索框內提示信息消失,可輸入搜索信息,點擊搜索框外搜索框如果沒提示信息或者為空時,顯示搜索框提示信息,如果有搜索信息,顯示搜索信息。 代碼如下: ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...