zoukankan      html  css  js  c++  java
  • easyloader [easyui_1.4.2] 分析源码,妙手偶得之

    用easyui很久了,但是很少去看源码. 有解决不了的问题就去百度... 

    今日发现,easyui的源码不难懂. 而且结合 easyloader 可以非常方便的逐个研究easyui的组件.

    但是, easyloader 的官方API介绍非常简略. 

    easyloader.base = '../'; // 设置 easyui 基础目录  
    easyloader.load('messager', function(){ // 加载指定模块  
        $.messager.alert('Title', 'load ok'); 
    }); 
    

    如上:

    (1) easyloader.base ,应该指向哪个目录? 

    (2) easyloader.load('messager', ...  不需要提前引入css文件吗?

    API里没有说明这些问题. 没办法,只能去看源码了.

    看过源码之后, 可以知道:

    (1) easyloader.base -> 应该指向一个root目录, 此root目录必须是包含plugins, themes, locale ,其实就是从官网下载的easyui某个版本解压后的根目录. (源码中明确设定,加载css从themes目录获取, 加载js从plugins目录获取...)

    (2) easyloader.load('messager', function(){}); 也可以写成 using('messager',function(){}) . 这种写法是采用loadModule()方式加载文件的. 会加载module的js和css以及依赖module的js和css.

    easyloader 的源码比较简单. 分析源码时,我是采用妙味课堂杜鹏老师分析jquery的方法来的. 分析如下,比较简陋,原因是不难,没什么可写的.

    * easyloader [easyui_1.4.2]
    	|- 源码 {426} 行.
    
    (function(){
    	modules: {} 	//(15, 199)
    	locales: {} 	//(201, 224)
    	queues: 
    	loadJs(): 		//(228, 244)
    	runJs(): 		//()
    	loadCss(): 		//
    	loadSingle(): 	//(267, 307)
    	loadModule(): 	//(309, 371)
    	easyloader: { 	//(373, 403)
    		modules:
    		locales:
    		base:
    		theme:
    		css:
    		locale:
    		timeout:
    		load:
    		onProgress:
    		onLoad:
    	}
    	
    	window.using = easyloader.load; 	//(415, )
    
    })();
    

      

    写个小例子.

    jquery-easyui-1.4.2

      |- locale

      |- my

        |- demo1

          |- test.html

      |- plugins

      |- themes

    ...

    test.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    	<script type="text/javascript" src="../../jquery.min.js"></script>
    	<script type="text/javascript" src="../../easyloader.js"></script>
    	<script type="text/javascript">
    		//
    		easyloader.base = "../../";
    		using('messager', function(){
    			$.messager.alert('系统提示','Hello World!','info');
    		});
    	</script>
    </head>
    <body>
    	
    </body>
    </html>
    

    jquery和easyloader本身必须引入.其他的js和css就不用引入了. 

    easyloader只是加载easyui量声定制的. 用来作研究还可以. 万能加载还是得学习使用 require.js 和 sea.js

  • 相关阅读:
    java学习---集合框架
    java学习--java.util包中常用类
    java学习--java.lang包中常用的类
    JAVA学习--OOP
    Python入门-Hello Word
    【洛谷1452】【模板】旋转卡壳
    【洛谷2766】最长不下降子序列问题(网络流)
    【洛谷3355】骑士共存问题(网络流)
    【洛谷1251】餐巾计划问题(费用流)
    【洛谷3358】最长k可重区间集问题(费用流)
  • 原文地址:https://www.cnblogs.com/juedui0769/p/5111702.html
Copyright © 2011-2022 走看看