相关参数默认值

使用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. input上传图片(file),预览图片的两种方法。blob与base64编码

    上传图片时一般都需要预览,我一般用这两种方法来实现.base64编码可以直接上传到后台,后台解析下,得到的文件就会比较小了,省去了压缩图片这一步了. //获取对象input file 的图片地址,放进 ...

  2. Python第二十四天 binascii模块

    Python第二十四天 binascii模块 binascii用来进行进制和字符串之间的转换 import binascii s = 'abcde' h = binascii.b2a_hex(s) # ...

  3. 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure(对于二分类问题)

    首先我们可以计算准确率(accuracy),其定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比.也就是损失函数是0-1损失时测试数据集上的准确率. 下面在介绍时使用一下例子: 一个 ...

  4. HTTP结构

    HTTP结构 转载请注明出处:HTTP结构简介 HTTP通信过程包括从客户端发往服务器的请求和服务器返回客户端的响应,这篇文章就简单的了解一下HTTP请求和响应的结构与协议本身的状态管理. 用户HTT ...

  5. Java编程思想读书笔记(一)【对象导论】

    2018年1月7日15:45:58 前言 作为学习Java语言的经典之作<Java编程思想>,常常被人提起.虽然这本书出版十年有余,但是内容还是很给力的.很多人说这本书不是很适合初学者,我 ...

  6. window.atob()与window.btoa()方法实现编码与解码

    window.atob() 与window.btoa() WindowBase64.atob() 函数用来解码一个已经被base-64编码过的数据.你可以使用 window.btoa() 方法来编码一 ...

  7. SQL常用增删改查语句

    1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) values ('开心 ...

  8. (转)Linux下运行python

    原文: http://blog.csdn.net/jackywgw/article/details/48847187 在linux命令行下运行python,可以直接输出hello world jack ...

  9. 86、flask之一些凌乱知识点

    本篇导航: session组件 上下文与内置函数 pymysql问题 模版问题 一.session组件 1.session组件简介 flask-session是flask框架的session组件,由于 ...

  10. 视觉slam十四讲习题ch3-6

    题目回顾: 一般解线性方程Ax=b有哪几种做法?你能在Eigen中实现吗? 解: 线性方程组Ax = b的解法 : 1.直接法:(1,2,3,4,5) 2.迭代法:如Jacobi迭代法(6) 其中只有 ...