✔1.node.js初体验windows ✔2.commonjs-回顾ES6模块化 ✔3.commonjs的语法介绍 |
|
require(…)的三个层级 |
|
1. commonjs 语法介绍
module.exports
require(...)
用于nodejs开发
2. require(…)的三个层级
系统自带的模块,如 require('http')
npm 包,如 require('lodash')
自定义模块,如require('sum')
3. 编码演示 commonjs
和我一起创建以下文件夹:
然后在该文件夹下创建 index.js 文件 和 utils.js 文件。
代码位置:…/jyb-code/es6-module-test/commonjs-test/utils.js
function sum(a,b){
return a + b
}
// 把 sum 导出去
module.exports = sum
接下来 在 index.js 文件中引用 sum。
代码位置:…/jyb-code/es6-module-test/commonjs-test/index.js
const sum = require('./utils')
// 也可写成 const sum = require('./utils.js')
const res = sum(10,20)
console.log(res)
接着执行:
node index.js
nodejs除了编程风格需要我学习之外,开发过程和执行过程跟Python类似,
只不过nodejs的模块叫xxx.js,而Python中的模块叫yyy.py。
然后nodejs执行是 node xxx.js,而Python执行是 python yyy.py。
如果我们现在往 utils.js 中写个 test 函数,编程风格是怎样的呢?
代码位置:…/jyb-code/es6-module-test/commonjs-test/utils.js
function sum(a,b){
return a + b
}
function test(){
console.log("this is test")
}
module.exports = {
sum,
test
}
代码做了什么事情?
我们输出一个对象,这个对象把sum和test都携带上。这个对象里面就会有sum和test。
然后我们在引入的时候,我们就可以怎么样做?
我们可以通过解构的方式来去引入sum 和 test。【解构这个词记住了】
代码位置:…/jyb-code/es6-module-test/commonjs-test/index.js
const {sum,test} = require('./utils')
const res = sum(10,20)
test()
console.log(res)
运行结果:
require 的时候,后面都是字符串,这个字符串可能会有三种形式:
这三种模块全部都通过 require 方式来去引入,这就是required的一个强大之处,require它会区分这三种层级,当你给require一个字符串的时候,require它会先判断,
哎,这个模块它到底是不是nodejs自带的模块呢?
然后如果不是,再去判断它到底是不是npm安装的模块呢?
如果不是,它会发现原来是你自己手写的,然后就加载自己手写的。
虽然我们都是用require,但是require它会很智能的去区分。
在引用书写的时候,我们要写一个相对目录。
你写个相对目录,这样的话就会告诉require比较明确的信息:
像这种只有一个名字的,像 http,像lodash这种只有一个名字的,
一般是系统自带的,或者说 npm 安装的模块,
这样的话就交给 require 自己去判断就好了,我们就不用关心这个事情。
收工了~
热门评论
笔记写得很清爽~
一日一记。