node
程序員
如何使用核心模塊 npm
json
咱們在開發的過程當中,常常須要使用到各類各樣的第三方模塊緩存
ui
this
它的引入也是使用require()spa
code
orm
使用require導入這個第三方模塊!
經過官方文檔,試着去使用這個第三方模塊!
注意:不管是核心模塊、仍是第三方模塊,都是經過 require來引用這個模塊的!
1 // 這個文件演示一下若是使用第三方模塊moment實現日期數據的格式化處理 2 // 1. 引入moment(引入以前確保這個模塊已經正確的下載哦) 3 const moment = require('moment') 4 5 // 2.定義一個日期,如今日期值是未格式化的日期數據 6 let timeNow = new Date() 7 8 // 3.調用moment實現對日期數據的格式化處理 9 console.log(moment(timeNow).format('YYYY-MM-DD HH:mm:ss'))
// 咱們所建立的js文件就能夠認爲是一個自定義模塊 var obj = { name:'jack', age:20 } function sayHi(){ console.log('個人名字叫:'+obj.name+",個人年齡是:"+obj.age) } // 在模塊中有一個默認的對象exports,這個對象在在這個模塊被引入的時候會自動的返回 // 咱們導出成員的方式就是在這個對象上掛載你想暴露的成員 exports.sayHi = sayHi exports.aa = obj
// 如何使用用戶自定義模塊: // 全部模塊想使用都要先引入 // 若是引入一個模塊,那麼這個模塊默認會返回一個對象 var umodule = require('模塊文件的路徑') umodule.sayHi()
- 使用.語法在module.exports上掛載成員
// 引入一個模塊,還會自動的暴露這個模塊的module.exports對象 module.exports = { name: 'rose', say: function () { console.log(this.name) } }
// 咱們所建立的js文件就能夠認爲是一個自定義模塊 var obj = { name:'jack', age:20 } function sayHi(){ console.log('個人名字叫:'+obj.name+",個人年齡是:"+obj.age) } // 在模塊中有一個默認的對象module.exports,這個對象在這個模塊被引入的時候會自動的返回 // 咱們暴露成員的方式就是在這個對象上掛載你想暴露的成員 // module.exports.sayHi = sayHi // module.exports.aa = obj // 也能夠直接使用你想暴露的成員覆蓋module.exports module.exports = sayHi
exports 只能經過 . 的形式追加屬性;不能使用 = 直接賦值的形式!
注意: 在一個 module 中,最終向外暴露的成員,以 module.exports 指向的對象爲準!
在一個模塊中,不要混合使用 module.exports
和
若是模塊中只有一個成員須要暴露,就直接賦值給你想暴露的成員
加載核心模塊:優先從緩存中加載;若是緩存中沒有的話,再去執行加載核心模塊!
用戶模塊的查找規則:
若是不寫後綴名,則先嚴格按照給定的文件名去查找模塊並加載執行;按順序查找文件,找到則再也不繼續查找
index -> index.js -> index.json -> index.node
首先,查看項目根目錄中有沒有 node_modules
文件夾
查找 node_modules
文件夾中,有沒有和第三方模塊名稱一致的文件夾
在模塊對應的文件夾中,查找有沒有 package.json
這個文件
在 package.json
文件中,查找有沒有 main
屬性
若是有 main
屬性,而且 main
屬性指向的路徑存在,那麼就嘗試加載這個路徑指定的文件!
若是 package.json
文件中,沒有 main
屬性,或者 main
屬性指向的路徑不存在,或者沒有package.json
文件, 那麼,Node嘗試加載 模塊根目錄中 index
相關文件:index.js
-> index.json
-> index.node
若是在node_modules
文件夾中,找不到對應的模塊文件夾,或者在項目根目錄中根本沒有node_modules
文件夾,則向上一層文件夾中去查找,查找規則同上!
若是上一層目錄中也沒有查找到,則再向上翻一層去查找,直到找到當前項目所在的盤符根目錄爲止!
若是找到當前盤符根目錄還找不到,則報錯: