YUI 之yui.js
一、构造函数直接返回一个对象,避免调用时出错。
Function Fvar F = function () {
var f = this;
instanceOf = function (o, type){
return (o && o.hasOwnProperty && (o instanceof type));
};
if(!(instanceOf(f, F))){
f = new F();
}
f.say = function(){
console.log('instance');
};
f.instanceOf = instanceOf;
return f;
};
二、充分利用YUI是一个全局的变量,也是一个全局的对象,可以在YUI上存放很多属性及方法。YUI的很多全局属性及方法都是利用YUI.Env这一个对象来进行中转的
Function F(function(){
proto = {
speak: function(){
console.log('this is speak from prototype');
},
age: 26,
_init: function() {
var f = this,G_Env = F.Env, Env = f.Env;
if(!Env){
f.Env = {
sex: 'man',
work: 'web worker',
love: 'lhy'
}
}
f.version = '0.0.1';
Env = f.Env;
f.Env.fsy = function(){
console.log('some message');
}
}
};
F.prototype = proto;
for(prop in proto){
if(proto.hasOwnProperty(prop)){
F[prop] = proto[prop]
}
}
F._init();
}());
三、充分利用this指向进行操作,比如YUI的对象配置分为YUI.GlobalConfig(全局配置),YUI_config(页面配置),YUI()(调用时传入参数的实例配置)三部分,就在原型中定义了一个applyConfig方法,从而通过不同的调用来进行配置。
四、一个yui.js在页面上第一次被引用后的执行顺序是
检测全局对象YUI是否存在 ----> 定义YUI构造函数 ---> 自执行函数;
在自执行函数时,会进行以下几步
定义私有变量及方法 ----> 给html加类名 ---> 定义一个包含一系列方法及属性的对象proto ---> 将YUI对原型指向对象proto ----> 将proto中的方法及属性显示的赋给YUI,从而可以配置YUI -----> 给YUI重定义一个配置参数的方法(先配置全局的、再配置传入的、再将全局参数重置) ---> 调用YUI._init()来初始化运行环境 –—> 监听window.load ---> 将事件监听及注销函数赋给YUI.Env ---> 在YUI.Env上为版本VERSION开辟一个空间,便于进行版本hash对象,
运行完毕以后,一个YUI会有以下属性及方法
applyConfig,_config,_init,_setup,applyTo,add,_attach,_delayCallback,use,_notify,_use,namespace,log,message,dump,error,guid,stamp,destroy,version,Env,_yuid,id,constructor,config
初始化环境函数执行步骤
定义YUI的版本号 -----> 配置环境 -------> 配置YUI的ID ------> 创建css标记元素 -------> 增加默认配置的语言 --------> 增加默认配置路径
配置完毕的环境为
core,loaderExtras,mods,versions,base,cdn,_idx,_used,_attached,_missed,_yidx,_uidx,_guidp,_loaded,_BASE_RE,parseBasePath,getBase,cssStampEl,add,remove,3.12.0,
YUI 之yui.js的更多相关文章
- 使用雅虎YUI Compressor压缩JS过程心得记录
对待发布的项目进行测试时,发现js下载量比较大,从jquery的min版想到了压缩项目中的js文件.很简单的google之(在此,强调一下google的重要性),搜到一个叫做YUI Compresso ...
- Jquery,YUI这个著名js库名称作用的理解
看廖雪峰大神的教程,其中讲到变量作用域问题.在命名空间中,写到:因为全局变量绑到了window上,不同的js文件访问相同全局变量或者定义了相同名字的顶层函数,都会造成命名冲突,并且很难被发现. 减少冲 ...
- YUI+Ant 实现JS CSS压缩
今天研究了一下YUI yahoo开源框架,感觉很猛啊. 于是乎我做了一个YUI的ant实现,网上好多关于bat的实现,我就另辟蹊径,出个关于这个的ant实现,嘿嘿独一无二的文章,如果转载的话,其注明作 ...
- 使用YUI+Ant 实现JS CSS压缩
今天研究了一下YUI yahoo开源框架,感觉很猛啊. 于是乎我做了一个YUI的ant实现,网上好多关于bat的实现,我就另辟蹊径,出个关于这个的ant实现,嘿嘿独一无二的文章,如果转载的话,其注明作 ...
- JAVA使用YUI压缩CSS/JS
前言 JS/CSS文件压缩我们经常会用到,可以在网上找在线压缩或者本地直接使用,我这里使用的是yahoo开源组件YUI Compressor.首先介绍一下YUI Compressor,它是一个用来压缩 ...
- 【JS代码压缩】使用YUI Compressor对js文件进行压缩处理
概述 在使用html5开发Hybird APP的时候,可能会引入大量的js包,另外对于一些核心的js文件,进行一些特殊的处理, 如压缩和加密就显得很重要了,YUI Compressor就是这样一个用于 ...
- YUI Compressor JS和CSS压缩工具使用方式(使用前安装JDK)
压缩测试: 选中 test.js, 执行右键菜单“Process with &YUICompressor”,会生成 test-min.js. 注意事项: 1. 需要安装 JDK >= 1 ...
- YUI的模块化开发
随着互联网应用越来越重,js代码越来越庞大,如何有效的去组织自己的代码,变得非常重要.我们应该学会去控制自己的代码,而不是到最后一堆bug完全不知道从哪冒出来.前端的模块化开发可以帮助我们有效的去管理 ...
- YUI 的模块信息配置优先级关系梳理
背景 YUI的配置参数较多, 可以在好几个地方配置一个module的相关信息, 如: //在全局配置, 所以YUI实例共享 YUI_config = { modules: { 'w-autcomple ...
随机推荐
- mysql中的JOIN用法总结
join是mysql中一个基础的关键词,一般在多表连接查询中使用,这里做一下总结 1.JOIN的语法格式 table_references: table_reference [, table_refe ...
- 一些不太常用的Linux命令
ACCTCOM 查看所有用户执行过的进程 acctcom | tail - 查看指定用户执行过的进程/命令 acctcom -u <username> | tail - 使用一个正则表达式 ...
- android使用apktool反编译出现Input file (d:\t) was not found or was not readable
Input file (d:\t) was not found or was not readable 出现这个错误是因为apktool压缩包下载错误,我是下成首页的那个压缩包了 正确下载地址:htt ...
- Linux下静态编译Qt
Qt采用编译的方式安装的时候,配置中默认的编译方式是动态编译的,但是有时候你编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译你的程序,Qt要实现静态编译必须库文件也是静态编译的,所 ...
- xcode安装
Xcode5.1默认不支持iOS5版本的模拟器开发调试,在OS X Mavericks(10.9.x)下默认只能支持iOS6.1及以上版本的模拟器,在OS X Mountain Lion(10.8.x ...
- 解决Qt5.7.0 cannot find -lGL
很久没用Qt了,这次要做一个协议编辑器,在ubuntu 14.04上安装了最新版本的Qt 5.7.0.界面改用扁平化风格,第一感觉还不错.按默认步骤创建了一个gui程序,编译运行,报了一个错:cann ...
- 解决Xcode8 输出一对字符串问题
在Product->Scheme->Edit Scheme->Run->Environment Variables下添加键:OS_ACTIVITY_MODE, 值:Disabl ...
- MongoDB Connector for Hadoop
MongoDB Connector for Hadoop https://github.com/mongodb/mongo-hadoop Purpose The MongoDB Connector f ...
- linux nc命令
即NetCat简写,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本.因为它短小精悍(1.84版本也不过25k,旧版本或缩减版甚至更小).功能实用,被设计为一个简单.可靠的网络工具 ...
- linux stat命令
在Linux中,文件没有“创建时间”这个说法.Linux中的文件的时间属性只有三个:atime(Access time).mtime(Modified time).ctime(Change time) ...