RequireJs初步了解和使用

RequireJs的作用:
1.防止js加载阻塞页面渲染
2.使用程序调用的方式加载js,防止书写过多的.js文件
require会定义三个变量:define,require,requirejs,其中require === requirejs,一般使用require更简短
define 从名字就可以看出这个api是用来定义一个模块
require 加载依赖模块,并执行加载完后的回调函数
关于requireJs的几个小Demo
首先添加requireJs的js文件
Demo1:
这里写图片描述
a.js

//第一种写法
/*function fun1(){
  alert("it works");
}

fun1();*/
//第二种写法
/*(function(){
    function fun1(){
      alert("it works2");
    }

    fun1();
})()*/


//第三种写法
/*define(function(){
    function fun1(){
      alert("it works");
    }

    fun1();
})*/
//第四种写法
define(["test1",'js2/test2'],function(test1,test2){
    function fun1(){
      alert("it works");
      alert(test1.add(3,7));
      alert(test2.sub(10,4));
    }

    fun1();
})

test1.js

define(function(){
     var add=function(x,y){
          return x+y;
        };
        return{
            add:add
        };

});

main.js

require.config({
    paths : {
       /* "test1":"test1",*/
        "a":"a"
    }

})

.jsp写法

<script src="js/require.js" data-main="js/main"></script>
<script type="text/javascript">
/* require(["test1","a"],function(test1,a){
    alert(test1.add(5,8));
}) */
require(["a"],function(a){
    alert(a);
})
</script>

Demo2:
定义一个.js文件

define(
    [
        'dojo/_base/declare',
        'dist/js/command/_baseCommand'
    ],function(declare,baseCommand) {
        var exports = dojo.declare("CommonMethods",baseCommand, {

             tableId:null,  
             myMap:null,
             url:null,
             guid:"1EC3E7ED-0F84-4E80-A681-F7E49D48535A",
             name:"CommonMethods",

            /**
             * 构造函数
             * @param map Map对象
             * @returns 无
             */
            constructor: function (tableId) {                     
                 this.tableId=tableId;

            },

            /**
             * 点击
             * @returns 无
             */
            daochu:function(){
                try{                
                 var tableData='<table cellspacing="0" class="pb" border="2">';
                 tableData+='\n<tr>';
                 var tableName='';
                 var tableArray=[];
                 //获取列
                 var opts = $(this.tableId).datagrid('getColumnFields');
                 //获取表头和表头属性
                 for(var i=1;i<opts.length;i++){
                     var col = $(this.tableId).datagrid( "getColumnOption" , opts[i] );
                     tableData+='\n<th>';
                     tableData+=col.title;
                     tableData+="</th>";
                    // tableArray.push(col.title);
                     tableArray[i]=opts[i];
                 }
                 tableData+='</tr>';
                /* for(var i=0;i<tableArray2.length;i++){
                     tableData+=tableArray2[i]+",";
                 }*/
                 /*for(var i=0;i<tableArray.length;i++){
                     tableData+='\n<th>';
                     tableData+=tableArray[i];
                     tableData+="</th>";             
                 }*/
                var table=$(this.tableId).datagrid("getRows");//获取当前页的所有行 
                for(var i=0;i<table.length;i++){
                   tableData+='\n<tr>';
                    for(var j=1;j<tableArray.length;j++){
                        if(table[i][tableArray[j]]!=null){
                                tableData+='\n<td>'+table[i][tableArray[j]]+'</td>';   

                        }else{
                            tableData+='\n<td>'+'暂无数据'+'</td>';
                        }                                       
                    }
                    tableData+='</tr>';
                }
                tableData+='</table>';
                 document.getElementById("hlf").value=tableData;
                var ss=document.getElementById("hlf").value ;
                // alert("sss");
                 document.getElementById("formAction").submit();                                  
                }catch(ex){

                }
            }

        });
        return exports;
    }
);

格式就是:

define([xxx,xxx2,xxx3],function(xxx1,xxx2,xx3){
  var methodName=dojo.declare("本.js名称"{

         tableId:null,
        name:"本.js名称",
        constructor: function (tableId) {                     
                 this.tableId=tableId;

            },
        daochu:function(){
        },


});
return methodName;
})

其他.js文件调此.js文件的方法
首先在顶端添加依赖
然后通过new一个对象使用
示例:

 $("#report").on('click',function(){                   
                     //this.mCommonMethods=new CommonMethods(this.myMap,"#staticsTable");
                      this.mCommonMethods=new CommonMethods("#staticsTable");                             
                      this.mCommonMethods.daochu();                                            
                });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值