为了规范在项目中使用的javascript代码,我们使用了requirejs框架。

初始阶段,我们在按钮的点击事件中调用创建的模块,代码如下:

function button_click() {
    _this = this;
    var args = _this["Command_Params"] || (_this.config || {})["Command_Params"];
    var cmd = _this["Command"];
    if (cmd) {
         cmd.onclick?cmd.onclick(args):"";
    } else {
        var url = _this["Command_Url"] || (_this.config || {})["Command_Url"];
        if (!url) return;
        require([url], function(Class) {
            var cmd = new Class(_this, args);
            cmd.onclick(args);
            _this["Command"] = _this["Command_Singled"] || (_this.config || {})["Command_Singled"] == false ? null : cmd;
        });
    }
}

在这里我们在按钮的属性中添加了Command_Url来标识模块地址,监听了按钮的点击事件,在点击的时候引用按钮中配置的模块并执行onclick方法。不得不说这是一种很简便的使用模块的方式,但是不是严格的AMD模式。

后来在使用的过程中突然想在页面初始化的时候引用一个模块,直接使用require方法就出现了问题:

    require(["./plug-in/jtgcmobile/dd/user.js"],function(Class){
        var user =new Class();
        user.showSomeThing();
        user.login();
    })
require.js:166 Uncaught Error: Mismatched anonymous define() module: function (){return o}

纠结了好长时间,发现这个方法在控制台可以直接运行,排除模块定义错误、加载代码错误。那就剩下一个问题,requirejs的加载模式问题导致在页面加载的过程中无法执行require方法。

又去看了一下官方的文档,文档上虽然没有明说不可以这样使用,但是提供了一个方法在页面初始化的时候加载模块。代码如下:

<script data-main="scripts/main" src="scripts/require.js"></script>

也就是说在加载requirejs的时候就要指定初始加载模块。

按照这种方式加载后一切正常了。

所以  data-main 属性还是比较重要的。

 

requirejs学习之-- 初始化(一)的更多相关文章

  1. struts2源代码学习之初始化(一)

    看struts2源代码已有一段时日,从今天開始,就做一个总结吧. 首先,先看看怎么调试struts2源代码吧,主要是下面步骤: 使用Myeclipse创建一个webproject 导入struts2须 ...

  2. RequireJS学习资料

    RequireJS学习资料汇总   入门系列 [1]阮一峰 RequireJS用法 [2]RequireJS入门指南 文档系列 [1]RequireJS中文文档 [2]RequireJS英文文档 代码 ...

  3. Git学习(一):初始化仓库、添加文件、版本回退

    目录 Git学习(一):初始化.添加文件.版本回退 初始化一个仓库 添加文件到Git仓库 版本回退 Git学习(一):初始化.添加文件.版本回退 初始化一个仓库 本文使用的命令行工具为cmder,部分 ...

  4. RequireJS 学习资料收集

    RequireJS 学习资料收集 RequireJS 模块化管理 Javascript 比较优秀. RequireJS 英文官网 https://requirejs.org/ RequireJS 中文 ...

  5. requirejs学习(一)

    requirejs学习(一) 随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,各种依赖(插件等)也逐渐增多,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在的需求,我们 ...

  6. RequireJS学习笔记

    前言 进入移动前端是很不错的选择,这块也是我希望的道路,但是不熟悉啊... 现在项目用的是require+backbone,整个框架被封装了一次,今天看了代码搞不清楚,觉得应该先从源头抓起,所以再看看 ...

  7. RequireJS学习笔记(转)

    前言 进入移动前端是很不错的选择,这块也是我希望的道路,但是不熟悉啊... 现在项目用的是require+backbone,整个框架被封装了一次,今天看了代码搞不清楚,觉得应该先从源头抓起,所以再看看 ...

  8. [深度学习] 权重初始化--Weight Initialization

    深度学习中的weight initialization对模型收敛速度和模型质量有重要影响! 在ReLU activation function中推荐使用Xavier Initialization的变种 ...

  9. 吴恩达课后作业学习2-week1-1 初始化

    参考:https://blog.csdn.net/u013733326/article/details/79847918 希望大家直接到上面的网址去查看代码,下面是本人的笔记 初始化.正则化.梯度校验 ...

随机推荐

  1. DataTables选择行并删除(删除单行)

    $(document).ready(function() { var table = $('#example').DataTable(); $('#example tbody').on( 'click ...

  2. 100个iOS开发/设计程序员面试题汇总,你将如何作答?

    100个iOS开发/设计程序员面试题汇总,你将如何作答? 雪姬 2015-01-25 19:10:49 工作职场 评论(0)   无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目, ...

  3. 图铭Android平台银行卡号识别系统

    随着智能终端(智能手机及平板电脑)及移动通信(3G)的发展,原来运行在PC上的信息系统(如邮件系统.即时通信.网页浏览.协同办公.网络购物.社交网站.博客等)逐渐转移到智能终端设备上.可以预见未来几年 ...

  4. hdu 1255 覆盖的面积

    http://acm.hdu.edu.cn/showproblem.php?pid=1255 #include <cstdio> #include <cstring> #inc ...

  5. Keil C51 知识点

    第一节 Keil C51扩展关键字     深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一.因为大多数扩展功能都是直接针对8051系列CPU硬件的.大致有以下8类: 8051存储类型 ...

  6. 在C中嵌入汇编

    早前公布了C和汇编混编的温度控制器程序,收到一些朋友的询问,他们无法在自己程序中使用我的18B20的汇编子程序或无法正常通过混编后的程序编译. 其实在KEIL中嵌入汇编的方法很简单.如图一,在C文件中 ...

  7. Qt实现基于G.729A(G729A)的语音聊天

    一.G.729协议简介G.729协议是由ITU-T的第15研究小组提出的,并在1996年3月通过的8Kbps的语音编码协议.G.729系列主要有以下几种:G.729—最基本的G.729标准协议,原始版 ...

  8. openwrt下和云端通讯的例程,

    openwrt下和云端通讯的例程 ibcurl 官方文档请参考这里 http://curl.haxx.se/libcurl/c/curl_easy_setopt.html 刚接触 libcurl的时候 ...

  9. 【转】树莓派学习笔记——I2C Tools 学习笔记

    原文网址:http://blog.csdn.net/xukai871105/article/details/15029843 1.安装     I2C驱动载入和速率修改请查看博文[树莓派学习笔记——I ...

  10. jsp页面判断文件上传类型

    <script language="javascript" type="text/javascript"> function check_file( ...