您的位置:首页 > 设计资源 > 插件资源 > 内页

Sea.js的运行原理及入门讲解

核心提示: Sea js 追求简单、自然的代码书写和组织方式,提供常用插件,非常有助于开发调试和性能优化,并具有丰富的可扩展接口。

4.资源定位

资源定位与模块标识相关,而在Sea.js中有三种模块标识:

普通路径:普通路径与网页中超链接一样,相对于当前页面解析。

相对标识:在define的factory中的相对路径(.. .)是相对标识,相对标识相对当前的URI来解析

顶级标识:不以.或者‘/‘开头的模块标识是顶级标识。

获取真实路径:在Sea.js中,使用data.cwd来代表当前页面的目录;使用data.base来代表sea.js的加载地址。

5.factory依赖分析

在Sea.js的API中,define(factory),并没有指明模块的依赖项,那Sea.js是如何获得的呢。

/**
 * util-deps.js - The parser for dependencies
 * ref: tests/research/parse-dependencies/test.html
 */

var REQUIRE_RE = /"(?:\\"|[^"])*"|‘(?:\\‘|[^‘])*‘|\/\*[\S\s]*?\*\/|\/(?:\\\/|[^\/\r\n])+\/(?=[^\/])|\/\/.*|\.\s*require|(?:^|[^$])\brequire\s*\(\s*(["‘])(.+?)\1\s*\)/g
var SLASH_RE = /\\\\/g

function parseDependencies(code) {
  var ret = []

  code.replace(SLASH_RE, "")
      .replace(REQUIRE_RE, function(m, m1, m2) {
        if (m2) {
          ret.push(m2)
        }
      })

  return ret
}

Sea.js就是使用REQUIRE_RE在factory的源码中匹配出该模块的依赖项。从REQUIRE_RE这么长的正则来看,这里坑很多;在CommonJS的wrapper方案中可以使用JS语法分析器来获取依赖会更准确。

文章源自 设计联盟 www.DesignLinks.cn 中国最具影响力的创意设计综合网站

下载地址

*提示:下载碰到问题,或者下载地址失效,请在下方评论区留言,我们会及时更新。

编辑:Beach

资讯标签: Sea Js 运行 原理 入门 讲解
搜索推荐
设计联盟官方微信
设计联盟官方微信
微信公众号:designlinks
扫一扫 订阅最新资讯
回到顶部