1. 程式人生 > >NodeJS 中模組module查詢過程

NodeJS 中模組module查詢過程

最近開始學習Nodejs, 對於其中module的引用大家應該比較熟悉,就是JS中的eRequire 關鍵字,如果沒有module的路徑,Node中會去怎樣找到這個引用呢?

例如:var m=require("xxxx"), 那麼該XXXk查詢順序如下:

儘管Node模組系統的本質簡單直接,但還是有兩點需要注意一下。
第一,如果模組是目錄,在模組目錄中定義模組的檔案必須被命名為index.js,除非你在這個目錄下一個叫package.json的檔案裡特別指明。要指定一個取代index.js的檔案,package.json檔案裡必須有一個用JavaScript物件表示法(JSON)資料定義的物件,其中有一個名為main的鍵,指明模組目錄內主檔案的路徑。圖3-6中的流程圖對這些規則做了彙總。

還有一點需要注意的是,Node能把模組作為物件快取起來。如果程式中的兩個檔案引入了相同的模組,第一個檔案會把模組返回的資料存到程式的記憶體中,這樣第二個檔案就不用再去訪問和計算模組的原始檔了。實際上第二個引入有機會修改快取的資料。這種“猴子補丁”(monkeypatching)讓一個模組可以改變另一個模組的行為,開發人員可以不用建立它的新版本。



相關推薦

NodeJS 模組module查詢過程

最近開始學習Nodejs, 對於其中module的引用大家應該比較熟悉,就是JS中的eRequire 關鍵字,如果沒有module的路徑,Node中會去怎樣找到這個引用呢? 例如:var m=require("xxxx"), 那麼該XXXk查詢順序如下: 儘管Node模組

node.js模組Module的概念和介紹

模組 Module 在計算機程式的開發過程中,隨著程式程式碼越寫越多,在一個檔案裡程式碼就會越來越長,越來越不容易維護。 為了編寫可維護的程式碼,我們把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的程式碼就相對較少,很多程式語言都採用這種組織程式碼的方式。在No

nodejs 模組使用的介紹

模組的分類 核心模組: 如 http 檔案模組: 如 var util = require(‘./util.js’) 第三方模組: 如 var promise=require(‘bluebird’) 模組的使用流程 建立模組: teacher.js

python模組(module),包(package),庫(lib)的區別

python模組是: 自我包含並且有組織的程式碼片段為模組。 表現形式為:寫的程式碼儲存為檔案。這個檔案就是一個模組。sample.py 其中檔名smaple為模組名字。 python包是: 包是一個有層次的檔案目錄結構,它定義了由n個模組或n個子包組成的python應用程

Mysql使用存儲過程返回查詢多個表的數據信息

lan var rmi pan cas nis lang fun sub -- 測試手機號 call P_Base_CheckLogin(‘15584463676‘); -- 測試登錄名 call P_Base_CheckLogin(‘sch000001‘)

nodejsexports與module.exports的區別

ons src uri 技術分享 20px boolean 微軟雅黑 是否 不一定 [原文] 你肯定非常熟悉nodejs模塊中的exports對象,你可以用它創建你的模塊。例如:(假設這是rocker.js文件)exports.name = function() {

[SQL]sql server如何直接查詢存儲過程EXEC返回的結果集?

arc div lec rom 結果 In varchar SQ type Declare @T Table (iDay VARCHAR(4),iNum DECIMAL(18,2),yuxiang DECIMAL(18,9))

nodejs查詢mysql防止SQL注入

Performing queries The most basic way to perform a query is to call the .query() method on an object (like a Connection, Pool, or PoolNamespace inst

Androguard的androdd.py模組在使用過程可能遇到的問題

androguard主要用來進行靜態分析,提供了一組工具包(py檔案),輔助分析人員快速分析APK檔案 ,其中 androdd.py用於生成apk檔案中每個類的方法的呼叫流程圖,可以選擇生成.dot格式的,另外還可以是PNG和JPG中的一種,但是在使用過程中可能會遇到如下問題: 1、Att

nodejs request模組使用promise 返回回撥函式的值

var request = require('request'); //exports.httprequest = (requestData) =>{ function httprequest(requestData){ return new Promise((resolve, rejec

Android模組(module)與裝置(device)

轉自  https://blog.csdn.net/a345017062/article/details/6423866   以backlight這種裝置為例來說明一下Android系統中模組與裝置的關係。Android中的backlight、keyboard等多個裝置都

nodejs的stream模組的認識與使用

對於stream模組我也是初步的認識,並沒有做深入地瞭解, 如果有些地方不合適還請見諒! 一:首先我們要知道stream是什麼? 翻譯一下它的中文是小溪,流的意思。 所以說我們要這個Stream流的作用就是用來流動檔案資料, 也就是對檔案做一些操作; Node.js 中的St

nodejs的events模組的EventEmitter物件的簡單使用

由於我只是初步的學習,對於EventEmitter物件的認識只是初步的, 可能有些不合適的地方希望多多包含; EventEmitter類允許我們註冊一個或者多個函式作為監聽者,當對應的事件觸發後,它們就會觸發而執行操作; 1:首先我們要知道EventEmitter物件是在nodejs中的

nodejs模組系統(例項分析exprots和module.exprots)

轉自https://www.cnblogs.com/jiuyi/p/6004877.html 前言:工欲善其事,必先利其器。模組系統是nodejs組織管理程式碼的利器也是呼叫第三方程式碼的途徑,本文將詳細講解nodejs的模組系統。在文章最後例項分析一下exprots和module.exprot

nodejs引進模組要經歷的步驟

在nodejs中引入模組需要經歷如下3個步驟 1.路徑分析 2.檔案定位 3.編譯執行 在nodejs中模組分為兩類,一類是nodejs提供的模組,稱為核心模組,另一類的使用者編寫的模組,稱為檔案模組。 1.核心模組在nodejs原始碼的編譯過程中,編譯進了二進位制執行檔案,在nodejs程序啟動時,部分核心

Node.js入門- CommonJs 和 Nodejs 自定義模組

CommonJs 和 Nodejs 中自定義模組 一、什麼是 CommonJs? CommonJS 是模組化的標準,nodejs 是 CommonJS(模組化)的實現 二、Nodejs 中的模組化 2.1 在 Node 中,模組分為兩類: 一類是 Node 提供

NodeJS模組載入機制

1) 模組的型別 odeJS模組分為兩類,一類是核心模組,一類是檔案模組。 1,核心模組就是NodeJS標準中提供的模組,如fs、http、net、vm等,官方提供的模組,編譯成了二進位制程式碼,直接可以通過require獲取核心模組,核心模組具有最高的載入優先順序,如果

nodeJs--模組module.exports與例項化方法

在nodejs中,提供了exports 和 require 兩個物件,其中 exports 是模組公開的介面,require 用於從外部獲取一個模組的介面,即所獲取模組的 exports 物件。而在exports丟擲的介面中,如果你希望你的模組就想為一個特別的物

Android studio為專案新增模組依賴的過程

1、點選選單file>project structure或者點選工具欄中倒數第三個圖示project structure。 2、開啟project structure後,在modules中

nodejs使用jsonwebtoken模組遇到的錯誤

前端學習真的是要踩一路的坑啊,我之前學習新知識都是通過看視訊,後來發現這種方式太慢,還不如看部落格,實操一個專案學習的快。 最近在學習Nodejs的restful風格api的搭建,網上搜了搜發現學習資料還是不好找,部落格上的資料都太老了,我找那篇部落格都是20