博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原创】(AMD)JavaScript模块化开发(dojo)
阅读量:6333 次
发布时间:2019-06-22

本文共 3110 字,大约阅读时间需要 10 分钟。

AMD原理等在这里就不进行说明了,作者也是菜鸟一枚,只是对自己的一个实例进行说明,如有错误,望指出。

首先,先推荐一篇AMD方面的文章,有兴趣的可以参考:

 

接下来便是我自己的实例了:

1.模块化编程,则需要先有个模块了,而模块便是由HTML与js结合成的,在widget目录下,定义一个待编辑模块目录:

HTML内容如下:

1 
2
3
4
5

显示收藏点

6
地图
7
8
9

开启路网

10
卫星
11
全景
12
13
data-dojo-attach-point="mapTypeDom"为该标签指定实践时使用。 接下来是js中的内容,使用dojo/text!将js与html结合,并加载样式(css)和添加鼠标移入移除事件:
1 /** 2  * Created by lenovo on 2016/12/18. 3  */ 4  5 define([ 6     "dojo/_base/declare", 7     "dojo/text!/scada/app/widget/viewchoose/templates/viewchoose.html", 8     "dijit/_WidgetBase", 9     "dojo/dom",10     "dojo/on",11     "dijit/_TemplatedMixin",12 13 14 ], function (declare, template, _WidgetBase, dom, on, _TemplatedMixin) {15 16     return declare([_WidgetBase, _TemplatedMixin], {17 18         templateString: template,// 设置模板页19         baseClass: "viewchoose",// 基础样式名称20 21         /**22          * 控件销毁时的处理。23          */24         uninitialize: function () {25 26         },27 28         /**29          * 控件在渲染到页面上显示时的处理。30          */31         startup: function () {32 33         },34 35         /**36          * 控件加载到页面DOM上,浏览器渲染显示之前的处理。37          */38         postCreate: function () {39             alert("1");40             this._initRes();// 初始化资源41             this._initEvent();// 初始化内部事件42 43 44 45         },46 47         /**48          * 初始化本控件内部的事件处理。49          *50          * @private51          */52         _initEvent: function () {53             this.initEvent();54         },55 56 57         /**58          * 初始化本控件内部的资源(样式、脚本、数据等)。59          *60          * @private61          */62         _initRes: function () {63             //加载样式64             dynamicLoad.resource([require.toUrl("/scada/app/widget/viewchoose/css/viewchoose.css")]);65         },66         initEvent: function () {67             this.own(68                 on(this.mapTypeDom, "mouseover", function () {69                     // $('#dijit__TemplatedMixin_0').removeClass('viewchoose');70                     $('.viewchoose').addClass('expand');71                 }),72                 on(this.mapTypeDom, "mouseout", function () {73                     $('.expand').removeClass('expand');74                 })75             );76         },77 78     });79 });

js中均有注释,就不在做说明。

2.接下来便是如何引用该模块。

创建测试的HTML,以及js:

 

 test.html中,需引入jquery、dojo相关包,以及test.js

1  2  3  4     
5
7
8
9
10 测试AMD11 12 13 14 15 16 17 18 19 20
21 22 33 34

test.js中引入模块化的对象,放入需使用的地方:

1 /** 2  * Created by lenovo on 2016/12/21. 3  */ 4  5 require([ 6     "viewchoose/ViewChooseWidget.js","dojo/dom","dojo/domReady!" 7  8 ],function (widget,dom) { 9     var viewchooseObj = new widget();10     var contDom = dom.byId('testamd');11 12     viewchooseObj.placeAt(contDom);13 })

 

以上。

 

转载于:https://www.cnblogs.com/sunnyny/p/6217386.html

你可能感兴趣的文章
Spring3全注解配置
查看>>
ThreadLocal真会内存泄露?
查看>>
IntelliJ IDEA
查看>>
低版本mybatis不能用PageHeper插件的时候用这个分页
查看>>
javaweb使用自定义id,快速编码与生成ID
查看>>
[leetcode] Add Two Numbers
查看>>
elasticsearch suggest 的几种使用-completion 的基本 使用
查看>>
04-【MongoDB入门教程】mongo命令行
查看>>
字符串与整数之间的转换
查看>>
断点传输HTTP和URL协议
查看>>
redis 数据类型详解 以及 redis适用场景场合
查看>>
mysql服务器的主从配置
查看>>
巧用AJAX技术,通过updatePanel控件实现局部刷新
查看>>
20140420技术交流活动总结
查看>>
SaltStack配置salt-api
查看>>
各种情况下block的类型
查看>>
ThinkPHP 3.2.x 集成极光推送指北
查看>>
js作用域链
查看>>
java中如何选择Collection Class--java线程(第3版)
查看>>
为运维人员插上腾飞更远的翅膀!
查看>>