读书人

jquery.artDialog在requireJS中使用遇

发布时间: 2013-02-24 17:58:56 作者: rapoo

jquery.artDialog在requireJS中使用遇到的加载顺序问题

jquery.artDialog估计没有支持AMD规范,所以当使用requireJS和AMD的模块化方法时,一开时没有碰到问题。后来在慢速网络环境下,发现jquery还没有完全加载完成,artDialog已经加载完并报错,导致总是要重新刷一次页面。

requireJS提供的解决方案叫做shim, 参考文档:http://requirejs.org/docs/api.html#config-shim

反复实验了多次,搞明白了怎么做:

1.每个html页面里面都会加载一个js文件,在这个js文件里面调用require.config,所有的配置都写在里面,包括shim

比如我的页面叫login.html,里面加载了loginModule.js文件:

define("dialog", ["jquery", "jquery.artDialog"], function ($, artDialog) {'use strict';return {cancelText: "",locale: "",okText: "",titleText: "",// language should be either 'cn' or 'en'init: function (locale) {this.locale = locale;if (locale === "cn") {this.cancelText = "取消";this.okText = "确定";this.errorTitleText = "错误";this.okTitleText = "信息";} else {this.cancelText = "Cancel";this.okText = "OK";this.errorTitleText = "Error";this.okTitleText = "Info";}},error: function (message) {$.dialog({title: this.errorTitleText,icon: "error",content: message,okVal: this.cancelText,ok: function () {this.close();}});},done: function (message) {$.dialog({title: this.okTitleText,icon: "ok",content: message,okVal: this.okText,ok: function () {this.close();}});}};});

用好RequireJS需要耐心,配置这玩意儿,光靠看文档还要结合自己的实际情况反复实验才行。

顺便知道了每个页面的requireJS配置只需要在top level也就是html页面直接引用的那个js文件中添加require.config... 即可。其他的js文件里就不需要了。

如果有多个页面,显然需要多个这样的top level 文件。有人叫做bootstrap,名字也很合适。



读书人网 >JavaScript

热点推荐