seajs中模块的解析规则详解和模块使用总结

  次阅读 作者:智能小宝 来源:互联网 2016-01-27 15:14 我要评论(0)

这篇文章主要介绍了seajs中模块的解析规则详解和模块使用总结,需要的朋友可以参考下

seajs github 模块标识已经说的相对清楚了。但并没有面面俱到,特别是当你需要手写 【模块ID】和【模块依赖】的时候,或者自己写自动化工具来做 transport 的时候(ps:spm貌似适应性不是很强也不易用,毕竟每个项目的目录结构可能相差很大,且不易改变。当然如果他的定位是包管理工具就别指望它来做你的项目的自动化构建工具了),ID的解析规则就需要了解透彻了。

注意事项:

1. 顶级标识始终相对 base 基础路径解析。

2. 绝对路径和根路径始终相对当前页面解析。

3. require 和 require.async 中的相对路径相对当前模块路径来解析。

4. seajs.use 中的相对路径始终相对当前页面来解析。

seajs中,模块的ID大致可分为三种:【相对标识】、【顶级标识】、【普通路径】,

普通路径包括绝对路径 、 根路径 ,等。

这里重点说明 【相对标识】 和 【顶级标识】。

相对标识 是指 "./","../" 开头的,如:"./OtherModule", "../lib/Base"。

顶级标识 是指 以文件或目录(可以包含:字母、-、_)开头的,如:"app/widget/Select"

需要写模块ID的地方有三处:

代码如下:define("id (1)",["../id2 (2)"], function(require, exports, module){

var moduleA = require('./moduleA (3)');

})

注意:无论是define第一个参数【模块ID】还是第二个参数【依赖模块的ID】还是【require模块ID】,最终的比对标准是【解析后的文件URI】。

因此,这三处需要写ID 的地方可以以任意一种方式来写,只要最终解析为同一个URI,即被认为是同一个模块。

在解析ID的过程中,会预先经过 seajs.config 中定义的 alias 和 paths 的处理。

base 路径解析规则

(第 1 层,本身的路径不依赖于任何设置)

1. 不可使用【顶级标识】,因为顶级标识就是相对于 base 基础路径来解析的,因此 base 本身只能使用【相对标识】或【根路径】等。

2. base 默认路径为 seajs 的目录,其他情况参见seajs官网,如果不是seajs推荐的源码目录结构,尽量手动设置 base 路径。

3. 【相对标识】:相对于 当前页面 解析。

paths 中路径解析规则

(第 1 层,本身的路径不依赖于任何设置)

1. 【相对标识】:在哪里被引用,相对的解析位置视被引用的地方而定,遵循当地的规则。

2. paths中的字段会被以变量的方式在被使用的地方替换,然后再解析。

比如:

代码如下://代码块(1)

//path定义:

seajs.config({

base:"./app/src",

path:{

"a":"../lib", //(1) 相对路径

"lib":"path/to/lib", //(2) 顶级标识

"l2":"/lib" //(3) 根路径

}

});

//模块 mod/m/m.js:

...

require("a/jquery");

//=> 转换为:"../../lib/jquery"

//=> 加载:mod/lib/jquery (特别注意 1)

...

//模块 mod/f.js:

...

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...