由于某些原因怨喘,關(guān)于Meteor一直都有著各種各樣的誤解津畸。或許是因?yàn)镸eteor剛正式推出的時(shí)候必怜, 缺失很多重要的功能肉拓。而很多不知道的是,這些缺陷在后來(lái)早就被修復(fù)了梳庆。
為了給Meteor正名暖途,下面列舉的是5個(gè)最常見(jiàn)的誤解。
誤解#1:“Meteor的數(shù)據(jù)不安全”
在Meteor的第一個(gè)Demo推出之時(shí)膏执, 數(shù)據(jù)安全和用戶(hù)權(quán)限這些東西是沒(méi)有的驻售。任何客戶(hù)端的用戶(hù)都能夠訪問(wèn),修改數(shù)據(jù)庫(kù)的數(shù)據(jù)然后發(fā)送返回到服務(wù)端更米。
但這第一個(gè)版本只是作為一個(gè)提示告訴大家Meteor來(lái)了欺栗, 并不意味著它可以被用來(lái)打造一個(gè)真實(shí)的應(yīng)用產(chǎn)品。 打那之后征峦, 現(xiàn)在的Meteor已經(jīng)有了一個(gè)內(nèi)置的身份認(rèn)證包(authentication package)迟几。
造成誤解的另一個(gè)原因是, 許多新手為了更容易地快速上手常常在創(chuàng)建Meteor應(yīng)用的時(shí)候栏笆, 遵循默認(rèn)的把所有的數(shù)據(jù)發(fā)布給客戶(hù)端类腮。
正如Meteor的開(kāi)發(fā)者之一 Avital Oliver在StackOverflow上的回答那樣
當(dāng)你使用Meteor的命令行工具創(chuàng)建一個(gè)應(yīng)用的時(shí)候, 默認(rèn)的會(huì)包含有兩個(gè)packages:AUTOPUBLISH和INSECURE. 這兩個(gè)packages能使得每個(gè)客戶(hù)端都擁有所有的服務(wù)器數(shù)據(jù)庫(kù)讀寫(xiě)權(quán)限效果蛉加。這是非常好的原型工具(目的只為了開(kāi)發(fā))蚜枢,但通常這不適合用于應(yīng)用的生產(chǎn)環(huán)境。當(dāng)你需要發(fā)布到生產(chǎn)環(huán)境的時(shí)候针饥,請(qǐng)去掉這兩個(gè)packages
類(lèi)似地厂抽,也因?yàn)镸eteor可以共享服務(wù)端和客戶(hù)端的代碼,但實(shí)際上打厘,這并不意味著所有的代碼都可用于客戶(hù)端.
所有放在server/
目錄下的東西都是只能在服務(wù)端執(zhí)行使用的, 同時(shí)Meteor也讓你可以定義服務(wù)端安全方法修肠,這些方法可以在客戶(hù)端調(diào)用。
誤解#2:“Meteor對(duì)SEO不友好”
與傳統(tǒng)的網(wǎng)頁(yè)應(yīng)用不一樣户盯,Meteor不會(huì)在服務(wù)端搭建HTML頁(yè)面嵌施。取而代之饲化, 服務(wù)端只發(fā)送數(shù)據(jù), 然后在客戶(hù)端決定如何渲染之(這就是Meteor的“data on the wire”原則)
這種做法的缺點(diǎn)就是吗伤, 當(dāng)JavaScript被禁用的話(huà)吃靠, 你的網(wǎng)站幾乎跟一個(gè)空白頁(yè)面無(wú)異。
你或許會(huì)覺(jué)得這會(huì)迷惑搜索引擎足淆。但幸運(yùn)地是巢块, Meteor有解決的方案,那就是使用Spiderable Package.
這個(gè)package使用的是PhantomJS 在服務(wù)端預(yù)渲染后提供給網(wǎng)絡(luò)爬蟲(chóng)巧号。實(shí)際上網(wǎng)絡(luò)爬蟲(chóng)得到的網(wǎng)頁(yè)跟你看到的是一樣的族奢。
誤解#3:“Meteor不支持第三方packages”
有很多的討論是關(guān)于Meteor所用的不是Node的標(biāo)準(zhǔn)包管理--NPM. 而事實(shí)上, Meteor壓根就沒(méi)有不允許使用第三方程序包.
And it’s true that the vanilla install of Meteor does not come with a package manager. 但慶幸的是丹鸿, 本書(shū)的合著者之一Tom Coleman越走, 同時(shí)也是Meteor包管理器Meteorite和packages資源庫(kù)Atmosphere的開(kāi)發(fā)者。
盡管當(dāng)下Meteorite 和 Atmosphere還不是Meteor的官方部分靠欢, 但它們已經(jīng)得到廣泛的使用并將會(huì)在未來(lái)被合并到Meteor的核心部分廊敌。事實(shí)上,這方面的工作已經(jīng)在Meteor的核心代碼的engine分支中開(kāi)展门怪,預(yù)期會(huì)被很快解決骡澈。
誤解#4:“Meteor是完全封閉的(walled garden)”
一個(gè)密切相關(guān)的異議是,Meteor可以支持第三方packages,但這些第三方packages卻嚴(yán)格地限制于流星的生態(tài)系統(tǒng)。
為什么有成千上萬(wàn)的Node packages 在那還要使用自定義的package呢掷空?這又是否與開(kāi)源精神相悖呢肋殴?
首先,需要意識(shí)到一點(diǎn)很重要的就是拣帽, 在Meteor中可以任意的使用node packages疼电。盡管在當(dāng)下這么做可能還會(huì)有一些棱角使得接口不那么順利,但這種情況在engine
分支添加Node support
并發(fā)布后將得到很大改善减拭。
其次蔽豺,Meteor不僅僅是Node.js的一個(gè)框架, 更是一種全新的網(wǎng)站應(yīng)用開(kāi)發(fā)方式和構(gòu)想.
換句話(huà)說(shuō)拧粪,想知道為什么Meteor不使用NPM無(wú)異于問(wèn)為什么它不能使用Ruby Gems. 有很多人建議所有的JavaScript代碼應(yīng)該都用NPM來(lái)管理修陡, 但這么做的話(huà)會(huì)有一些細(xì)節(jié)上的問(wèn)題, 正如核心開(kāi)發(fā)者解釋說(shuō).
誤解#5:“Meteor只適用于原型”
“Meteor非常適用于小規(guī)目肾快速原型的項(xiàng)目魄鸦,但它不適合用于大規(guī)模的應(yīng)用.”
在某種程度上, 這很難爭(zhēng)個(gè)誰(shuí)對(duì)誰(shuí)錯(cuò)癣朗。畢竟Meteor的主頁(yè)的版本號(hào)還是以0
開(kāi)頭.
但事實(shí)是Meteor還沒(méi)準(zhǔn)備到一個(gè)黃金時(shí)間拾因,比起內(nèi)在的局限性,在如此青澀的時(shí)期(不到一歲)Meteor還有許多需要做的。
再說(shuō)绢记, 即使是現(xiàn)在扁达, 有時(shí)犧牲一點(diǎn)穩(wěn)定性來(lái)做交換得到Meteor帶來(lái)的輕松且快速的開(kāi)發(fā)還是值得的。如果你希望看到一些具體的Meteor案例蠢熄,我可以推薦看看Telescope嗎跪解?
So,我堅(jiān)信签孔,在Meteor這樣快速發(fā)展之下叉讥,今天的技術(shù)原型將會(huì)是明天thousand-user 的應(yīng)用.
總結(jié)
現(xiàn)在,即使我們正在寫(xiě)這本關(guān)于Meteor的書(shū)饥追, 但我們首先依舊會(huì)承認(rèn)一點(diǎn)图仓, 如同其他的技術(shù)那樣,Meteor同樣也有著自己的缺陷判耕。
But I do believe Meteor has enough potential to make it worth evaluating it on its own merits. 所以如果你猶豫不決是否使用Meteor透绩, 希望我的建議能說(shuō)服你你選擇它.
原文來(lái)自 Sacha Greif 5 Meteor Misconceptions