咱們爲何要跨域?前端
是由於瀏覽器的同源機制引出的跨域操做。nginx
同源又是什麼?json
域名不一樣,協議不一樣,端口不一樣,都是不一樣源的。canvas
那瀏覽器爲何同源?segmentfault
瀏覽器經過限制從一個源的資源如何與另外一個源的資源進行交互。這是用於隔離惡意文件的重要安全機制。後端
正確跨域有什麼方法?api
解決api方式:跨域
jsonp :只能傳get方法瀏覽器
空ifream加form :能夠傳post方法安全
cros: 分爲簡單方法和非簡單方法
代理:nginx轉發
解決dom方式:
postMessage
document.domain
canvas操做跨域圖片
引用:思否博客:segmentfault.com/a/119000001…
總體來講,React和Vue等框架出現後,目前前端在代碼開發方面的複雜度已經基本獲得解決,再加上Node解決先後端分離,前端技術棧自己其實已經比較成熟,所以我認爲前端自己的開發技術將來幾年應該不會有大的方向變化。 既然前端開發技術棧自己已經比較成熟,那咱們看看目前還有哪些制約前端發展瓶頸的,也許這些瓶頸的地方就是後面技術方向突破的地方。
首先是瀏覽器。雖然瀏覽器這幾年在Chrome的帶動下,性能飛速發展,但畢竟其核心原理沒有變化,性能始終難以達到原生App的水平,所以這部分我認爲是最有可能出現大的變化的,一個可能的方向就是瀏覽器變成虛擬機,前端代碼編譯爲字節碼,經過這種方式來將性能提高一個等級,雖然仍是難以達到原生App的水平,但已經可以知足絕大部分應用的性能需求,相似於Java對比C/C++同樣。同時,虛擬機還能夠直接調用OS提供的各類接口,至於安全問題,其實和如今的App同樣能夠採起權限申請的方式。 第二個就是統一的DOM樹限制了單線程的渲染。理論上來講,一個頁面某個時間變化的部分只是集中在一小塊區域,沒有必要將整個DOM樹鎖住。所以,一個可能的方向是分區渲染,即將頁面劃分爲幾個不一樣的區域,每一個區域有獨立的DOM樹,獨立渲染,那麼性能會高不少,相似於App開發中的組件,組件類的運行不影響其它組件,若是須要依賴其它組件,經過組件間消息進行通訊。