cocos creator 引擎是如何處理腳本的

引擎如何處理js腳本

舉例一個js腳本來剖析到底引擎都會我們編寫的腳本做了什么工作
腳本源碼為:

?
image
?

引擎在run過程中,會加載所有的js腳本

?
image
?

這里出現(xiàn)了nodejs里面經(jīng)常提到的module.exports,

?
image
?

?
image
?

可以看到腳本源碼被cc._RF進行了封裝處理,而module.func來源自cc.registerModuleFunc()


image.png

換而言之,我們寫的腳本源碼其實在引擎run的過程,都會被執(zhí)行一遍,function在js中也被認為是一個變量,所以,我們可以進一步驗證我們的猜想,我們增加了如下代碼


image.png

image.png

如果不出意外,那么TestFunc肯定是在第一個scene啟動之前就執(zhí)行了,也許你能得到一點啟發(fā),但是這種寫法,不建議濫用

module.exprots / require

我們在使用腳本的時候,經(jīng)常會使用require("ScriptName")來引入我們的組件腳本,那么require到底做了什么呢?追查源碼發(fā)現(xiàn),最終是在調(diào)用cc.require()

image.png

很熟悉的func,但是我們可以看到有m.module的判斷,這個func是啥呢

也是之前很熟悉的代碼,就是能執(zhí)行我們js腳本的一個function,更多細節(jié)就不再說啦,可以仔細翻看源碼
下邊重點說說module.exports,這個東西其實是nodejs的一個設(shè)計思想,詳細參考資料看這里
簡而言之,每個node模塊,都可以理解為一個單例,一單程序加載,是永久暫留到內(nèi)存中的
那么new是怎么回事呢?為什么cc.Class要new呢?其實cc.Class返回的是function,至于在js中

new function(){
}

可以參考這篇文章: https://www.cnblogs.com/pizitai/p/6427433.html

那么require又干了什么事情呢?
可能這張圖就有點復(fù)雜了,不過能幫助你真正理解require


image.png

可以看到editor環(huán)境代碼其實和runtime環(huán)境代碼是在一起的,用CC_EDITOR作了區(qū)分

總結(jié)

  • 以下情況建議這么編碼:
    • 該腳本和界面無關(guān)
    • 單純的邏輯腳本
    • 單例模式
    cc.moduleA = module.exports ={
      propertyA:1,
    }
    
    那么這樣也是可以在任何地方直接使用cc.moduleA,因為run()的過程,已經(jīng)正確加載了模塊
  • 和界面有關(guān)的腳本建議使用cc.Class(),因為本身cc.Class()和引擎的關(guān)系更密切
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贰盗,一起剝皮案震驚了整個濱河市闷畸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌果录,老刑警劉巖浓体,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攒菠,死亡現(xiàn)場離奇詭異寇僧,居然都是意外死亡亚情,警方通過查閱死者的電腦和手機妄痪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來楞件,“玉大人衫生,你說我怎么就攤上這事⊥两” “怎么了罪针?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長栅迄。 經(jīng)常有香客問我站故,道長,這世上最難降的妖魔是什么毅舆? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任西篓,我火速辦了婚禮,結(jié)果婚禮上憋活,老公的妹妹穿的比我還像新娘岂津。我一直安慰自己,他們只是感情好悦即,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布吮成。 她就那樣靜靜地躺著橱乱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粱甫。 梳的紋絲不亂的頭發(fā)上泳叠,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音茶宵,去河邊找鬼危纫。 笑死,一個胖子當著我的面吹牛乌庶,可吹牛的內(nèi)容都是我干的种蝶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼瞒大,長吁一口氣:“原來是場噩夢啊……” “哼螃征!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起透敌,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤盯滚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拙泽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淌山,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年顾瞻,在試婚紗的時候發(fā)現(xiàn)自己被綠了泼疑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡荷荤,死狀恐怖退渗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蕴纳,我是刑警寧澤会油,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站古毛,受9級特大地震影響翻翩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稻薇,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一嫂冻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧塞椎,春花似錦桨仿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钱雷。三九已至,卻和暖如春吹零,著一層夾襖步出監(jiān)牢的瞬間罩抗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工瘪校, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留澄暮,地道東北人名段。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓阱扬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親伸辟。 傳聞我的和親對象是個殘疾皇子麻惶,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容