Meteor1.3七日談 — Mantra核心簡介

隨著Meteor1.3 正式版的臨近臂港,我們再來回顧一下Mantra,并講一下使用它的原因。Mantra是Meteor 1.3+React的一種應(yīng)用架構(gòu)規(guī)范垂蜗,它包含了一系列的規(guī)范和約定,如果你遵循Mantra規(guī)范解幽,那么你的應(yīng)用將更加容易構(gòu)建和擴展贴见。

當(dāng)我們最初看到Mantra的時候,會覺得它給Meteor應(yīng)用增加了不少復(fù)雜度躲株。為什么我們需要這么多額外的目錄和文件呢片部?隨著你認識的深入,你會逐漸意識到這些模塊化組織結(jié)構(gòu)的優(yōu)勢所在霜定,它能讓我們方便地了解應(yīng)用的內(nèi)部機制档悠。同時廊鸥,它也將讓我們更方便地修改應(yīng)用或者添加新的功能特性。

Mantra只要分為兩大部分:模塊(Modules)和組件(Components)站粟。組件進一步分為容器組件(Container Components)和UI組件(UI Components)黍图。我們來逐一看一下這些東西。

  1. 模塊 - 模塊構(gòu)建了我們的應(yīng)用主體部分奴烙。每個應(yīng)用都應(yīng)該有一個核心模塊(Core Module)助被,這個模塊會處理應(yīng)用的核心功能。如果只是一個小型應(yīng)用的話切诀,只需要一個核心模塊即可揩环。一旦我們的應(yīng)用有多個主函數(shù)后,我們需要把它們拆分成不同模塊幅虑。舉個例子丰滑,一個items模塊可以是TodoList應(yīng)用的模塊,所有與items相關(guān)的功能都會放到這個模塊中倒庵。

  2. 組件 - 組件是模塊的獨立部分褒墨。比方說,在items模塊里面擎宝,我們可能會有ItemList郁妈,NewItemItemEditItem這幾個組件绍申。每個組件都有兩部分構(gòu)成:一個容器組件和一個UI組件噩咪。容器組件負責(zé)獲取數(shù)據(jù),通過props傳入子組件來渲染UI組件极阅。我們可以使用React-Komposer來使這個過程更簡單胃碾。如何創(chuàng)建容器組件和UI組件可以參見這篇文章

這些就是Mantra的基本構(gòu)件筋搏,我們基于這些基本構(gòu)件來創(chuàng)建應(yīng)用仆百。

另一個關(guān)于Mantra的重點,你一開始可能會困惑拆又,就是所有的代碼關(guān)系都通過imports和exports來構(gòu)建儒旬,并且以單一入口的形式。所以我們創(chuàng)建模塊帖族、組件和動作(actions)后都要導(dǎo)出它們栈源,然后導(dǎo)入到index.js文件中,這些index.js再被導(dǎo)入到main.js中去竖般∩蹩眩客戶端和服務(wù)器端分別只有一個main.js文件。它們是整個應(yīng)用的真實入口。

下面艰亮,我們談?wù)剟幼鳎╝ctions)闭翩。動作是Mantra中應(yīng)用邏輯書寫的地方。動作位于模塊里面迄埃,和組件并列疗韵。任何實際上交互的組件,除了僅僅渲染數(shù)據(jù)的組件外侄非,都應(yīng)有一個對應(yīng)的動作蕉汪。所以我們的EditItemNewItem組件,都會有一個對應(yīng)的動作來處理數(shù)據(jù)操作逞怨。這些動作會調(diào)用服務(wù)器端的Meteor方法者疤。

我們來看一下mantra-sample-blog-app的目錄結(jié)構(gòu):

.
├── CHANGELOG.md
├── LICENSE
├── README.md
├── client
│   ├── configs
│   │   └── context.js
│   ├── main.js
│   └── modules
│       ├── comments
│       │   ├── actions
│       │   │   ├── comments.js
│       │   │   ├── index.js
│       │   │   └── tests
│       │   │       └── comments.js
│       │   ├── components
│       │   │   ├── comment_list.jsx
│       │   │   ├── create_comment.jsx
│       │   │   ├── style.css
│       │   │   └── tests
│       │   │       ├── comment_list.js
│       │   │       └── create_comment.js
│       │   ├── configs
│       │   │   └── method_stubs
│       │   │       ├── comments.js
│       │   │       └── index.js
│       │   ├── containers
│       │   │   ├── comment_list.js
│       │   │   ├── create_comment.js
│       │   │   └── tests
│       │   │       ├── comment_list.js
│       │   │       └── create_comment.js
│       │   └── index.js
│       └── core
│           ├── actions
│           │   ├── index.js
│           │   ├── posts.js
│           │   └── tests
│           │       └── posts.js
│           ├── components
│           │   ├── main_layout.jsx
│           │   ├── navigation.jsx
│           │   ├── newpost.jsx
│           │   ├── post.jsx
│           │   ├── postlist.jsx
│           │   ├── style.css
│           │   └── tests
│           │       ├── main_layout.js
│           │       ├── navigations.js
│           │       ├── newpost.js
│           │       ├── post.js
│           │       └── postlist.js
│           ├── configs
│           │   └── method_stubs
│           │       ├── index.js
│           │       └── posts.js
│           ├── containers
│           │   ├── newpost.js
│           │   ├── post.js
│           │   ├── postlist.js
│           │   └── tests
│           │       ├── newpost.js
│           │       ├── post.js
│           │       └── postlist.js
│           ├── index.js
│           └── routes.jsx
├── lib
│   └── collections.js
├── package.json
├── server
│   ├── configs
│   │   └── initial_adds.js
│   ├── main.js
│   ├── methods
│   │   ├── index.js
│   │   └── posts.js
│   └── publications
│       ├── index.js
│       └── posts.js
└── wallaby.js

更多信息,可以參見World of Mantra叠赦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驹马,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子除秀,更是在濱河造成了極大的恐慌糯累,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件册踩,死亡現(xiàn)場離奇詭異寇蚊,居然都是意外死亡,警方通過查閱死者的電腦和手機棍好,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來允耿,“玉大人借笙,你說我怎么就攤上這事〗衔” “怎么了业稼?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蚂蕴。 經(jīng)常有香客問我低散,道長,這世上最難降的妖魔是什么骡楼? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任熔号,我火速辦了婚禮,結(jié)果婚禮上鸟整,老公的妹妹穿的比我還像新娘引镊。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布弟头。 她就那樣靜靜地躺著吩抓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赴恨。 梳的紋絲不亂的頭發(fā)上疹娶,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音伦连,去河邊找鬼雨饺。 笑死,一個胖子當(dāng)著我的面吹牛除师,可吹牛的內(nèi)容都是我干的沛膳。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼汛聚,長吁一口氣:“原來是場噩夢啊……” “哼锹安!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起倚舀,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤叹哭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后痕貌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體风罩,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年舵稠,在試婚紗的時候發(fā)現(xiàn)自己被綠了超升。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡哺徊,死狀恐怖室琢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情落追,我是刑警寧澤盈滴,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站轿钠,受9級特大地震影響巢钓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疗垛,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一症汹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧继谚,春花似錦烈菌、人聲如沸阵幸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挚赊。三九已至,卻和暖如春济瓢,著一層夾襖步出監(jiān)牢的瞬間荠割,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工旺矾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蔑鹦,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓箕宙,卻偏偏與公主長得像嚎朽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子柬帕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

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