相关参数默认值

使用YUI, 我们可以配置一些和路径相关参数,如base、root、comboBase、cdn, combine、path、fullpath等属性的配置均会影响到YUI的module加载, 初始化YUI环境这些参数的默认配置如下:

module中的定义, 可以在任何可以配置module的地方配置, 以module w-tab为例:
{module}.path = "w-tab/w-tab.js";
{module}.fullpath = "http://.../w-tab/w-tab.js"; //种子文件初始化
YUI.Env = {
base: 'http://yui.yahooapis.com/',
cdn: base + Y.version + '/build/',
...
}; //YUI实例化
Y.Env = {
base: 'http://yui.yahooapis.com/',
cdn: base + Y.version + '/build/'
...
}; //getBase 会默认搜索页面上已经添加的script的src, 找到符合以下匹配规则的地址, 然后提取出config.base;
var _BASE_RE = /(?:\?(?:[^&]*&)*([^&]*))?\b(simpleyui|yui(?:-\w+)?)\/\2(?:-(min|debug))?\.js/;
Y.config.base = YUI.config.base || Y.Env.getBase(_BASE_RE); //loader-base _attach
YUI.Env[Y.version] = Y.Env.meta = {
base: Y.Env.base,
root: Y.version + '/',
comboBase: Y.Env.base + 'combo?',
...
}; //new Y.Loader() => loader
Y.Env._loader = loader = {
//default: http://yui.yahooapis.com/{Y.version}/
base: Y.Env.meta.base + Y.Env.meta.root,
//default: http://yui.yahooapis.com/combo?
comboBase: Y.Env.meta.comboBase;
//看页面上种子文件的使用情况
  combine: Y.config.base && (Y.config.base.indexOf(self.comboBase.substr(0, 20)) > -1),
  comboSep: '&',
  ...
}

从上面可以看到, 和路径有关的参数会存放在很多对象上, 并且也可以有多种方式可以修改这些参数, 看上去太晕了。

Loader加载使用参数情况

Loader在加载一个module的时候是如何来处理这些参数的呢? 先看代码吧:

1、先判断是否需要combine,  逻辑如下, m为某一个module的简写:

var groupName = m.group;
var groupConfig = loader.groups[groupName]; if(groupName && groupConfig) {
//m是在groups里面配置的
if (groupConfig.combine && !m.fullpath) {
m.combine = true;
}
} else {
m.combine = loader.combine;
}

2、当 m.combine == true 时,计算comboBase &  comboSep, 将本次批量加载的相同comboBase的mods 使用comboSep 分隔符 join 起来。

m.comboSep = group.comboSep || loader.comboSep;
comboBase = group.comboBase || loader.comboBase; url = ((L.isValue(m.root)) ? m.root : loader.root) + (m.path || m.fullpath);
//urls为多个combine的module的url数组,如[url, url];
comboUrl = comboBase + urls.join(m.comboSep);

3、当 m.combine == false 时,

url = m.fullpath || ((group.base || m.base || loader.base || "") + path);

2、3步骤中的url在配置loader.filter或者groups[groupName].filter的时候, 会再使用filter对url进行一次处理, 主要是支持如下三种filter模式

FILTER_DEFS: {
RAW: {
'searchExp': '-min\\.js',
'replaceStr': '.js'
},
DEBUG: {
'searchExp': '-min\\.js',
'replaceStr': '-debug.js'
},
COVERAGE: {
'searchExp': '-min\\.js',
'replaceStr': '-coverage.js'
}
},

YUI 和路径相关的参数与module加载之间的关系的更多相关文章

  1. spring 配置参数从配置文件中加载到PropertiesFactoryBean 和配置参数从数据库加载到PropertiesFactoryBean 的实现,及项目中的相关应用

    1.加载.properties文件中的配置参数加载到PropertiesFactoryBean容器中 <bean id="configProperties" class=&q ...

  2. module加载过程初步分析[更新中]【转】

    转自:http://blog.chinaunix.net/uid-1817735-id-2837068.html 分析这个过程可以有助于我们认识在加载模块时出现的问题大抵在哪里了. 直接从sys_in ...

  3. 渐进式jpeg(progressive jpeg)图片及其相关 --图片的两种加载方式

    渐进式jpeg(progressive jpeg)图片及其相关   一.基本JPEG(baseline jpeg)和渐进JPEG 网络上那些色色的照片都是.jpg格式的("色色"指 ...

  4. bootm命令中地址参数,内核加载地址以及内核入口地址

    bootm命令只能用来引导经过mkimage构建了镜像头的内核镜像文件以及根文件镜像,对于没有用mkimage对内核进行处理的话,那直接把内核下载到连接脚本中指定的加载地址0x30008000再运行就 ...

  5. JS框架设计之加载器所在路径的探知一模块加载系统

    1.要加载一个模块,我们需要一个URL作为加载地址,一个script作为加载媒介,但用户在require是都用ID,我们需要一个将ID转换为URL的方法,思路很简单,强加个约定,URL的合成规则是为: ...

  6. log4j 路径环境变量配置和log4j加载配置

    1.lo4j日志路径从环境变量读取,log4j.xml配置如下: 具体配置如下: log4j.appender.R.Encoding=UTF-8 log4j.appender.R=org.apache ...

  7. pytorch_模型参数-保存,加载,打印

    1.保存模型参数(gen-我自己的模型名字) torch.save(self.gen.state_dict(), os.path.join(self.gen_save_path, 'gen_%d.pt ...

  8. MyBatis Java不同方式加载文件时的路径格式问题、Mybatis中加载.properties文件

    public class LoadPropTest { public static void main(String[] args) throws IOException { //一.Properti ...

  9. 【Java】学习路径63-反射、类的加载-附思维导图(完结)

    这一章的知识在实际开发也没有那么重要,主要是了解即可,另外掌握如何使用反射机制. 类的使用: 在虚拟机中: 类的加载->类的连接->类的初始化 类的加载   只会加载需要用到的类,加载到内 ...

随机推荐

  1. Less is exponentially more

    Less is exponentially more  (原文出处:rob pike 博客,https://commandcenter.blogspot.jp/2012/06/less-is-expo ...

  2. ValueError: too many values to unpack (expected 2)

    记录下总是码错的地方 for key,value in final_table:#final_table is a dict 然后报错 File "./count_co_Mty_read_n ...

  3. SQL Server(解决问题)已成功与服务器建立连接,但是在登录过程中发生错误。(provider: Shared Memory Provider, error:0 - 管道的另一端上无任何进程。

    http://blog.csdn.net/github_35160620/article/details/52676416 如果你在使用新创建的 SQL Server 用户名和密码 对数据库进行连接的 ...

  4. lbp特征提取(等价模式)

    LBP等价模式 考察LBP算子的定义可知,一个LBP算子可以产生多种二进制模式(p个采样点)如:3x3邻域有p=8个采样点,则可得到2^8=256种二进制模式:5x5邻域有p=24个采样点,则可得到2 ...

  5. windows系统操作

    1.怎么更新补丁 有些软件的运行需要windows要安装相关的补丁,除了去微软官网下载补丁外,可以用windows自带的“系统更新”来完成,省去找补丁下载以及研究系统缺少哪些补丁. 控制面板--> ...

  6. sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)

    1:sqoop的概述: (1):sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具.(2):导入数据:MySQL,Oracle导入数据到Hadoop的HDFS.HIV ...

  7. mysql数据库-------基础

    一 数据库是什么 把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件,即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理,为了远程访问并处理这台共享机器上的文件, ...

  8. python3之File文件方法

    1.读写文件 open()将会返回一个file对象,基本语法: open(filename,mode) filename:是一个包含了访问的文件名称的路径字符串 mode:决定了打开文件的模式:只读, ...

  9. OpenCV2.4.9 Qt5.3.1 开发环境配置错误原因与解决方案

    问题原因与解决办法 A.配置完成后,示例程序无法正常显示图片且程序无法运行 出现原因:环境变量未正确配置 解决办法:检查环境变量,添加缺失的环境变量 B.出"未定义的引用..."类 ...

  10. CSS3 动画 cheatsheet

    Transition 实例 .box { height: 100px; width: 100px; background: #212121; transition: width 1s ease, he ...