使用FIS3解决seajs中模块的路径匹配问题

最近使用seajs开发的时候遇到一些问题,在此记录一下分享给大家。

模块定义

遵循seajs规范,模块化的js需要使用define函数定义,一个js文件即一个模块。define(id, deps, factory) 函数包括三个参数:iddeps、factory,其中id是模块的id,deps是模块的依赖。

模块ID定义

一般我们用js文件的路径来定义模块,如下:

define('src/mod1/demo', function(require, exports, module) {
  ...
});

在页面引入模块的时候使用seajs.use函数,需要使用模块的 id 引入模块,如下:

seajs.use(['src/mod1/demo'],function (demo) {
    ...
});

此时不得不说seajs中的模块路径规则,seajs要求模块的ID与路径匹配。 如果 seajs.userequire 引用的是不具名模块(未定义了 ID 的模块),则只需要填入模块文件的相对路径即可。 但是如果是引用具名模块(定义了 ID 的模块),会把 ID 和 seajs.use 函数中引用的路径名进行匹配,如果一致,则正确执行模块返回结果。反之,则返回 null。所以,如果想要定义模块的ID,最好与其绝对路径保持一致。
如果想随意定义模块ID,可以在页面中单独用

你可能感兴趣的:(使用FIS3解决seajs中模块的路径匹配问题)