純TypeScript開發(fā)Web前端(三)項目的模塊化加載

題外話

? ? ? ? 前兩天,我平生第一次被人催更乎赴,雖然是個偽粉絲忍法,但還是有那么一點點小興奮¢藕穑“TypeScript”這一系列饿序,從實際的訂閱數(shù)據上看非常尷尬,比起vue.js的系列差好遠友题。腳手架(or 手腳架)框架盛行的世界嗤堰,我的這個東西,便像是一株不合群的奇葩傲立于世間度宦,除了孤芳自賞踢匣,剩下就是自娛自樂。
? ? ? ? No,No,No戈抄。离唬。。划鸽。前面這一段并不是喪氣的話输莺,只是表明我個人玩技術的一種固有心態(tài),便是“自娛自樂”裸诽!

正題

? ? ? ? 其實嫂用,我這幾天把業(yè)余時間都放在了重構這個TS的Demo項目上。準備把項目弄得相對完整些丈冬,并且把代碼優(yōu)化得能夠入得了大家的眼后嘱函,才逐步把其中的過程和思路剖析出來給大家看。不過埂蕊,既然有人等不及往弓,我就繼續(xù)來寫邊邊角角用于填坑的內容吧。

模塊化(Module)

  • 首先蓄氧,什么是模塊化函似?
    我的理解:系統(tǒng)功能的拆解歸類抽象化而形成的功能區(qū)塊,然后把這些區(qū)塊的功能組合起來便形成一套完整的系統(tǒng)解決方案了喉童。我的模塊化的依據是OO(Object Oriented,面向對象)撇寞。

  • 為什么要模塊化?不模塊化可以嗎?
    模塊化代碼可讀性更強蔑担,好維護露氮,重用方便。至于模不模塊化看實際項目情況钟沛,功能簡單結構單一的其實也沒什么好模塊化的;如果是比較復雜的系統(tǒng)局扶,建議還是弄一下的好恨统,不然假設再1個ts里面堆上一百幾十個類,幾千行代碼三妈,誰看了誰都會罵娘畜埋,程序員何苦為難程序員呢?

我的模塊設計

假設畴蒲,我要做一個用戶查詢產品的系統(tǒng)悠鞍。模塊劃分如下:

    src/
    ├── app.ts
    ├── libs/
    │   └── router.ts
    ├── modules/
    │   ├── product/
    │   │   ├── index.ts
    │   │   ├── list.ts
    │   │   └── detail.ts
    │   └── user/
    │       ├── index.ts
    │       ├── login.ts
    │       └── info.ts
    └── utils/
        ├── http.ts
        ├── ui.ts
        └── cache.ts

說明一下,我的demo是web前端模燥,所以modules下對應每個文件對應的是一個頁面功能咖祭。index.ts除外!index.ts作為模塊聚合導出的入口來用的蔫骂。例如:

import { List } from "./list";
import { Detail } from "./detail";

export { Detail, List };

然后么翰,在app.ts里的import就可以這樣:

import * as Product from "./modules/product/index";
var listPage = new Product.List();

require.js加載模塊

? ? ? ? 說完模塊化,趁熱打鐵就說一下模塊的加載辽旋。其實浩嫌,上一篇最后提到過,我是用require.js來做編譯后的js的加載补胚。眾所周知码耐,require.js是javascript模塊加載的AMD派系的代表。早前的項目我也用過溶其,比較熟所以就選它了骚腥。
? ? ? ? 被加載的模塊的寫法,這里直接略過握联。因為在tsconfig.json里面module設為amd的話桦沉,tsc編譯后就會自動生成對應的格式,我們幾乎感覺不到金闽。
? ? ? ? 按照上面的項目模塊結構纯露,我只需要在index.html引入require.js,然后加載的入口指向app.js便可代芜,也就是下面data-main這一段埠褪。

<script src="http://cdn.staticfile.org/require.js/2.3.6/require.min.js" data-main="scripts/app"></script>

app.js 會按照app.ts 的各項 import 把 模塊間的引用關系和次序都弄好,用起來非常非常的輕松。
? ? ? ? 對于第三方的js庫钞速,就要借助require.config來配置一下(沒錯贷掖,上一片有提到過)】视铮可以把這個腳本寫在html文件底部苹威,也可以獨立弄一個js文件<script>引用進頁面。對于外部第三方的庫最好驾凶,用shim配置建立一個依賴的關系牙甫,避免網絡原因,所依賴第三方庫沒有先加載導致腳本報錯调违。

require.config({
    paths: {
        'jquery': '//g.alicdn.com/sj/lib/jquery/dist/jquery.min',
        'marked': '/js/libs/marked.min'
    },
   shim: {
            'app': {
                deps: ['jquery']
            }
        }
});

模塊的發(fā)布

? ? ? ? 細心的讀者可能會數(shù)一下窟哺,我這么一個超簡單的Demo項目都已經有十多個js了。那么一個真正的項目豈不是得有上百個js文件技肩?且轨!HTTP請求會嚇死人的!冒昧地下個結論虚婿,看到這里會吃鯨的很定是新手旋奢。因為,老鳥們會很淡定的說雳锋,打包起來就完事了嘛~
? ? ? ? 是的黄绩,這里先賣個關子,打包發(fā)布的內容留到下一講玷过,敬請期待~~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末爽丹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子辛蚊,更是在濱河造成了極大的恐慌粤蝎,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袋马,死亡現(xiàn)場離奇詭異初澎,居然都是意外死亡,警方通過查閱死者的電腦和手機虑凛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門碑宴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人桑谍,你說我怎么就攤上這事延柠。” “怎么了锣披?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵贞间,是天一觀的道長贿条。 經常有香客問我,道長增热,這世上最難降的妖魔是什么整以? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮峻仇,結果婚禮上公黑,老公的妹妹穿的比我還像新娘。我一直安慰自己摄咆,他們只是感情好帆调,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著豆同,像睡著了一般。 火紅的嫁衣襯著肌膚如雪含鳞。 梳的紋絲不亂的頭發(fā)上影锈,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機與錄音蝉绷,去河邊找鬼鸭廷。 笑死,一個胖子當著我的面吹牛熔吗,可吹牛的內容都是我干的辆床。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼桅狠,長吁一口氣:“原來是場噩夢啊……” “哼讼载!你這毒婦竟也來了?” 一聲冷哼從身側響起中跌,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤咨堤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后漩符,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體一喘,經...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年嗜暴,在試婚紗的時候發(fā)現(xiàn)自己被綠了凸克。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡闷沥,死狀恐怖萎战,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情狐赡,我是刑警寧澤撞鹉,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布疟丙,位于F島的核電站,受9級特大地震影響鸟雏,放射性物質發(fā)生泄漏享郊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一孝鹊、第九天 我趴在偏房一處隱蔽的房頂上張望炊琉。 院中可真熱鬧,春花似錦又活、人聲如沸苔咪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽团赏。三九已至,卻和暖如春耐薯,著一層夾襖步出監(jiān)牢的瞬間舔清,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工曲初, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留体谒,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓臼婆,卻偏偏與公主長得像抒痒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子颁褂,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內容