为了规范在项目中使用的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. django删除migrations

    先把migrations文件夹里面的数据删除. 删除数据库中关联的表 删除django_migrations里面关联的数据(因为在migrate的时候发现django_migrations表有相关数据 ...

  2. ubuntu vim YCM

    http://blog.sina.com.cn/s/blog_499386b00100rxm1.html http://www.cnblogs.com/junnyfeng/p/3633697.html

  3. 解决SQL server不支持utf8,php却用utf8的矛盾问题

    function convert2utf8($string) { return iconv("gbk","utf-8",$string); } function ...

  4. 2013第49周一jsp标签

    2013第49周一jsp标签 今天在调试一些前台页面上的问题,在处理structs标签.jstl标签时遇到了些麻烦,为了调用后台数据字典中的类方法,开始在<c:forEach>中尝试怎么样 ...

  5. 解决IE6 IE7 JSON.stringify JSON 未定义问题

    在项目中引入json2.js 官方http://www.json.org/ 源码地址:https://github.com/douglascrockford/JSON-js $.ajax({ url: ...

  6. Hdu1401-Solitaire(双向bfs)

    Solitaire is a game played on a chessboard 8x8. The rows and columns of the chessboard are numbered ...

  7. LVM(2)逻辑卷的扩展、缩减、快照卷

    一.扩展逻辑卷:lvextend   扩展逻辑卷物理边界    -L [+]# /PATH/TO/LV2G, +3G5G

  8. Hive 3、Hive 的安装配置(本地derby模式)

    这种方式是最简单的存储方式,只需要在hive-site.xml做如下配置便可; $ vim hive-site.xml <configuration>   <property> ...

  9. c#图像处理入门

    一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetP ...

  10. qt Graphics View Framework(非重点)

    Graphics View 提供了一种接口,用于管理大量自定义的 2D 图形元素,并与之进行交互:还提供了用于将这些元素进行可视化显示的观察组件,并支持缩放和旋转. 说明;Graphics View ...