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
文件夹,则向上一层文件夹中去查找,查找规则同上!
若是上一层目录中也没有查找到,则再向上翻一层去查找,直到找到当前项目所在的盘符根目录为止!
若是找到当前盘符根目录还找不到,则报错: