Getting MEAN 學(xué)習(xí)筆記 1

Simon Holmes的書《Getting MEAN with Mongo, Express, Angular, and Node》的網(wǎng)址是這個(gè), 除了第一章、第五章和online bonus的Appendix D免費(fèi),其他章節(jié)大家自己找pdf吧。
這本書的Github repo在這里


Notes

Log 16.7.25 15:52
越讀越覺得這本書真的好平易近人。贊一個(gè)。


Not that Random

這本書講的是全棧網(wǎng)站開發(fā)。
MEAN = MongoDB + Express + Angular + Node.js
才知道原來Angular和Node都是谷歌以前的東西,感覺應(yīng)該會(huì)很好用的。
JavaScript是MEAN Stack的唯一語言,這也是最吸引我的一個(gè)地方。說實(shí)話大大降低了門檻(捂臉
Node是single-threaded。
Multi-threaded是說,每個(gè)新訪問者/Session都會(huì)新分配資源,不同thread之間互不干擾,但是一旦超載就會(huì)很慢。
Single-threaded則是僅有一個(gè)thread,在handle requests的時(shí)候不慌不忙地一個(gè)個(gè)分派給其他部分完成,并將結(jié)果返回。想要讓這種方式流暢工作,必須寫non-blocking code,也就是說不能讓這個(gè)線程自己做任何事情,這個(gè)線程是專門派任務(wù)和回結(jié)果的。解決方案:

... make any blocking operations run asynchronously, preventing them from blocking the flow of your main process.

Node只看來了多少requests,不會(huì)記錄是誰發(fā)出的這些requests。但是如果想實(shí)現(xiàn)personalized experience,親愛的Express可以幫你——他有 sessions 可以用于區(qū)別不同訪問者。
下面介紹MongoDB。他是一個(gè)document database。這個(gè)對(duì)于JSON特別方便,對(duì)應(yīng)地很好,因?yàn)镸ongoDB沒有columns的概念,每一行的數(shù)據(jù)都是一個(gè)document,因而數(shù)據(jù)庫里的數(shù)據(jù)可以多種多樣。而且據(jù)說Mongo很快,唔希望這是真的lol。
再說Angular,這個(gè)我以前聽說過很多次了,這次是正式學(xué)習(xí)怎么用。他比jQuery要更強(qiáng)硬,規(guī)定了你要怎么用他。其非常好的一點(diǎn)是two-way data binding,數(shù)據(jù)庫的數(shù)據(jù)改了,Angular會(huì)同時(shí)更新html內(nèi)容,反之亦然。MEAN stack沒有了A,就是one-way data binding了。one-way讓大部分任務(wù)由server承擔(dān),而browser只需要render HTML和run JavaScript就行。

一張書中的示意圖,感覺非常清晰,就放上來了。

而two-way則是view和model捆綁,變一個(gè)兩者都變。
這是第二張示意圖。

Angular是專為Single-page application(SPA)做的。舉例:gmail。也就是說一切都在這個(gè)頁面上進(jìn)行 —— never reloads。但這樣的話一些分析工具就完全不知道你這個(gè)app在干什么了,因?yàn)樗麄円縩ew page loading來分析。想要給SPA加page load events,可以用HTML5 history API。也有一些專門做integration for Angular的,不用太擔(dān)心,但是越細(xì)致的分析就越麻煩。SPA還有一個(gè)不好就是initial load比較慢(這個(gè)確實(shí)對(duì)我來說是個(gè)大問題),但是后面就比較快。
但是這么好的東西不可能沒有缺陷嘛。缺點(diǎn)就是,Angular完全依賴于JavaScript。而搜索引擎工作的時(shí)候不會(huì)去運(yùn)行你的js的,所以基本上用Angular的話搜索引擎就不會(huì)搜到你的數(shù)據(jù)和網(wǎng)頁。同理,在社交媒體分享的時(shí)候,automatic preview效果也不好。放上原文以防帶來誤解:

Most search engines look at the HTML content on a page but don't download or execute much JavaScript. Thus, JavaScript applications are very hard for search engines to crawl and index.
And for social-sharing sites, they also look at the HTML of the page you're linking to and try to extract some relevant text and images. Like search engines they don't run JavaScript on the page, so content served by JavaScript won't be seen.

但是MEAN stack好就好在,你完全可以去掉A,用傳統(tǒng)的one-way去serve some of your pages, and those that need js will utilize Angular separately.

接下來是三個(gè)這本書會(huì)介紹的其他工具:

  1. Twitter Bootstrap for UI
    我想大家都有所耳聞,responsive website design,不想要default感的話還可以自己下theme來換。
  2. Git for source control
    這個(gè)大家也熟吧。Github很好用。
  3. Hosting with Heroku
    專為Node apps設(shè)計(jì),與Git結(jié)合得也很好。

Random Glossary

  • PaaS = Platform as a Service
    感覺這種[ ]aaS變得很多誒。這本書里介紹的是Heroku。
  • REST = REpresentational State Transfer
    它是stateless的,即不知道當(dāng)前訪問者一個(gè)一個(gè)都姓什名誰以及曾經(jīng)干了些啥。Node也是的。
  • API = Application Program Interface
    雖然以前就知道他,但是這本書的解釋讓我覺得更懂一點(diǎn):

API enables applications to talk to each other.

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

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

  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,889評(píng)論 2 45
  • 我的個(gè)人博客 http://yedingding.com 會(huì)更新 Teahour.fm 的最新音頻文本,歡迎關(guān)注。...
    葉玎玎閱讀 1,147評(píng)論 0 2
  • 過去的已經(jīng)過去, 現(xiàn)在的正是現(xiàn)在, 未來…未來… 現(xiàn)在覺得這句話還挺有哲理的。
    爬上陽臺(tái)吹吹風(fēng)閱讀 110評(píng)論 0 0
  • 司絳又喝酒了,之前是拈著小杯,輕啟芳唇,一小口一小口地抿;而現(xiàn)在,她一口貝齒輕而易舉地撬開瓶蓋,在漣漪四起下,大...
    梁阮閱讀 404評(píng)論 0 2
  • 不歸不歸 夜深也不歸 沒有你 也沒有了家 從黃昏守候到天明 聽蟬鳴聽蛙叫 聽鳥報(bào)晨曉 寂寂之夜 想你的愛如潮 當(dāng)晚...
    潛水的鳥閱讀 173評(píng)論 0 2

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