原來我真的不會用seajs

2021-07-13 15:02:55 字數 1402 閱讀 5005

關於seajs這裡無需多講,作為乙個前端開發或多或少都是聽過它的大名。

最近接手乙個專案,模組編寫使用cmd規範,載入使用seajs。ok,暫時也不太好更改這種模式,那就遵循現有的規範來寫**吧。

但是在檢視頁面載入的檔案列表時,我瞬間一臉懵逼,為啥呢?多出來幾個「不速之客」!如下圖

好吧,這麼說,可能大家還是一臉懵逼,六神無主,我們來看看具體的**

function

getdata

()

一眼看上去簡直是非常理想的模組按需載入的思路,getdata函式的執行需要依賴於webtools和jquery這2個模組,但是在它執行之前是不需要載入這2位大爺的,因此,我們在這個函式內部採取希望引入相應的模組。一切設想都是美好的,這裡同樣如此。

然後,**執行,在getdata還未執行時,我「驚喜」地發現,模組居然被引入了。發現這個問題以後,我在seajs的全域性配置檔案中,看是否這2個模組走了「快速」通道被預載入了,然後,配置檔案如下:

preload: ['jquery','commontemplate','webtools']
哦,原來是在這裡設定了模組預載入啊,問題的癥結原來是出在這裡?於是,我把這句配置**注釋掉,重新整理頁面,尼瑪…那幾個模組檔案還是被載入了。

難道是快取?不說了,我要清快取了,清完快取,重新整理頁面,模組還是被引用了!!!啥也不說了,讓我哭會兒先。這個時候看來沒什麼招了,那就去seajs的官方文件上瞅瞅去。

從文件上,鏈結到了[張老師的部落格],我直接把關鍵的資訊貼到下面

從這上面的說明,告訴我們,模組的載入實現不是執行時的,seajs會解析js靜態文字,提取require的模組對應的檔案並將它們載入到頁面上。而且,不管這個require**是否執行,都不影響它的載入。ps.讓seajs做乙個固執的美男子。

為了驗證這段話的真實性,於是我注釋掉沒有執行的require**,這些模組果然沒有被載入,看來真是這個原因,原來我們一直以為的按需載入都是自己誤解下的「按需載入」。

那麼,我們想在這裡按需載入,**不執行時不載入相應的模組,就得使用上面提到的

require.asyc('./a.js',function

(a))

經過這個「痛苦」迷惑的過程,終於把問題搞清楚了。其實歸根結底還是由於自己在使用乙個框架之前沒有非常深入地去了解它的機制,沒有了解透徹的第三方庫或者框架對於我們的專案而言無異於酣睡的猛虎/定時的炸彈。切忌人與亦雲,自勉!

—-前端c羅

MYSQL不會用丟人了

這是第一次用mysql 以為與oracle沒什麼區別.發現不能上手 先把常用的兩個命令提上來 乙個是mysql u 使用者名稱 p 另乙個是 mysqlshow u 使用者名稱 p 以後如果還有再加吧.兩個不明白一起學.好浪費時間啊 測試mysql安裝是否正常 c mysql bin mysqlsh...

OpenID 來了,但我們不會用

設想乙個更友好的 internet,你只需記住乙個密碼,它讓你更容易掌握自己的聯絡資訊,什麼 可以利用,可以利用多少。這樣的 internet 已經降臨,openid 就是一種讓它成為現實的技術。openid 讓你使用乙個 e mail 或 url 位址登陸各種 而不必為每個 單獨註冊帳戶。很多人都...

以後都不會用altium designer!!!

前幾天聽乙個好朋友訴苦。他在公司上班時在論壇上下了ad的破解版,平時也沒怎麼用,就是開啟往來郵件。沒過2個月就被ad公司的法律顧問打 告知侵權並帶威脅性質的要求公司買號,不然就法院起訴。把我的朋友搞得心塞塞。了解這個情況後,我去詢問了ad的費用,都是買號一次付清,永久使用,但是 昂貴,對小公司或者不...