Day3 NodeJS-Module、Exports与Require

今天要谈三个NodeJS的概念,进入新手村的第一个任务:Module、Exports与Require。因为在使用JavaScript开发网页时没有Module概念,加入Module的概念让NodeJS内建许多常用、通用的功能可以被开发人员引入程序码,省去许多程序码的撰写时间,开发人员也可自创Module以提升开发效率。

Module

第一个NodeJS的重要概念是Module。在Module出现之前,JavaScript虽然可以在前端以<script>标签引入其他程序码,但Module让JavaScript在後端也具有引入其他程序码的机制,例如:C#的类别(class)、python的import机制。Module用於存放可以重复使用的程序码,将程序码分门别类、以独立的JavaScript档储存,可以避免不经意的程序码冲突,在Module中存在一个代表Module本身的module物件,藉由其中的exports属性,配合require语法,将程序码以更灵活的架构建置。

Exports

exports作为一个物件,是源於module的属性module.exportsmodule.exports以pass by reference的方式将属性传递给exports物件,再将Module中的方法挂载到exports上输出,exports也是Module中唯一可以输出的窗口。

Require

require()是NodeJS中用来引用Module的函式,透过引入外部Module便可应用其指派於exports的方法。

Module实作 - 计算铁人赛进行天数

  1. 建立计算天数的程序码为Module,将主要输出的函式挂载於exports上,Module的部分就准备完成。
// count.js
exports.count = function(dMonth, dDay){
    let date = new Date();
    let dDate = new Date(2021,dMonth-1,dDay);
    let diff = Math.floor(Math.abs(date-dDate)/(1000 * 3600 * 24))+1;

    console.log(`iT铁人赛第 ${diff} 天!`);
}
  1. 在主程序部份,使用require()将count Module引入为Count物件,require()的参数是Module的档案名称,在没有输入副档名的情况下,预设副档名为.js,若引入的Module为NodeJS内建,不需含有前缀路径./
let Count = require("./count");
Count.count(9,16);
  1. 执行主程序输出成果。

https://ithelp.ithome.com.tw/upload/images/20210918/20139980uzpmKXUtWa.png

小结

Module的机制让JavaScript更容易应用在後端开发上,透过Module设计程序码架构,可以提高程序的利用率~

以上是今天的小练习,明天继续努力!

参考资料:

深入浅出Node.js/朴灵 编着

Learn and Understand NodeJS [课程]


<<:  [30天 Vue学好学满 DAY18] Vuex-1

>>:  Day03 安装环境

[Day29] 当责文化

这几年经历的公司,不约而同的在提倡「建立文化」,经过大大小小的工作坊,企业讲师授课,几间公司的 CE...

C# windows form 在控件事件触发回圈 为何不会更新UI

一般在写 windows form 程序时 如果不是大型开发 老板只要求 东西能动 项目立刻好 我们...

Eloquent ORM - 多型态关联

通常关联都是两两张资料表之间的关系,而多型态关联则是打破这个限制让一张表可以同时关连到两张以上的资料...

Day2React安装方式简介

安装方式 根据官网介绍,本次铁人赛会着重介绍下列三种安装方式: CDN连结 快速建立react环境的...

DAY23: 自定义模块

在DAY21: NPM模块管理工具有提到Nodejs主要有内置模块(包含核心模块)、npm第三方模块...