dojo Quick Start/dojo入门手册--package机制
說(shuō)完了dojo里的類繼承機(jī)制,不得不說(shuō)說(shuō)package機(jī)制。
主要用到的有
dojo.require
dojo.provide
dojo.registerModulePath
dojo.require
dojo.require就是引入相應(yīng)路徑文件下的js文件,現(xiàn)在已經(jīng)有很多l(xiāng)ibrary這樣做了。現(xiàn)在我們假設(shè)要用project/dojo-lib/dojo/string.js
dojo中的頂層目錄就是dojo.js所在目錄的上一層,即"project/dojo-lib/",而dojo.js放在project/dojo-lib/dojo/dojo.js 所以我們就這樣:
dojo.require("dojo.string");
比如要引用其他目錄下的:
project/dojo-lib/dojox/dtl/_base.js,則這樣:dojo.require("dojox.dtl._base"); project/dojo-lib/dojox/grid/Grid.js dojo.require("dojox.grid.Grid");
說(shuō)白了,就和ruby之類的require很相似。
dojo.provide
要自己編寫(xiě)一個(gè)package怎么辦,那就利用dojo.provide。比如要寫(xiě)在:project/dojo-lib/com/javaeye/fyting/Package1.js 那么在對(duì)應(yīng)的Package1.js中第一行需要這樣寫(xiě):
dojo.provide("com.javaeye.fyting.Package1");
類似java里的package聲明,是吧?
dojo.registerModulePath
那要是我寫(xiě)的js文件不想和dojo放在一起怎么辦呢,那就用registerModulePath。假設(shè)要放在:
project/js/com/javaeye/fyting/Package2.js
Package2.js和上面的Package1.js一樣的寫(xiě)法,不需要作特殊變化,就這樣就行:
dojo.provide("com.javaeye.fyting.Package2");
在使用時(shí),需要指名這個(gè)Package2.js所在的位置,
dojo.registerModulePath("com","http://www.cnblogs.com/js/com");
只需要注意這里的相對(duì)路徑是相對(duì)dojo.js來(lái)的。
我們假設(shè)所有以com.javaeye開(kāi)頭的js都放在一起,而com.microsoft的放在另外的地方,為了防止沖突,可以這樣:
dojo.registerModulePath("com.javaeye","http://www.cnblogs.com/js/com/javaeye");
dojo.registerModulePath("com.microsoft","http://www.cnblogs.com/javascript/com/microsoft");
總得來(lái)說(shuō),package機(jī)制是開(kāi)發(fā)大型項(xiàng)目必須的,但是造成了調(diào)試?yán)щy,使用dojo.require引入js出錯(cuò)時(shí),根本不知道是什么原因,所以調(diào)試時(shí)最好手動(dòng)引入js,dojo的test也是這么搞的。還有js框架中的各種實(shí)現(xiàn)類繼承的手法,也造成調(diào)試?yán)щy,dojo還隨地拋出個(gè)Error,又缺少java那樣的error statck,根本不知道錯(cuò)誤根源在哪兒。所以,期待js原生地支持這些。
總結(jié)
以上是生活随笔為你收集整理的dojo Quick Start/dojo入门手册--package机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 把SQL Server 错误日志导出为E
- 下一篇: Android 拍照是开启(调用)闪光灯