㈠ 目前nodejs都有什麼框架呢哪個最好
建議了解一下CabloyJS開源NodeJS全棧框架,可以開發全場景業務。前端基於Vue+Framework7,後端基於KoaJS+EggJS
1、定位
CabloyJS是面向中小開發團隊和接單俠開發的NodeJS全棧業務快速開發框架,支持全場景業務開發,省時、省力
2、中小開發團隊或接單俠所面臨的困境
1)多場景需求:PC、Android、IOS、微信、釘釘,等等
2)多種要素平衡:技術、人才、時間、質量 -> 成本、收益
客戶的潛在需求日益多變,因此開發場景日益碎片化,不同的場景又面臨著不同的技術選擇,從而又決定著人員的配備,技術選擇與人員配置影響著項目開發的時間與質量,從而又最終體現在成本與收益的平衡上
3、CabloyJS應對之法
1)採用pc = mobile + pad的獨特頁面風格,把移動端的開發體驗與用戶操控體驗帶入pc端,一套代碼適應全場景需求
2)CabloyJS不僅是技術框架,更是業務框架,將用戶管理、角色管理、許可權管理等諸多功能特性沉澱成核心模塊,從而為快速業務開發提供強有力的支撐
3)徹底的前後端分離體系,從而實現前端靈活多變,後端不變應萬變,使整個CabloyJS架構具有很強的靈活性和延展性
4、相關資料的鏈接
1)GitHub源碼: https://github.com/zhennann/cabloy
2)網易免費課程: https://study.163.com/course/courseMain.htm?courseId=1209403891
下面的幾個網站也是用CabloyJS開發的:
1)官網(技術文檔):https://cabloy.com/zh-cn/
2)社區(論壇): https://community.cabloy.com/zh-cn/index.html
3)博客: https://zhennann.com/
4)商店:https://store.cabloy.com
㈡ nodeJs事件驅動和MVC的區別
nodejs是單進程單線程,但是基於V8的強大驅動力,以及事件驅動模型,nodejs的性能非常高,而且想達到多核或者多進程也不是很難(現在已經有大量的第三方mole來實現這個功能)。
這里主要不是介紹nodejs具體應用代碼,而是想介紹一下事件驅動編程。
Dan York介紹了兩種典型的事件驅動實例。
第一個例子是關於醫生看病。
在美國去看醫生,需要填寫大量表格,比如保險、個人信息之類,傳統的基於線程的系統(thread-based system),接待員叫到你,你需要在前台填寫完成這些表格,你站著填單,而接待員坐著看你填單。你讓接待員沒辦法接待下一個客戶,除非完成你的業務。
想讓這個系統能運行的快一些,只有多加幾個接待員,人力成本需要增加不少。
基於事件的系統(event-based system)中,當你到窗口發現需要填寫一些額外的表格而不僅僅是掛個號,接待員把表格和筆給你,告訴你可以找個座位填寫,填完了以後再回去找他。你回去坐著填表,而接待員開始接待下一個客戶。你沒有阻塞接待員的服務。
第二個例子是快餐店點餐。
在基於線程的方式中(thread-based way)你到了櫃台前,把你的點餐單給收銀員或者給收銀員直接點餐,然後等在那直到你要的食物准備好給你。收銀員不能接待下一個人,除非你拿到食物離開。想接待更多的客戶,容易!加更多的收銀員!
當然,我們知道快餐店其實不是這樣工作的。他們其實就是基於事件驅動方式,這樣收銀員更高效。只要你把點餐單給收銀員,某個人已經開始准備你的食物,而同時收銀員在進行收款,當你付完錢,你就站在一邊而收銀員已經開始接待下一個客戶。在一些餐館,甚至會給你一個號碼,如果你的食物准備好了,就呼叫你的號碼讓你去櫃台取。關鍵的一點是,你沒有阻塞下一個客戶的訂餐請求。你訂餐的食物做好的事件會導致某個人做某個動作(某個服務員喊你的訂單號碼,你聽到你的號碼被喊到去取食物),在編程領域,我們稱這個為回調(callback function)。
相反的,Node.Js使用事件驅動模型,當web server接收到請求,就把它關閉然後進行處理,然後去服務下一個web請求。當這個請求完成,它被放回處理隊列,當到達隊列開頭,這個結果被返回給用戶。這個模型非常高效可擴展性非常強,因為webserver一直接受請求而不等待任何讀寫操作。(這也被稱之為非阻塞式IO或者事件驅動IO)。
考慮下面這個過程:
你用瀏覽器訪問nodejs伺服器上的"/about.html"
nodejs伺服器接收到你的請求,調用一個函數從磁碟上讀取這個文件。
這段時間,nodejs webserver在服務後續的web請求。
當文件讀取完畢,有一個回調函數被插入到nodejs的服務隊列中。
nodejs webserver運行這個函數,實際上就是渲染(render)了about.html頁面返回給你的瀏覽器。
好像就節省了幾微秒時間,但是這很重要!特別是對於需要相應大量用戶的web server。