为了规范在项目中使用的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. [FML]学习笔记三 Rademacher Complexity

    该章节证明用到的不等式:Hoeffding不等式,McDiarmid不等式以及jensen不等式 Hoeffding's: McDiarmid不等式是Hoeffding不等式的一个推广,用f(S)代替 ...

  2. 添加AdMob 错误记录

    依照官方教程添加文件及其 frameWork后 发现运行报错 错误如下 Undefined symbols for architecture i386: "_OBJC_CLASS_$_ASI ...

  3. 【转】简析SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue

    转载地址:http://blog.csdn.net/mn11201117/article/details/8671497 SynchronousQueue SynchronousQueue是无界的,是 ...

  4. My Eclipse 自动提示

    1.My Eclipse 自带代码提示快捷键 “ alt+/”. 2.输入即提示:window-->preferences-->java-->Editor 展开后点击Content ...

  5. ORA-19573: cannot obtain exclusive enqueue for datafile 1

    还原Oracle数据库时出现ORA-19870和ORA-19573错误,如: RMAN> restore database; Starting restore at 11-DEC-12 usin ...

  6. GetSystemTime API可以得到毫秒级时间

    用Now返回的日期格式中年只有2位,即2000年显示为00, 这似乎不太令人满意. 此外Now和Time都只能获得精确到秒的时间,为了得到更精确的毫秒级时间,可以使用API函数GetSystemTim ...

  7. new SqlSessionFactoryBuilder().build(inputStream, properties)

    SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream, properties); ...

  8. ACM-简单题之Ignatius and the Princess II——hdu1027

    转载请注明出处:http://blog.csdn.net/lttree Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Othe ...

  9. FileSystemWatcher使用方法具体解释

    FileSystemWatcher控件主要功能: 监控指定文件或文件夹的文件的创建.删除.修改.重命名等活动.能够动态地定义须要监控的文件类型及文件属性修改的类型. 1.经常使用的几个基本属性: (1 ...

  10. visual studio 2015离线版msdn下载和安装

    2014年11月13日,微软发布了Visual Studio 2015 Preview,但是Visual Studio 2015 的msdn该如何安装呢?下面脚本之家就为大家分享一篇visual st ...