nodejs
node.js是一個基於Chrome v8引擎的javascript 運行環境。Node.js使用了一個事件驅動、非阻塞式 I/O的模型,使其輕量又高效。(由c++語言編寫的)Node.js的包管理器npm,成為世界上最大的開放源代碼的生態系統。 簡單說:編寫高性能網絡服務器的javascipt工具包(用於js開發服務端程序) 單線程、異步、事件驅動。
簡單來講就是做后端的!
從MVC到前后端分離:
未分離時代(各種耦合MVC)
MVC 是一種經典的設計模式(典型的三層設計模式),全名為 Model-View-Controller,即 模型-視圖-控制器。
大致就是:模型和視圖需要通過 控制器 來進行粘合。例如,用戶發送一個 HTTP 請求,此時該請求首先會進入控制器,然后控制器去獲取數據並將其封裝為模型,最后將模型傳遞到視圖中進行展現。 需要說明
的是,這個View還可以采用 Velocity、Freemaker 等模板引擎。使用了這些模板引擎,可以使得開發過程中的人員分工更加明確,還能提高開發效率。
前后端分離
前端負責開發頁面,通過接口(Ajax)獲取數據,采用Dom操作對頁面進行數據綁定,最終是由前端把頁面渲染出來。
前后端分離與耦合架構
前后端分離(解耦)的核心思想是:前端Html頁面通過Ajax調用后端的RestFul API並使用Json數據進行交互。
在互聯網架構中,一般有兩種服務器
web服務器(靜態服務器):一般指像nginx,apache這類的服務器,他們一般只能解析靜態資源。可以放CSS HTML
應用服務器(動態服務器,可以進行監聽):一般指像tomcat,jetty,resin這類的服務器可以解析動態資源也可以解析靜態資源,但解析靜態資源的能力沒有web服務器好。
為什么要前后端分離?
前端的頁面越來復雜。
一般公司后端開發人員直接兼顧前端的工作,一邊實現API接口,一邊開發頁面,兩者互相切換着做,而且根據不同的url動態拼接頁面,這也導致后台的開發壓力大大增加。前后端工作分配不均。不僅僅開發
效率慢,而且代碼難以維護。
而前后端分離的話,則可以很好的解決前后端分工不均的問題,將更多的交互邏輯分配給前端來處理,而后端則可以專注於其本職工作,比如提供API接口,進行權限控制以及進行運算工作。而前端開發人員則
可以利用nodejs來搭建自己的本地服務器,直接在本地開發,然后通過一些插件來將api請求轉發到后台,這樣就可以完全模擬線上的場景,並且與后台解耦。前端可以獨立完成與用戶交互的整一個過程,兩者都可以
同時開工,不互相依賴,開發效率更快,而且分工比較均衡。
前端項目與后端項目是兩個項目,放在兩個不同的服務器,需要獨立部署,兩個不同的工程,兩個不同的代碼庫,不同的開發人員。前端只需要關注頁面的樣式與動態數據的解析及渲染,而后端專注於具體業務
邏輯。
MVM:
從經典的JSP+Servlet+JavaBean的MVC時代,到SSM(Spring + SpringMVC + Mybatis)和SSH(Spring + Struts + Hibernate)的Java 框架時代,再到前端框架(KnockoutJS、AngularJS、vueJS、ReactJS)為主的MV*時代,然后是Nodejs引領的全棧時代,技術和架構一直都在進步。雖然“基於NodeJS的全棧式開發”模式很讓人興奮,但是把基於Node的全棧開發變成一個穩定,讓大家都能接受的東西還有很多路要走。創新之路不會止步,無論是前后端分離模式還是其他模式,都是為了更方便得解決需求,但它們都只是一個“中轉站”。
