1.模块(一个文件就是一个模块)

    

  

  获取当前脚本所在的路径
   _ _dirname
  文件路径
   _ _filename

(1)创建模块(module1.js)

const fs=require('fs');
//所有的文件操作都必须是绝对路径(物理路径)
fs.readFile(__dirname+'/../list.md',(error,content)=>{
if(error){
throw error;
}
console.log(content.toString());
});

(2)载入模块(011.js)

const moudel1=require('./modules/module1.js');//载入模块

(3)执行node 011.js可以拿到module1.js中的东西

  路径位置:

  

  执行结果:

  

2.module(模块对象)

  

  

3.exports

  映射到module.exports的别名

  module.exports{};

  var exports=module.exports{};

4.require

  (1)Node使用CommonJS模块规范,内置的require函数用于加载模块文件

  (2)require的基本功能是,读入并执行一个JavaScript文件,然后返回该模块的exports对象

  如果没有发现指定模块,会报错

  require不仅仅可以载入JS模块,也可以载入JSON对象(大部分用于读取配置信息)

  

5.模块缓存

  (1)第一次加载某个模块时,Node会缓存该模块。以后再加载该模块,就直接从缓存中取出该模块。

  module.exports属性不会再次执行该模块

  04.js

//模块的缓存,setInterval中的箭头函数每隔一秒执行一次
setInterval(()=>{
var date=require('./modules/module3.js');
console.log(date.getTime());
},1000);

 module3.js

module.exports=new Date();//导出成员

  

  

 (2)如何得到缓存和删除缓存

  得到缓存,通过require.cache

  require.cache记录node应用程序启动过程中所有的缓存

//模块的缓存
setInterval(()=>{
var date=require('./modules/module3.js');
console.log(require.cache);
},1000);

  

  删除缓存,通过delete require.cache[key],一般不会清空缓存的,除非更新JSON数据的时候,要更新,就要清空缓存

//模块的缓存
setInterval(()=>{
Object.keys(require.cache).forEach((key)=>{
delete require.cache[key];//不能直接删除用delete require.cache,要进行遍历,把里面的成员删掉
});
var date=require('./modules/module3.js');
console.log(date.getTime());
},1000);

  

  

Nodejs-模块化结构的更多相关文章

  1. JS~~~ 前端开发一些常用技巧 模块化结构 &&&&& 命名空间处理 奇技淫巧!!!!!!

    前端开发一些常用技巧               模块化结构       &&&&&     命名空间处理 奇技淫巧!!!!!!2016-09-29    17 ...

  2. 浅析 Nodejs 模块化

    本文只讨论 CommonJS 规范,不涉及 ESM 我们知道 JavaScript 这门语言诞生之初主要是为了完成网页上表单的一些规则校验以及动画制作,所以布兰登.艾奇(Brendan Eich)只花 ...

  3. nginx模块化结构

    NGINX是一个免费.开源.高性能.轻量级的HTTP和反向代理服务器,也是一个电子邮件(IMAP/POP3)代理服务器 特点: 占有内存少,并发能力强 Nginx的优点: 模块化.事件驱动.异步.非阻 ...

  4. nodejs模块化标准

    commonjs 导出一个 a.js function add(a, b){ return a+b; } module.exports = add; b.js const add = require( ...

  5. nodejs的第三天学习笔记

    一. CommonJS 规范 1.1nodejs 与 commonjs 之间的关系: 1)nodejs是一种服务器语言. a)开启服务的能力 b)文件读写的能力 服务器:就是一台安装了服务软件 2)c ...

  6. 转: Nodejs概述

    目录 简介 安装与更新 版本管理工具nvm 基本用法 REPL环境 异步操作 全局对象和全局变量 模块化结构 概述 核心模块 自定义模块 fs模块 Stream模式 http模块 实例:搭建一个HTT ...

  7. js模块化入门与commonjs解析与应用

    JS模块化的基本原理 commonjs规范 commonjs在前端模块化中的基本使用 AMD与CMD规范剖析博客链接 一.JS模块化基本原理 在JS没有提出来模块化的时候,开发JS项目比较简单,同时也 ...

  8. 小白菜初探nodejs

    记得大四那年实习的时候出去找工作,就常常听见大家说node.从那以后,悄然埋下了一颗学习nodejs的心.不过由于基础太薄弱,一直没有学习.加之工作上没有相关应用,就一直搁置到现在. 年会的时候,老大 ...

  9. NodeJs - 100

    Nodejs官方文档 https://nodejs.org/en/docs/ Nodejs官方网站 https://nodejs.org/en/ Nodejs的特征:  1.采用非阻塞性IO机制:—— ...

  10. Nginx源码结构

    上一章对Nginx的架构有了一个初步的了解.这章,为了对源码仔细的剖析,先要对Nginx的源码结构有一个了解.从宏观上把握源码模块的结构. 一.nginx源码的3个目录结构 在安装的nginx的目录下 ...

随机推荐

  1. Spring scope 配置

    Scope 描述的是 Spring 容器如何新建Bean的实例,Spring的Scope有以下几种,通过@Scope来注解实现: 1. Singleton: 一个Spring容器中只有一个Bean的实 ...

  2. 【前端】Chrome DevTools 笔记

    1. 查看网络耗时 timeline 生命周期按照以下类别显示花费的时间: Queuing Stalled 如果适用:DNS lookup.initial connection.SSL handsha ...

  3. 杭电acm刷题顺序

    最近兴趣来了,闲暇之余,回顾大学期间刷过的杭电acm那些入门级别的题,以此巩固基础知识! 以下参考刷题顺序,避免入坑 原文传送门:https://blog.csdn.net/liuqiyao_01/a ...

  4. 谷歌chrome://chrome-urls/

    查看DNS解析时间 1 chrome://dns/ 查看DNS解析的地址 1 chrome://net-internals/#dns 更多功能请参考 1 chrome://chrome-urls/ 以 ...

  5. jQuery_2_常规选择器-进阶选择器

    进阶选择器: 1. 群组选择器     $("span,em,#box")   获取多个选择器的DOM对象 <div id="d1">div< ...

  6. Altera FFT核使用详解

    简介 快速傅里叶变换(Fast Fourier Transform)最为一种高效的算法,被广泛的用于信号处理与数据分析等领域.对于设计工程师来讲,自己动手采样可编程语言来实现一个FFT/IFFT模块, ...

  7. ARM实验1 —— 流水灯实验

    实验内容: 编写GPIO模块程序,实现对FS_4412平台的上的led2,led3,led4 ,led5,的流水灯实现. 实验目的: 熟悉开发环境的使用. 掌握Exynos 4412处理器GPIO功能 ...

  8. js 对象字面量

    对象字面量的输出方式以及定义好处 1.对象字面量的输出方式有两种:传统的'.' 例如:box.name 以及数组方式,只不过用数组方式输出时,方括号里面要用引号括起来 例如:box['name'] v ...

  9. Aizu 2170 Marked Ancestor(并查集变形)

    寻找根节点很容易让人联想到DisjointSet,但是DisjointSet只有合并操作, 所以询问离线倒着考虑,标记会一个一个消除,这时候就变成合并了. 因为询问和查询的时间以及标记生效的时间有关, ...

  10. python 线程even

    import threading,time import random def door(nums): num=1#电梯在一楼 while True: print("this door is ...