Meteor

1. Meteor 包括什么:

命令行工具 meteor Command

編譯器 ?js, coffee, less, jade, sass

運行調(diào)試環(huán)境 ?meteor run

部署工具和平臺 ?Galaxy, ?yourapp.meteor.com

內(nèi)置移動編譯平臺

2. Meteor Principles :

Data on the Wire

One Language

Database Everywhere

Latency Compensation

Full Stack Reactivity

Embrace the Ecosystem : 很多Meteor 中的技術(shù)并不是自身開發(fā)的,但Meteor?

Simplicity Equals Productivity

3. 說說我理解的 Meteor :?

Meteor 是一個基于Node.js的全棧開發(fā)框架,不過也有很多人說Meteor不是框架,是一個跨平臺應(yīng)用解決方案平臺,因為它囊括了開發(fā)一款應(yīng)用程序(web or mobile)的所有方面,前端,后端,數(shù)據(jù)庫。

前端使用 Javascript,這是肯定的,不同的是 Meteor 在前端有一個 miniMongo 數(shù)據(jù)庫(這個數(shù)據(jù)庫好像也是用Javascript寫的),和后端的MongoDB 數(shù)據(jù)庫通過DDP 協(xié)議建立 Socket 長連接,從而達(dá)到數(shù)據(jù)隨動的效果。并且在 Meteor 這里UI的渲染,顯示的邏輯等都是在前端完成的,可以說是重前端輕后端。

后端使用 Node.js,負(fù)責(zé)同步和傳遞客戶端數(shù)據(jù),還有操作 server 端 DB。

4.? Meteor 官方包管理: https://atmospherejs.com/

5. Meteor Code Principles:

----Code in the /server folder only runs on server.

----Code in the /client folder only runs on client.

----Everything else runs on both the client and server

----Please put all of static assets(font, images, etc) to /public directory

6. ?The sequence of file is loaded ?

first be loading is which file in /lib folder

main.* file is loading after all files be loaded

others file is loading according to a-z

7. Meteor is no MVC?

8. --Use camelCase(myVariable) coding, ?--Use underscores(my_file.js) for file names. ?--CSS classes which use hyphens(.my-class) ?

9. if you prefer Coffeescript, Meteor has you covered. $ meteor add coffeescript. you will be good to go!

10. Meteor 的強(qiáng)大之處在于文件的查找。無論你把代碼文件放在目錄下的任何地方,Meteor 都可以找到它并且正確地進(jìn)行編譯。這意味著你永遠(yuǎn)都不需要手動編寫 JavaScript 或 CSS 文件的調(diào)用路徑。

11. Spacebars 是 Meteor 附帶的一個模版語言.?READ GITHUB

12. Meteor 跟蹤了項目目錄下的所有文件,當(dāng)檢測到其中一個文件發(fā)生改變,Meteor 直接重啟正在運行的Meteor 服務(wù)器,并通知每個客戶端重新加載此頁面,其實這么說時不準(zhǔn)確的。Meteor 的動態(tài)代碼重載技術(shù)(HCR)類似于頁面的自動刷新但其session中的變量不變,而如果我們手動刷新頁面的話,其實是開啟了一個新的session。

13. Meteor 的核心功能就是服務(wù)器端和客戶端的自動數(shù)據(jù)同步,我們要仔細(xì)了解一下它是如何運作的,以及研究那個讓它得以運行的關(guān)鍵技術(shù): Meteor 集合(Collection)。

網(wǎng)絡(luò)應(yīng)用有三種基本方式保存數(shù)據(jù),各種方式有不同的角色:

--瀏覽器內(nèi)存:

? ? 像 JavaScript 變量的這些數(shù)據(jù)會保存在瀏覽器內(nèi)存中,意味著他們不是永久性的:它們存在于當(dāng)前瀏覽器標(biāo)簽中,當(dāng)標(biāo)簽關(guān)閉后它們會消失。

--瀏覽器存儲:

? ? 瀏覽器也可存儲較為永久性的數(shù)據(jù),使用 cookies 或本地存儲 Local Storage (http://diveinto

html5.info/storage.html)。雖然數(shù)據(jù)會在不同 session 間保持,但是只是針對于當(dāng)前用戶(包括標(biāo)簽之

間)但不能輕易地共享給其他用戶。

--服務(wù)器端數(shù)據(jù)庫:

? ? 你想永久保存數(shù)據(jù)并且提供給多個用戶的最好方法是數(shù)據(jù)庫(MongoDB 是 Meteor 應(yīng)用默認(rèn)的方案)。



不在client/或server/文件夾中代碼會在客戶端和服務(wù)器端運行。所以Posts集合在客戶端和服務(wù)器端都可

用。但是,在各自環(huán)境下所起的作用有很大不同。

在服務(wù)器,集合有一個任務(wù)就是和 Mongo 數(shù)據(jù)庫聯(lián)絡(luò),讀取任何數(shù)據(jù)變化。 在這種情況下,它可以比對標(biāo)準(zhǔn)的數(shù)據(jù)庫。

在客戶端,集合是一個安全拷貝來自于實時一致的數(shù)據(jù)子集??蛻舳说募峡偸?通常)透明地實時更新數(shù)據(jù)子集。


$ meteor shell ? 服務(wù)器端shell

$ meteor mongo ?數(shù)據(jù)庫控制臺

如果你把應(yīng)用部署到了*.meteor.com 上,你一樣可以通過 meteor mongo myApp 的方式進(jìn)入你應(yīng)用的 Mongo Shell,而且還可以輸入 meteor logs myApp 得到你應(yīng)用的 log 日志

Meteor 的客戶端 Mongo 的技術(shù)實現(xiàn)被成為 MiniMongo


在 Meteor 中,find() 返回值是一個游標(biāo)。游標(biāo)是一種從動數(shù)據(jù)源.如果你想輸出內(nèi)容,你可以對游標(biāo)使用 來把游標(biāo)轉(zhuǎn)換成數(shù)組。Meteor 十分智能地在應(yīng)用中保持游標(biāo)狀態(tài)而避免動不動就把游標(biāo)變成數(shù)組。這就造成了你不會經(jīng)常在 Meteor代碼中看到 fetch() 被調(diào)用。


這里我們要提到一個包 autopublish, 我們一直依賴于 autopublish 來讓我們的客戶端可以鏡像般地得到數(shù)據(jù)庫中的所有帖子,也就是說,它簡單的把整個Collection分享給所有連接的客戶端。最終我們需要做的是僅僅把我們客戶端需要看到的帖子傳輸過來。

首先刪除掉 autopublish 包 : ?$ meteor remove autopublish

建立 server/publications.js 并定義publish() 函數(shù) : ?Meteor.publish('posts', function(){ return Posts.find() });

在客戶端訂閱這個發(fā)布 $ ?vi main.js ---> Meteor.subscribe('posts');

安全檢驗(用戶登錄權(quán)限控制等)已經(jīng)集成在 Meteor 的 Collection 中,只是在默認(rèn)情況下它是關(guān)閉的。這樣的設(shè)置可以使你在??開始構(gòu)建 App 的時候更加輕松。我們的 App 不再需要這些輔助了,果斷扔掉吧!我們?nèi)h除insecure 包(恢復(fù)數(shù)據(jù)安全) ?$ ?meteor remove insecure.


audit-argument-checks?包用于增強(qiáng)安全性檢驗,對post參數(shù)做檢驗,還需要check包

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容