Dojo中declare和define的區別

2021-08-15 19:53:33 字數 1721 閱讀 5951

先看define。作用是定義乙個模組(module)。這個模組可以被require引用,引用了之後就可以使用define裡面的東西。乙個模組想當然,裡面幹什麼事情,不一定全部自己實現。就像人要coding,除了腦子,也不能沒有電腦、鍵盤。因此,define的第乙個引數就是將要用到的其他模組引進來。第二個引數描述這個模組具體幹什麼,並且給第乙個引數中的模組分別起乙個朗朗上口的名字。就像下面這段**描述的樣子。

util.js

define([ "dojo/dom"], function(dom)   

};

});

這是乙個工具模組,其中乙個功能就是把網頁上id對應的dom節點變成紅色。當我們要使用它的時候,就可以用require了。

test.jsp

可以看到,上面的模組util作為工具模組,可以在被引用後任意呼叫其功能。這是無狀態的,就好象是乙個singleton的物件。但如果我們想定義「類」一樣的東西,有狀態,可以建立多個物件,就需要在define裡用declare。最典型的例子就是dijit下面的諸多ui小控制項。

舉個很簡單的例子,我希望基於dijit.dialog,建立乙個有特殊功能的dialog,每次開啟後能把上面的一段text標記為紅色。

redtextdialog.js

define([ "dojo/_base/declare", "dijit/dialog", "dijit/_widgetbase",  

"dijit/_templatedmixin", "test/util" ], function(declare,

dialog, _widgetbase, _templatedmixin, util)

});

});

redtextdialog可以重寫dijit.dialog所有的方法,也可以自創方法、變數,實現自己想要的任意功能。接下來可以用require使用它。

可以看到,每次使用redtextdialog時,都可以建立乙個新的物件例項,因此可以做到互相之間沒有關係。

目錄結構

為了在test.jsp中呼叫上述js檔案,需要在test.jsp宣告js檔案的位置。

最後,約定俗成地,一般define類似util的singleton模組,js檔案的名字第乙個字母小寫;而類似redtextdialog的類模組,第乙個字母大寫。

js檔名稱即為模組名

define(["dojo/_base/declare"], function(declare)

});});

js檔名稱即為模組名,重寫***xx

define(["dojo/_base/declare","dojo/***xx"], function(declare,***xx)

});});

modulename名稱即為模組名,重寫***xx

define(["dojo/_base/declare","dojo/***xx"], function(declare,***xx)

});});

SQL中declare申明變數

在sql語句中加入變數。declare local variable data type 宣告時須要指定變數的型別,能夠使用set和select對變數進行賦值,在sql語句中就能夠使用 local variable來呼叫變數 宣告中能夠提供值,否則宣告之後全部變數將初始化為null。比如 decla...

mysql中declare語句用法

mysql中的declare語句是在復合語句中宣告變數的指令。1 example with two declare statements 兩個declare語句的例項 create procedure p8 begin declare a int declare b int set a 5 set ...

SQL中的declare用法

平時寫sql查詢 儲存過程都是憑著感覺來,沒有 過sql的具體語法,一直都是按c 那一套往sql上模仿,前幾天專案中碰到乙個問題引起了我對declare定義變數的作用域的興趣。大家都知道c 中的區域性變數,在if中如果我們定義乙個變數的話他的作用到if結束為止,if外是不識別這個變數的,else裡都...