模块调用

jmms内置了一个简单的模块加载系统(类似Node.js,做了简化),有关概念可以通过Node.js文档了解。

通过全局命名调用

    const redis = require('redis');
    const cache = require('redis/cache');

通过相对路径调用

    const util = require('./util');

Y 模块中 require(X)

1. `X`是相对路径
    a. 如果`Y`没有文件路径,抛出错误 
    b. 根据`Y`的文件路径加载模块返回
2. `X`不是相对路径
    a. 在`app/modules/`中搜索
    b. 搜索`app/entities`和`app/models`中的模型
    c. 在`classpath:jmms/modules/`中搜索
    d. 在`classpath:META-INF/jmms/modules/`中搜索
    e. 在jmms内置的模块中搜索
    d. 在Leap或者Spring的Bean中搜索

加载模块

  • 加载文件 (X)
1. 如果`X.js`是一个文件,加载 X.js 作为 JavaScript 文本
2. 如果`X.json`是一个文件,加载 X.json 成一个 JavaScript 对象
  • 加载索引(X)
1. 如果`X/index.js`是一个文件,加载 X/index.js 作为 JavaScript 文本
2. 如果`X/index.json`是一个文件,加载 X/index.json 成一个 JavaScript 对象
  • 加载目录(X)
1. 如果 X/package.json 是一个文件
   a. 解析 package.json,查找`main`属性
   b. let M = X/{main}
   c. 加载文件(M)
   d. 加载索引(M)
2. 加载索引(X)
  • 加载Bean(X)
1. 加载 id='jmms.modules.X' 的bean
2. 加载 namespace='jmms.modules', name=X 的bean (只支持Leap)
Bingosoft            updated 2018-07-23
上一篇:Response 下一篇:调用npm模块

results matching ""

    No results matching ""