手记

【备战春招】第3天+commonjs的语法介绍

模块名
描述
课程名称
前端工程师2022版
课程章节
Node.js基础入门
打卡知识进程
知识进程:3 / 21
1.node.js初体验windows
2.commonjs-回顾ES6模块化
3.commonjs的语法介绍
主讲老师
Dell
学习开始时间
2023.02.08 20:40
学习结束时间
2023.02.08 21:26
总计时
46 min
课程收获/主要内容/编程目标
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 自己去判断就好了,我们就不用关心这个事情。

收工了~

1人推荐
随时随地看视频
慕课网APP

热门评论

笔记写得很清爽~

一日一记。

查看全部评论