美文网首页
nodeJS学习笔记(1) --- 模块系统

nodeJS学习笔记(1) --- 模块系统

作者: Jocelyn_Long | 来源:发表于2016-08-01 18:20 被阅读40次

nodeJs模块系统

nodeJs提供一个简单的模块系统。
模块是nodeJs应用程序的基本组成部分, 模块与文件一一对应(一个文件即一个模块)。
下面举一个学校的例子(学校里有班级,班级有老师和学生);

新建一个student.js,代码如下:

    console.log('Add Student:' + student);
}
exports.add = add ```

teacher.js,代码如下:
```function add(teacher) {
    console.log('Add Teacher:' + teacher);
}
exports.add = add;```

class.js,代码如下:
```var student = require('./student');
var teacher = require('./teacher');
function add(teacherName, students) {
    teacher.add(teacherName);
    students.forEach(function(item, index){
        student.add(item)
    })
 }
 // 实例
 exports.add = add
// 支持存在的东西 这种方式存在会忽视上一中方式的属性和方法
//module.exports = add```
index.js,代码如下:
```var klass = require('./class')
//因为class为js内置对象,不能自己定义一个对象取名class,所以此处用klass
exports.add = function(klasses) {
    klasses.forEach(function(item, index){
        var _klass = item;
        var teacherName = item.teacherName;
        var students = item.students;
    })
}```
这就是一个简约版的小学校啦。主要通过export暴露模块的接口,然后通过require来请求模块。

##服务端的模块
http,fs这种原生的模块又是在哪呢?
NodeJs中存在四类模块(原生模块和三种文件模块),尽管require方法极其简单,但是内部的加载却是十分复杂的,其加载优先级也各自不同.

Node.js 的 require方法中的文件查找策略如下:
```flow
st=>start: 开始require
queryFileModule=>operation: 查询文件模块
loadFileModule=>operation: 根据扩展名加载文件模块
cacheFileModule=>operation: 缓存文件模块
loadNativeModule=>operation: 加载原生模块
cacheNativeModule=>operation: 缓存原生模块
nativeModuleCache=>condition: 是否在原生模块缓存区?
nativeModule=>condition: 是否原生模块?
fileCache=>condition: 是否在文件缓存区中?
e=>end: 返回export
st-> fileCache
fileCache(yes)->e
fileCache(no)->nativeModule
nativeModule(yes)->loadNativeModule->cacheNativeModule->e
nativeModule(no)->queryFileModule->loadFileModule->cacheFileModule->e

ps:流程图还没找到解决方案- -有知道的小伙伴可以教我呀- -

相关文章

  • nodeJS学习笔记(1) --- 模块系统

    nodeJs模块系统 nodeJs提供一个简单的模块系统。模块是nodeJs应用程序的基本组成部分, 模块与文件一...

  • 6_Node 文件系统

    [toc] NodeJS 文件系统[fs 模块] 1.NodeJS 文件系统 NodeJS 文件系统被封装在fs模...

  • NodeJs模块加载流程分析(require)

    一、 开篇干货介绍 1. NodeJs中的模块 NodeJS采用CommonJS规范实现了模块系统,这种规范的核心...

  • nodejs模块

    nodejs模块 nodejs系统自带的模块:http:协议请求模块;创建服务器:http.createServe...

  • 你所知道的node.js

    目录 nodejs是什么 使用nodejs创建一个服务器(接口) nodejs的模块系统 nodejs文件系统 路...

  • Nodejs学习笔记-模块

    代码:https://github.com/fengchunjian/nodejs_examples/tree/m...

  • nodejs笔记5(模块系统与函数)

    模块系统 为了让nodejs的文件可以相互调用,nodejs提供了一个简单的模块系统。模块是Node.js 应用程...

  • node - 收藏集 - 掘金

    Nodejs进阶:MD5入门介绍及crypto模块的应用 - 掘金本文摘录自《Nodejs学习笔记》,更多章节及更...

  • nodejs--day1笔记

    1. nodejs基础是ECMAScript和Node模块API 2. 模块导入导出 导出 导入 3. 系统模块f...

  • nodejs-模块

    nodejs模块 一、nodejs模块分类 1.核心模块 Core Module、内置模块、原生模块 fs模块 p...

网友评论

      本文标题:nodeJS学习笔记(1) --- 模块系统

      本文链接:https://www.haomeiwen.com/subject/wstfsttx.html