當前位置:首頁 » 網頁前端 » web前端部署的方案
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

web前端部署的方案

發布時間: 2022-09-10 12:03:38

1. Web工程師你知道如何構建單頁Web應用嗎

今天小編要跟大家分享的文章是關於Web工程師你知道如何構建單頁Web應用嗎?正在從事web相關工作的小夥伴們你們是否知道什麼是單頁面應用,是否知道該如何構建單頁面web應用?下面
就來和小編一起來看一看吧!

首先我們來看一看單頁應用是什麼?


所謂單頁應用,指的是在一個頁面上集成多種功能,甚至整個系統就只有一個頁面,所有的業務功能都是它的子模塊,通過特定的方式掛接到主界面上。它是AJAX技術的進一步升華,把AJAX的無刷新機制發揮到極致,因此能造就與桌面程序媲美的流暢用戶體驗。


其實單頁應用我們並不陌生,很多人寫過ExtJS的項目,用它實現的系統,很天然的就已經是單頁的了,也有人用jQuery或者其他框架實現過類似的東西。用各種JS框架,甚至不用框架,都是可以實現單頁應用的,它只是一種理念。有些框架適用於開發這種系統,如果使用它們,可以得到很多便利。


一、開發框架


ExtJS可以稱為第一代單頁應用框架的典型,它封裝了各種UI組件,用戶主要使用JavaScript來完成整個前端部分,甚至包括布局。隨著功能逐漸增加,ExtJS的體積也逐漸增大,即使用於內部系統的開發,有時候也顯得笨重了,更不用說開發以上這類運行在互聯網上的系統。


jQuery由於偏重DOM操作,它的插件體系又比較鬆散,所以比ExtJS這個體系更適合開發在公網運行的單頁系統,整個解決方案會相對比較輕量、靈活。


但由於jQuery主要面向上層操作,它對代碼的組織是缺乏約束的。如何在代碼急劇膨脹的情況下控制每個模塊的內聚性,並且適當在模塊之間產生數據傳遞與共享,就成為了一種有挑戰的事情。


為了解決單頁應用規模增大時候的代碼邏輯問題,出現了不少MV*框架,他們的基本思路都是在JS層創建模塊分層和通信機制。有的是MVC,有的是MVP,有的是MVVM,而且,它們幾乎都在這些模式上產生了變異,以適應前端開發的特點。


這類框架包括Backbone,Knockout,AngularJS,Avalon等。


二、組件化


這些在前端做分層的框架推動了代碼的組件化,所謂組件化,在傳統的Web產品中,更多的指UI組件,但其實組件是一個廣泛概念,傳統Web產品中UI組件佔比高的原因是它的厚度不足,隨著客戶端代碼比例的增加,相當一部分的業務邏輯也前端化,由此催生了很多非界面型組件的出現。


分層帶來的一個優勢是,每層的職責更專一了,由此,可以對其作單元測試的覆蓋,以保證其質量。傳統UI層測試最頭疼的問題是UI層和邏輯混雜在一起,比如往往會在遠程請求的回調中更改DOM,當引入分層之後,這些東西都可以分別被測試,然後再通過場景測試來保證整體流程。


三、代碼隔離


與開發傳統頁面型網站相比,實現單頁應用的過程中,有一些比較值得特別關注的點。


從單頁應用的特點來看,它比頁面型網站更加依賴於JavaScript,而由於頁面的單頁化,各種子功能的JavaScript代碼聚集到了同一個作用域,所以代碼的隔離、模塊化變得很重要。


在單頁應用中,頁面模板的使用是很普遍的。很多框架內置了特定的模板,也有的框架需要引入第三方的模板。這種模板是界面片段,我們可以把它們類比成JavaScript模塊,它們是另一種類型的組件。


模板也一樣有隔離的需要。不隔離模板,會造成什麼問題呢?模板間的沖突主要存在於id屬性上,如果一個模板中包含固定的id,當它被批量渲染的時候,會造成同一個頁面的作用域中出現多個相同id的元素,產生不可預測的後果。因此,我們需要在模板中避免使用id,如果有對DOM的訪問需求,應當通過其他選擇器來完成。如果一個單頁應用的組件化程度非常高,很可能整個應用中都沒有元素id的使用。


四、代碼合並與載入策略


人們對於單頁系統的載入時間容忍度與Web頁面不同,如果說他們願意為購物頁面的載入等待3秒,有可能會願意為單頁應用的首次載入等待5-10秒,但在此之後,各種功能的使用應當都比較流暢,所有子功能頁面盡量要在1-2秒時間內切換成功,否則他們就會感覺這個系統很慢。


從這些特點來看,我們可以把更多的公共功能放到首次載入,以減小每次載入的載入量,有一些站點甚至把所有的界面和邏輯全部放到首頁載入,每次業務界面切換的時候,只產生數據請求,因此它的響應是非常迅速的,比如青雲的控制台就是這么做的。


通常在單頁應用中,無需像網站型產品一樣,為了防止文件載入阻塞渲染,把js放到html後面載入,因為它的界面基本都是動態生成的。


當切換功能的時候,除了產生數據請求,還需要渲染界面,這個新渲染的界面部件一般是界面模板,它從哪裡來呢?來源無非是兩種,一種是即時請求,像請求數據那樣通過AJAX獲取過來,另一種是內置於主界面的某些位置,比如script標簽或者不可見的textarea中,後者在切換功能的時候速度有優勢,但是加重了主頁面的負擔。


在傳統的頁面型網站中,頁面之間是互相隔離的,因此,如果在頁面間存在可復用的代碼,一般是提取成單獨的文件,並且可能會需要按照每個頁面的需求去進行合並。


單頁應用中,如果總的代碼量不大,可以整體打包一次在首頁載入,如果大到一定規模,再作運行時載入,載入的粒度可以搞得比較大,不同的塊之間沒有重復部分。


五、路由與狀態的管理


我們最開始看到的幾個在線應用,有的是對路由作了管理的,有的沒有。


管理路由的目的是什麼呢?是為了能減少用戶的導航成本。比如說我們有一個功能,經歷過多次導航菜單的點擊,才呈現出來。


如果用戶想要把這個功能地址分享給別人,他怎麼才能做到呢?


傳統的頁面型產品是不存在這個問題的,因為它就是以頁面為單位的,也有的時候,服務端路由處理了這一切。


但是在單頁應用中,這成為了問題,因為我們只有一個頁面,界面上的各種功能區塊是動態生成的。所以我們要通過對路由的管理,來實現這樣的功能。


具體的做法就是把產品功能劃分為若干狀態,每個狀態映射到相應的路由,然後通過pushState這樣的機制,動態解析路由,使之與功能界面匹配。


有了路由之後,我們的單頁面產品就可以前進後退,就像是在不同頁面之間一樣。


其實在Web產品之外,早就有了管理路由的技術方案,Adobe
Flex中,就會把比如TabNavigator,甚至下拉框的選中狀態對應到url上,因為它也是單「頁面」的產品模式,需要面對同樣的問題。


當產品狀態復雜到一定程度的時候,路由又變得很難應用了,因為狀態的管理極其麻煩,比如開始的時候我們演示的c9.io在線IDE,它就沒法把狀態對應到url上。


六、緩存與本地存儲


在單頁應用的運作機制中,緩存是一個很重要的環節。


由於這類系統的前端部分幾乎全是靜態文件,所以它能夠有機會利用瀏覽器的緩存機制,而比如動態載入的界面模板,也完全可以做一些自定義的緩存機制,在非首次的請求中直接取緩存的版本,以加快載入速度。


甚至,也出現了一些方案,在動態載入JavaScript代碼的同時,把它們也緩存起來。比如Addy
Osmani的這個basket.js,就利用了HTML5localStorage作了js和css文件的緩存。


在單頁產品中,業務代碼也常常會需要跟本地存儲打交道,存儲一些臨時數據,可以使用localStorage或者localStorageDB來簡化自己的業務代碼。


七、服務端通信


傳統的Web產品通常使用JSONP或者AJAX這樣的方式與服務端通信,但在單頁Web應用中,有很大一部分採用WebSocket這樣的實時通訊方式。


WebSocket與傳統基於HTTP的通信機制相比,有很大的優勢。它可以讓服務端很便利地使用反向推送,前端只響應確實產生業務數據的事件,減少一遍又一遍無意義的AJAX輪詢。


由於WebSocket只在比較先進的瀏覽器上被支持,有一些庫提供了在不同瀏覽器中的兼容方案,比如socket.io,它在不支持WebSocket的瀏覽器上會降級成使用AJAX或JSONP等方式,對業務代碼完全透明、兼容。


八、內存管理


傳統的Web頁面一般是不需要考慮內存的管理的,因為用戶的停留時間相對少,即使出現內存泄漏,可能很快就被刷新頁面之類的操作沖掉了,但單頁應用是不同的,它的用戶很可能會把它開一整天,因此,我們需要對其中的DOM操作、網路連接等部分格外小心。


九、樣式的規劃


在單頁應用中,因為頁面的集成度高,所有頁面聚集到同一作用域,樣式的規劃也變得重要了。


樣式規劃主要是幾個方面:


1、基準樣式的分離


這裡面主要包括瀏覽器樣式的重設、全局字體的設置、布局的基本約定和響應式支持。


2、組件樣式的劃分


這裡面是兩個層面的規劃,首先是各種界面組件及其子元素的樣式,其次是一些修飾樣式。組件樣式應當盡量減少互相依賴,各組件的樣式允許冗餘。


3、堆疊次序的管理


傳統Web頁面的特點是元素多,但是層次少,單頁應用會有些不同。


在單頁應用中,需要提前為各種UI組件規劃堆疊次序,也就是z-index,比如說,我們可能會有各種彈出對話框,浮動層,它們可能組合成各種堆疊狀態。新的對話框的z-index需要比舊的高,才能確保蓋在它上面。諸如此類,都需要我們對這些可能的遮蓋作規劃,那麼,怎樣去規劃呢?


了解通信知識的人,應當會知道,不同的頻率段被劃分給不同的通信方式使用,在一些國家,領空的使用也是有劃分的,我們也可以用同樣的方式來預先分段,不同類型的組件的z-index落到各自的區間,以避免它們的沖突。


十、單頁應用的產品形態


我們在開始的時候提到,存在著很多新型Web產品,使用單頁應用的方式構建,但實際上,這類產品不僅僅存在於Web上。點開Chrome商店,我們會發現很多離線應用,這些產品都可以算是單頁應用的體現。


除了各種瀏覽器插件,藉助node-webkit這樣的外殼平台,我們可以使用Web技術來構建本地應用,產品的主要部分仍然是我們熟悉的單頁應用。


單頁應用的流行程度正在逐漸增加,大家如果關注了一些初創型互聯網企業,會發現其中很大一部分的產品模式是單頁化的。這種模式能帶給用戶流暢的體驗,在開發階段,對JavaScript技能水平要求較高。


單頁應用開發過程中,前後端是天然分離的,雙方以API為分界。前端作為服務的消費者,後端作為服務的提供者。


在此模式下,前端將會推動後端的服務化。當後端不再承擔模板渲染、輸出頁面這樣工作的情況下,它可以更專注於所提供的API的實現,而在這樣的情況下,Web前端與各種移動終端的地位對等,也逐漸使得後端API不必再為每個端作差異化設計了。


十一、部署模式的改變


在現在這個時代,我們已經可以看到一種產品的出現了,那就是「無後端」的Web應用。這是一種什麼東西呢?基於這種理念,你的產品很可能只需要自己編寫靜態Web頁面,在某種BaaS(Backend
asa
Service)雲平台上定製服務端API和雲存儲,集成這個平台提供的SDK,通過AJAX等方式與之打交道,實現注冊認證、社交、消息推送、實時通信、雲存儲等功能。


我們觀察一下這種模式,會發現前後端的部署已經完全分離了,前端代碼完全靜態化,這意味著可以把它們放置到CDN上,訪問將大大地加速,而服務端託管在BaaS雲上,開發者也不必去關注一些部署方面的繁瑣細節。


假設你是一名創業者,正在做的是一種實時協同的單頁產品,可以在雲平台上,快速定製後端服務,把絕大部分寶貴的時間花在開發產品本身上。


十二、單頁應用的缺陷


單頁應用最根本的缺陷就是不利於SEO,因為界面的絕大部分都是動態生成的,所以搜索引擎很不容易索引它。


十三、產品單頁化帶來的挑戰


一個產品想要單頁化,首先是它必須適合單頁的形態。其次,在這個過程中,對開發模式會產生一些變更,對開發技能也會有一些要求。


開發者的JavaScript技能必須過關,同時需要對組件化、設計模式有所認識,他所面對的不再是一個簡單的頁面,而是一個運行在瀏覽器環境中的桌面軟體。


以上就是小編今天為大家分享的關於Web工程師你知道如何構建單頁Web應用嗎?的文章,希望本篇文章能夠對正從事web前端工作的小夥伴們有所幫助。相信通過本篇文章的介紹大家已經對如何構建單頁面web應用有所了解了,想要了解更多web相關知識記得關注北大青鳥web培訓官網哦!


來源:https://github.com/xufei/blog/issues/5


*聲明:內容與圖片均來源於網路(部分內容有修改),版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。

2. 怎樣開發和部署web前端代碼

比較抽象,可以互相關注一下。

開發就是正常的開發 這個沒什麼好說的

部暑就是正常的發布吧,這個有好多方案

前提是你會開發。
只要會開發了 肯定 會 布暑的

3. 如何把webpack前端工程部署到tomcat上

幾種方法:
1、在myeclipse里部署
這個直接在myeclipse里配置好tomcat的根路徑。
在server里可以看到tomcat,選擇部署你的工程就行了。

2、把自己的web工程放在tomcat的webapps下
2.1 把你的工程達成war包,放進tomcat的webapps下;
2.2 把你工程的webroot下的內容用你的工程名稱(其實是你想要的在啊瀏覽器訪問的應用路徑名)作為文件夾包住webroot下的內容(要保證你的classes有東西,lib有東西)

3、把描述自己工程的context放在webapps下
context里可以描述你的工程的名稱,工程存放的路徑

4、在tomcat的conf/server.xml配置相應的context元素
這個和3的作用差不多,只是這個是在tomcat的server啟動時載入的

以上都能讓tomcat知道自己有多少應用要部署,將會進行相應的部署動作。部署完後,就可以在瀏覽器訪問了。

4. 請給我一套web前端的學習方案

方案步驟1,Web前端的工作也是需要有一定編程語言基礎的,比如java等,對開發語言要有一定的了解。
步驟2,對美要有自己的理解和概念。才能設計出好看的東西。
步驟3,進行課程學習,不管是網上視頻自學還是報名參加學習,都需要對web前端的整個框架很熟悉,而且要多實踐,操作也要足夠熟練。
這大概就是web前端的學習方案,有什麼具體的問題也可以咨詢ITjob去來解決。

5. 常見的前端集成部署方案有哪些各自的優缺點是什麼

您好,這樣的:
磁碟陣列的由來: 由美國柏克萊大學(University of California-Berkeley)在1987年,發表的文章:「A Case for Rendant Arrays of Inexpensive Disks」。文章中,談到了RAID這個字匯,而且定義了RAID的5層級。柏克萊大學研究其研究目的為,反應當時CPU快速的性能。CPU效能每年大約成長30~50%,而硬磁機只能成長約7%。研究小組希望能找出一種新的技術,在短期內,立即提升效能來平衡計算機的運算能力。在當時,柏克萊研究小組的主要研究目的是效能與成本。 另外,研究小組也設計出容錯(fault-tolerance),邏輯數據備份(logical data rendancy),而產生了RAID理論。研究初期,便宜(Inexpensive)的磁碟也是主要的重點,但後來發現,大量便宜磁碟組合並不能適用於現實的生產環境,後來Inexpensive被改為independence,許多獨立的磁碟組。 磁碟陣列,時勢所趨: 自有PC以來,硬碟是最常使用的儲存裝置。但在整個計算機系統架構中,跟CPU與RAM來比,硬碟的速度是PC中最弱的設備之一。所以,為了加速計算機整體的數據流量,增加儲存的吞吐量,進階改進硬碟數據的安全,磁碟陣列的設計因應而生。 硬碟隨著科技的日新月異,現在其容量已達1500GB以上,轉速到了1萬轉,甚至15000轉,而且價格實在是很便宜,再加現在企業流行建造網路,企業資源計劃(Enterprise Resource Planning:ERP)是每個公司建構網路的主要目標。所以,利用區域網絡來傳遞數據,伺服器所使用的硬碟顯得非常重要,除了容量大、速度快之外,穩定更是基本要求。基於此因,磁碟陣列開始被廣泛的應用在個人計算機上。 磁碟陣列其樣式有三種,一是外接式磁碟陣列櫃、二是內接式磁碟陣列卡,三是利用軟體來模擬。外接式磁碟陣列櫃最常被使用大型伺服器上,具可熱抽換(Hot Swap)的特性,不過這類產品的價格都很貴。內接式磁碟陣列卡,因為價格便宜,但需要較高的安裝技術,適合技術人員使用操作。另外利用軟體模擬的方式,由於會拖累機器的速度,不適合大數據流量的伺服器。 由上述可知,現在IDE磁碟陣列大行其道的道理;IDE介面硬碟的穩定度與效能表現已有很大的提升,加上成本考量,所以採用IDE介面硬碟來作為磁碟陣列的解決方案,可說是最佳的方式 在網路存儲中,磁碟陣列是一種把若干硬磁碟驅動器按照一定要求組成一個整體,整個磁碟陣列由陣列控制器管理的系統。磁帶庫是像自動載入磁帶機一樣的基於磁帶的備份系統,磁帶庫由多個驅動器、多個槽、機械手臂組成,並可由機械手臂自動實現磁帶的拆卸和裝填。它能夠提供同樣的基本自動備份和數據恢復功能,同時具有更先進的技術特點。掌握網路存儲設備的安裝、操作使用也是網管員必須要學會的。在架構無線區域網時,對無線路由器、無線網路橋接器AP、無線網卡、天線等無線區域網產品進行安裝、調試和應用操作。 磁碟陣列的主流結構: 磁碟陣列作為獨立系統在主機外直連或通過網路與主機相連。磁碟陣列有多個埠可以被不同主機或不同埠連接。一個主機連接陣列的不同埠可提升傳輸速度。 和目前PC用單磁碟內部集成緩存一樣,在磁碟陣列內部為加快與主機交互速度,都帶有一定量的緩沖存儲器。主機與磁碟陣列的緩存交互,緩存與具體的磁碟交互數據。 在應用中,有部分常用的數據是需要經常讀取的,磁碟陣列根據內部的演算法,查找出這些經常讀取的數據,存儲在緩存中,加快主機讀取這些數據的速度,而對於其他緩存中沒有的數據,主機要讀取,則由陣列從磁碟上直接讀取傳輸給主機。對於主機寫入的數據,只寫在緩存中,主機可以立即完成寫操作。然後由緩存再慢慢寫入磁碟。
編輯本段磁碟陣列的優點
RAID的採用為存儲系統(或者伺服器的內置存儲)帶來巨大利益,其中提高傳輸速率和提供容錯功能是最大的優點。 RAID通過同時使用多個磁碟,提高了傳輸速率。RAID通過在多個磁碟上同時存儲和讀取數據來大幅提高存儲系統的數據吞吐量(Throughput)。在RAID中,可以讓很多磁碟驅動器同時傳輸數據,而這些磁碟驅動器在邏輯上又是一個磁碟驅動器,所以使用RAID可以達到單個磁碟驅動器幾倍、幾十倍甚至上百倍的速率。這也是RAID最初想要解決的問題。因為當時CPU的速度增長很快,而磁碟驅動器的數據傳輸速率無法大幅提高,所以需要有一種方案解決二者之間的矛盾。RAID最後成功了。 通過數據校驗,RAID可以提供容錯功能。這是使用RAID的第二個原因,因為普通磁碟驅動器無法提供容錯功能,如果不包括寫在磁碟上的CRC(循環冗餘校驗)碼的話。RAID容錯是建立在每個磁碟驅動器的硬體容錯功能之上的,所以它提供更高的安全性。在很多RAID模式中都有較為完備的相互校驗/恢復的措施,甚至是直接相互的鏡像備份,從而大大提高了RAID系統的容錯度,提高了系統的穩定冗餘性。
編輯本段磁碟陣列問答
1. 什麼是磁碟陣列(Disk Array)? 磁碟陣列(Disk Array)是由一個硬碟控制器來控制多個硬碟的相互連接,使多個硬碟的讀寫同步,減少錯誤,增加效率和可靠度的技術。 2.什麼是RAID? RAID是Rendant Array of Inexpensive Disk的縮寫,意為廉價冗餘磁碟陣列,是磁碟陣列在技術上實現的理論標准,其目的在於減少錯誤、提高存儲系統的性能與可靠度。常用的等級有1、3、5級等。 3.什麼是RAID Level 0? RAID Level 0是Data Striping(數據分割)技術的實現,它將所有硬碟構成一個磁碟陣列,可以同時對多個硬碟做讀寫動作,但是不具備備份及容錯能力,它價格便宜,硬碟使用效率最佳,但是可靠度是最差的。 以一個由兩個硬碟組成的RAID Level 0磁碟陣列為例,它把數據的第1和2位寫入第一個硬碟,第三和第四位寫入第二個硬碟……以此類推,所以叫「數據分割",因為各盤數據的寫入動作是同時做的,所以它的存儲速度可以比單個硬碟快幾倍。 但是,這樣一來,萬一磁碟陣列上有一個硬碟壞了,由於它把數據拆開分別存到了不同的硬碟上,壞了一顆等於中斷了數據的完整性,如果沒有整個磁碟陣列的備份磁帶的話,所有的數據是無法挽回的。因此,盡管它的效率很高,但是很少有人冒著數據丟失的危險採用這項技術。 4.什麼是RAID Level 1? RAID Level 1使用的是Disk Mirror(磁碟映射)技術,就是把一個硬碟的內容同步備份復制到另一個硬碟里,所以具備了備份和容錯能力,這樣做的使用效率不高,但是可靠性高。 5.什麼是RAID Level 3? RAID Level 3採用Byte-interleaving(數據交錯存儲)技術,硬碟在SCSI控制卡下同時動作,並將用於奇偶校驗的數據儲存到特定硬碟機中,它具備了容錯能力,硬碟的使用效率是安裝幾個就減掉一個,它的可靠度較佳。 6.什麼是RAID Level 5? RAID Level 5使用的是Disk Striping(硬碟分割)技術,與Level 3的不同之處在於它把奇偶校驗數據存放到各個硬碟里,各個硬碟在SCSI控制卡的控制下平行動作,有容錯能力,跟Level 3一樣,它的使用效率也是安裝幾個再減掉一個。 7.什麼是熱插拔硬碟? 熱插拔硬碟英文名為Hot-Swappable Disk,在磁碟陣列中,如果使用支持熱插拔技術的硬碟,在有一個硬碟壞掉的情況下,伺服器可以不用關機,直接抽出壞掉的硬碟,換上新的硬碟。一般的商用磁碟陣列在硬碟壞掉的時候,會自動鳴叫提示管理員更換硬碟。
編輯本段RAID技術規范簡介
在計算機發展的初期,「大容量」硬碟的價格還相當高,解決數據存儲安全性問題的主要方法是使用磁帶機等設備進行備份,這種方法雖然可以保證數據的安全,但查閱和備份工作都相當繁瑣。1987年, Patterson、Gibson和Katz這三位工程師在加州大學伯克利分校發表了題為《A Case of Rendant Array of Inexpensive Disks(廉價磁碟冗餘陣列方案)》的論文,其基本思想就是將多隻容量較小的、相對廉價的硬碟驅動器進行有機組合,使其性能超過一隻昂貴的大硬碟。這一設計思想很快被接受,從此RAID技術得到了廣泛應用,數據存儲進入了更快速、更安全、更廉價的新時代。 磁碟陣列對於個人電腦用戶,還是比較陌生和神秘的。印象中的磁碟陣列似乎還停留在這樣的場景中:在寬闊的大廳里,林立的磁碟櫃,數名表情陰郁、早早謝頂的工程師徘徊在其中,不斷從中抽出一塊塊沉重的硬碟,再插入一塊塊似乎更加沉重的硬碟……終於,隨著大容量硬碟的價格不斷降低,個人電腦的性能不斷提升,IDE-RAID作為磁碟性能改善的最廉價解決方案,開始走入一般用戶的計算機系統。 RAID技術主要包含RAID 0~RAID 7等數個規范,它們的側重點各不相同,常見的規范有如下幾種: RAID 0:RAID 0連續以位或位元組為單位分割數據,並行讀/寫於多個磁碟上,因此具有很高的數據傳輸率,但它沒有數據冗餘,因此並不能算是真正的RAID結構。RAID 0隻是單純地提高性能,並沒有為數據的可靠性提供保證,而且其中的一個磁碟失效將影響到所有數據。因此,RAID 0不能應用於數據安全性要求高的場合。 RAID 1:它是通過磁碟數據鏡像實現數據冗餘,在成對的獨立磁碟上產生互 為備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1可以提高讀取性能。RAID 1是磁碟陣列中單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁碟失效時,系統可以自動切換到鏡像磁碟上讀寫,而不需要重組失效的數據。 RAID 0+1: 也被稱為RAID 10標准,實際是將RAID 0和RAID 1標准結合的產物,在連續地以位或位元組為單位分割數據並且並行讀/寫多個磁碟的同時,為每一塊磁碟作磁碟鏡像進行冗餘。它的優點是同時擁有RAID 0的超凡速度和RAID 1的數據高可靠性,但是CPU佔用率同樣也更高,而且磁碟的利用率比較低。 RAID 2:將數據條塊化地分布於不同的硬碟上,條塊單位為位或位元組,並使用稱為「加重平均糾錯碼(海明碼)」的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁碟存放檢查及恢復信息,使得RAID 2技術實施更復雜,因此在商業環境中很少使用。 RAID 3:它同RAID 2非常類似,都是將數據條塊化分布於不同的硬碟上,區別在於RAID 3使用簡單的奇偶校驗,並用單塊磁碟存放奇偶校驗信息。如果一塊磁碟失效,奇偶盤及其他數據盤可以重新產生數據;如果奇偶盤失效則不影響數據使用。RAID 3對於大量的連續數據可提供很好的傳輸率,但對於隨機數據來說,奇偶盤會成為寫操作的瓶頸。 RAID 4:RAID 4同樣也將數據條塊化並分布於不同的磁碟上,但條塊單位為塊或記錄。RAID 4使用一塊磁碟作為奇偶校驗盤,每次寫操作都需要訪問奇偶盤,這時奇偶校驗盤會成為寫操作的瓶頸,因此RAID 4在商業環境中也很少使用。 RAID 5:RAID 5不單獨指定的奇偶盤,而是在所有磁碟上交叉地存取數據及奇偶校驗信息。在RAID 5上,讀/寫指針可同時對陣列設備進行操作,提供了更高的數據流量。RAID 5更適合於小數據塊和隨機讀寫的數據。RAID 3與RAID 5相比,最主要的區別在於RAID 3每進行一次數據傳輸就需涉及到所有的陣列盤;而對於RAID 5來說,大部分數據傳輸只對一塊磁碟操作,並可進行並行操作。在RAID 5中有「寫損失」,即每一次寫操作將產生四個實際的讀/寫操作,其中兩次讀舊的數據及奇偶信息,兩次寫新的數據及奇偶信息。 RAID 6:與RAID 5相比,RAID 6增加了第二個獨立的奇偶校驗信息塊。兩個獨立的奇偶系統使用不同的演算法,數據的可靠性非常高,即使兩塊磁碟同時失效也不會影響數據的使用。但RAID 6需要分配給奇偶校驗信息更大的磁碟空間,相對於RAID 5有更大的「寫損失」,因此「寫性能」非常差。較差的性能和復雜的實施方式使得RAID 6很少得到實際應用。 RAID 7:這是一種新的RAID標准,其自身帶有智能化實時操作系統和用於存儲管理的軟體工具,可完全獨立於主機運行,不佔用主機CPU資源。RAID 7可以看作是一種存儲計算機(Storage Computer),它與其他RAID標准有明顯區別。除了以上的各種標准(如表1),我們可以如RAID 0+1那樣結合多種RAID規范來構築所需的RAID陣列,例如RAID 5+3(RAID 53)就是一種應用較為廣泛的陣列形式。用戶一般可以通過靈活配置磁碟陣列來獲得更加符合其要求的磁碟存儲系統。 RAID 5E RAID 5E(RAID 5 Enhencement): RAID 5E是在 RAID 5級別基礎上的改進,與RAID 5類似,數據的校驗信息均勻分布在各硬碟上,但是,在每個硬碟上都保留了一部分未使用的空間,這部分空間沒有進行條帶化,最多允許兩塊物理硬碟出現故障。看起來,RAID 5E和RAID 5加一塊熱備盤好象差不多,其實由於RAID 5E是把數據分布在所有的硬碟上,性能會與RAID5 加一塊熱備盤要好。當一塊硬碟出現故障時,有故障硬碟上的數據會被壓縮到其它硬碟上未使用的空間,邏輯盤保持RAID 5級別。 RAID 5EE RAID 5EE: 與RAID 5E相比,RAID 5EE的數據分布更有效率,每個硬碟的一部分空間被用作分布的熱備盤,它們是陣列的一部分,當陣列中一個物理硬碟出現故障時,數據重建的速度會更快。 開始時RAID方案主要針對SCSI硬碟系統,系統成本比較昂貴。1993年,HighPoint公司推出了第一款IDE-RAID控制晶元,能夠利用相對廉價的IDE硬碟來組建RAID系統,從而大大降低了RAID的「門檻」。從此,個人用戶也開始關注這項技術,因為硬碟是現代個人計算機中發展最為「緩慢」和最缺少安全性的設備,而用戶存儲在其中的數據卻常常遠超計算機的本身價格。在花費相對較少的情況下,RAID技術可以使個人用戶也享受到成倍的磁碟速度提升和更高的數據安全性,現在個人電腦市場上的IDE-RAID控制晶元主要出自HighPoint和Promise公司,此外還有一部分來自AMI公司。 面向個人用戶的IDE-RAID晶元一般只提供了RAID 0、RAID 1和RAID 0+1(RAID 10)等RAID規范的支持,雖然它們在技術上無法與商用系統相提並論,但是對普通用戶來說其提供的速度提升和安全保證已經足夠了。隨著硬碟介面傳輸率的不斷提高,IDE-RAID晶元也不斷地更新換代,晶元市場上的主流晶元已經全部支持ATA 100標准,而HighPoint公司新推出的HPT 372晶元和Promise最新的PDC20276晶元,甚至已經可以支持ATA 133標準的IDE硬碟。在主板廠商競爭加劇、個人電腦用戶要求逐漸提高的今天,在主板上板載RAID晶元的廠商已經不在少數,用戶完全可以不用購置RAID卡,直接組建自己的磁碟陣列,感受磁碟狂飆的速度。 RAID 50 RAID 50:RAID50是RAID5與RAID0的結合。此配置在RAID5的子磁碟組的每個磁碟上進行包括奇偶信息在內的數據的剝離。每個RAID5子磁碟組要求三個硬碟。RAID50具備更高的容錯能力,因為它允許某個組內有一個磁碟出現故障,而不會造成數據丟失。而且因為奇偶位分部於RAID5子磁碟組上,故重建速度有很大提高。優勢:更高的容錯能力,具備更快數據讀取速率的潛力。需要注意的是:磁碟故障會影響吞吐量。故障後重建信息的時間比鏡像配置情況下要長。

6. 如何推進 mobile first 的前端 Web 方案

背景:雲適配創立之初,我們就開始積累自己的前端框架,同時也借鑒了Bootstrap等國外框架的優點。在內部使用過程中,大家一致反映不錯,我們就希望把這個產品開源,希望分享給更多的人,也希望更多的人來貢獻代碼,來共建中國前端開源生態環境。

由於Amaze UI目前處在內測期,我們希望能盡可能多的收集到優秀的、有建設性的反饋建議和看法,與廣大優秀前端開發者共同完善Amaze UI 的功能,推動中國移動跨屏前端技術的發展。
下面提前跟大家分享下我們處理 mobile first 的前端 Web 方案。

1. Amaze UI 之 CSS
1.1 移動優先:
Amaze UI 以移動優先的理念開發,需要在 meta 中設置相關 viewport 屬性。
width=device-width, initial-scale=1 是必須的,而且我們認為好的設計是不需要用戶去操作窗口縮放的,所以加上了 maximum-scale=1, user-scalable=no。

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
1.2 使用 HTML5
Amaze UI 在 HTML5 下開發,沒有測試其他 DOCTYPE,使用之前確保你的 HTML 第一行是 <!DOCTYPE html>。

<!DOCTYPE html>
<html>
...
</html>

2. Amaze UI 之 JavaScript
基於 Zepto.js

Amaze UI JavaScript 組件基於 Zepto.js 開發,使用時確保在 Amaze UI 的腳本之前引入了 Zepto.js(1.1.3)。
由於模塊內部指定了 $ = window.Zepto,目前並不支持使用 jQuery 替換 Zepto.js,後續的工作中會增加 jQuery 支持。
組件調用

組件的調用方式和 jQuery 類似,具體細節請查看各個組件的文檔。
高級使用

基於 Sea.js

Amaze UI 目前使用 Sea.js 組織、管理模塊,使用 Sea.js 的用戶可以通過源碼查看相關介面。
默認事件介面

Amaze UI 通過特定的 HTML 來綁定默認的事件,多數 JS 組件通過 HTML 標記就可以實現調用。這些默認事件都在amui 命名空間下,用戶可以自行關閉。
關閉所有默認事件:

$(document).off('.amui');
關閉特定組件的默認事件:

$(document).off('.modal.amui');
自定義事件

多數組件都定義了一些自定義事件。
自定義事件命名的方式為 {事件名稱}:{組件名稱}:amui,用戶可以查看組件文檔使用這些自定義事件。

$('#myAlert').on('close:alert:amui', function() { // do something});
Web 組件截圖:

也聊下前端開發者可能有的疑問:

1. 現在前端框架這么多,為什麼還要開發Amaze UI?
國內前端框架確實不少,但能解決瀏覽器存在的跨屏適配和兼容性問題的技術卻很少。加上國內對開源技術的思想意識不夠,很多成熟的技術主要封閉在自己的公司內,這樣造成整個產業鏈在技術上很難互惠互通。同時,移動、跨屏已經成為了的當下互聯網最熱門的技術,而前端開發者在開發網頁時,時常會陷入重復解決繁復的跨屏、適配問題,耗費精力,影響工作效率,產品開發進度慢這樣的惡性循環中。公司內部用 Amaze UI 對這類問題的解決反映挺好,我們就打算開源出去,希望能對前端開發有些幫助。

2. Amaze UI 相對其他前端框架有哪些優勢?
不可避免的需要跟 Bootstrap 做比較,我覺得 Amaze UI 可能有下面幾種優勢:
0. 能良好的兼容已有前端框架的優勢;
1. 加入更多符合中國市場特性的元素:中文排版更優化,兼容中國本土主流瀏覽器 ;
2. 更輕量化,不僅適用於桌面端,更適合移動端 ;
3. 包含一些封裝好的Widgets,其他框架則沒有;

3. Amaze UI 推進 mobile first 前端 Web 方案的思路是什麼?
通過拆分、封裝一些常用的網頁組件,以規范化通過雲適配平台開發的移動網站,統一用戶體驗。

具體措施上:

語義化。Amaze UI開發遵循語義化原則,意圖通過類名(class)等信息直觀傳達元素的功能角色,同時關注結構、樣式、行為分離,降低各部分的耦合程度,提高開發效率和可維護性。
移動優先,跨屏適配。遵循 「移動優先(Mobile First)」、「漸進增強(Progressive enhancement)」的理念,可先從移動設備開始開發網站,逐步在擴展的更大屏幕的設備上,專注於最重要的內容和交互,適應移動互聯潮流。輕松創建跨屏適配的網頁。
模塊化,按需定製。AMUI使用LESS編寫樣式,結構良好,易擴展,易維護;使用Seajs模塊化開發、組織 JavaScript,自然、優雅。
專注於HTML5。AMUI 基於輕量的Zepto.js開發,有效減少為兼容舊瀏覽器的臃腫代碼;基於 CSS3 的交互效果,平滑、高效。AMUI專注於現代瀏覽器(支持HTML5),不再為過時的瀏覽器耗費資源,為更有價值的用戶提高更好的體驗。
本地化支持:相比國外的前端框架,Amaze UI專註解決中文排版優化問題,根據操作系統調整字體,實現最佳中文排版效果;針對國內主流瀏覽器及App內置瀏覽器提供更好的兼容性支持,為你節省大量兼容性調試時間。

後記:
Amaze UI 目前處在內測期,希望能盡可能多的收集到優秀的、有建設性的反饋建議和看法,與廣大優秀前端開發者共同完善Amaze UI 的功能,推動中國移動跨屏前端技術的發展。

7. 如何學習web前端

學習最重要的是找到正確的方向,否則,付出再多的努力也是與成功背道而馳。

很多時候,成功除了需要勇氣、堅持外,更需要正確的方向。也許有了一個正確的方向,成功來得比想像中更快。如果在錯誤的路上奔跑,再怎麼努力也是無濟於事。學習Web前端也是如此,首先明確自己的學習路線。以下講述一下學習web前端的4個階段怎麼做:

1.HTML

首先,學習HTML。HTML(Hyper Text Mark-up Language,超文本標記語言)是一個網頁的骨架,無論是靜態網頁還是動態網頁,最終返回到瀏覽器端的都是HTML代碼,瀏覽器將HTML代碼解釋渲染後呈現給用戶。因此,我們必須掌握HTML的基本結構和常用標記及屬性。

HTML的學習是一個記憶和理解的過程,在學習過程中可以藉助Dreamweaver的「拆分」視圖輔助學習。在「設計」視圖中看效果,在「代碼」視圖中學本質,將各種視圖的優勢發揮到極致,這種對照學習的方法彌補了單純識記HTML標簽和屬性的枯燥乏味,想必對各位初學web前端開發的菜鳥們來說是一個很好的方法。

學習了HTML後,只是掌握了各種「原材料」的製作方法,要想蓋一幢樓房,還要把這些「原材料」按照我們設計的方案組合布局在一起,並進行一些樣式的美化。

2.CSS

接著來學習CSS。CSS(Cascading Style Sheets,層疊樣式表),是能夠真正做到網頁表現與內容分離的一種樣式設計語言。相對於傳統HTML的表現而言其樣式是可以復用的,這樣就極大地提高了我們開發的速度,降低了維護的成本。

同時CSS中的盒子模型、相對布局、絕對布局等能夠實現對網頁中各對象的位置排版進行像素級的精確控制。通過此階段的學習可以順利完成「一幢樓房」的建設了。

「樓房」建設完成後,就可以交給用戶使用了,但如果想讓用戶獲得更佳的體驗,還可以對「樓房」進行更深一步的「裝修」,讓它看起來更「豪華」一些。

3.Javascript

JavaScript是一種被廣泛用於客戶端的腳本語言,JavaScript為我們提供了一些內置函數、對象和DOM操作,藉助這些內容可以實現一些客戶端的特效、驗證、交互等,使頁面看起來更加活潑。

盡管JavaScript有很多優點,讓你驚喜不已,但當項目經理對你說「這個效果在××瀏覽器下不兼容,重做!」時,你肯定懵了:「不兼容?那可是花了我一個晚上寫了幾百行代碼的啊!」

的確,JavaScript的兼容性和復雜性有時真的很讓人頭疼,幸好有「大神」幫我們做了封裝。

4.jQUery

最後學習jquery。jQuery是一個免費、開源的輕量級的JavaScript庫,並且兼容各種瀏覽器(jQuery2.0及後續版本放棄了對IE6/7/8瀏覽器的支持),同時有很多基於jQuery的插件可供選擇,這樣,在實現一些豐富的動態效果時更方便快捷,大大節省了開發時間,提高了開發速度,這也充分體現了其「writeless,domore」(寫更少的代碼,做更多的事情)的核心宗旨。

「豪華大樓」至此拔地而起,但是如此日復一日,年復一年的蓋樓,好繁瑣!如果可以將大樓裡面每一個單獨部件模塊化,當需要蓋樓時就像堆積木一樣組合在一起,這樣就簡便、快捷了。

這種思想也適用於Web前端開發中,於是出現了各種前端框架,下面介紹的是Bootstrap。

Bootstrap是Twitter推出的一個開源的用於前端開發的工具包,是一個CSS/HTML框架,並且支持響應式布局。一經推出後頗受歡迎,一直是GitHub上的熱門開源項目。

在項目開發過程中,藉助Bootstrap提供的CSS樣式、組件、JavaScript插件等,可以快速地完成頁面布局和樣式設置,然後有針對性地微調樣式,這樣基於框架進行開發大大縮短了開發周期。

二、關於學習Web前端的建議

最後給大家講一下在學習Web前端過程中的一些建議。

在CSS布局時,需要注意一個問題:很多同學缺乏對頁面布局進行整體分析,不能從宏觀上對頁面中盒子間的嵌套關系進行把握,就急於動手去做,導致頁面中各元素間的關系很混亂,容易出現盒子在浮動時錯位等情況。所以在布局時採用「自頂向下,逐步細化」的思想,先用幾個盒子將頁面從整體上劃分,然後逐步在盒子中繼續嵌套盒子。

「君子生非異也,善假於物也」,在學習過程中還要多瀏覽一些優秀的網站,善於分析、借鑒其設計思路和布局方法,見多方能識廣,從而融匯貫通,取他人之長、為己所用。

同時還要善於使用Firebug這個利器。Firebug一方面可以幫助我們調試自己的頁面,另一方面我們可以使用Firebug方便地查看、分析別人網站的源代碼。

隨著移動互聯網熱潮的到來,移動開發越來越受到大家的歡迎,響應式布局、微網站等需求量不斷增加,也是Web前端未來的發展方向之一。對web前端開發感興趣的同學可以多點學習這方面的知識。

8. web前端主要包含了哪些技術

前端前景是很不錯的,像前端這樣的專業還是一線城市比較好,師資力量跟得上、就業的薪資也是可觀的,學習前端可以按照路線圖的順序,

0基礎學習前端是沒有問題的,關鍵是找到靠譜的前端培訓機構,你可以深度了解機構的口碑情況,問問周圍知道這家機構的人,除了口碑再了解機構的以下幾方面:

1. 師資力量雄厚

要想有1+1>2的實際效果,很關鍵的一點是師資隊伍,你接下來無論是找個工作還是工作中出任哪些的人物角色,都越來越愛你本身的技術專業前端技術性,也許的技術專業前端技術性則絕大多數來自你的技術專業前端教師,一個好的前端培訓機構必須具備雄厚的師資力量。

2. 就業保障完善

實現1+1>2效果的關鍵在於能夠為你提供良好的發展平台,即能夠為你提供良好的就業保障,讓學員能夠學到實在實在的知識,並向前端學員提供一對一的就業指導,確保學員找到自己的心理工作。

3. 學費性價比高

一個好的前端培訓機構肯定能給你帶來1+1>2的效果,如果你在一個由專業的前端教師領導並由前端培訓機構自己提供的平台上工作,你將獲得比以往更多的投資。

希望你早日學有所成。

9. 常見的前端集成部署方案有哪些各自的優缺點是什麼

前端行業經歷了這么長時間的發展,技術元素非常豐富,這里列舉出一般web團隊需要用到的技術元素:

開發規范:包括開發、部署的目錄規范,編碼規范等。不要小瞧規范的威力,可以極大的提升開發效率,真正優秀的規范不會讓使用者感到約束,而是能幫助他們快速定位問題,提升效率。

模塊化開發:針對js、css,以功能或業務為單元組織代碼。js方面解決獨立作用域、依賴管理、api暴露、按需載入與執行、安全合並等問題,css方面解決依賴管理、組件內部樣式管理等問題。是提升前端開發效率的重要基礎。現在流行的模塊化框架有requirejs、seajs等。

組件化開發:在模塊化基礎上,以頁面小部件(component)為單位將頁面小部件的js、css、html代碼片段放在一起進行開發、維護,組件單元是資源獨立的,組件在系統內可復用。比如頭部(header)、尾部(footer)、搜索框(searchbar)、導航(menu)、對話框(dialog)等,甚至一些復雜的組件比如編輯器(editor)等。通常業務會針對組件化的js部分進行必要的封裝,解決一些常見的組件渲染、交互問題。

組件倉庫:有了組件化,我們希望將一些非常通用的組件放到一個公共的地方供團隊共享,方便新項目復用,這個時候我們就需要引入一個組件倉庫的東西,現在流行的組件庫有bower、component等。團隊發展到一定規模後,組件庫的需求會變得非常強烈。

性能優化:這里的性能優化是指能夠通過工程手段保證的性能優化點。由於其內容比較豐富,就不在這里展開了,感興趣的同學可以閱讀我的這兩篇文章 [1] [2]。性能優化是前端項目發展到一定階段必須經歷的過程。這部分我想強調的一點是性能優化一定是一個工程問題和統計問題,不能用工程手段保證的性能優化是不靠譜的,優化時只考慮一個頁面的首次載入,不考慮全局在宏觀統計上的優化提升也是片面的。

項目部署:部署按照現行業界的分工標准,雖然不是前端的工作范疇,但它對性能優化有直接的影響,包括靜態資源緩存、cdn、非覆蓋式發布等問題。合理的靜態資源資源部署可以為前端性能帶來較大的優化空間。

開發流程:完整的開發流程包括本地開發調試、視覺效果走查確認、前後端聯調、提測、上線等環節。對開發流程的改善可以大幅降低開發的時間成本,工作這些年見過很多獨立的系統(cms系統、靜態資源推送系統)將開發流程割裂開,對前端開發的效率有嚴重的阻礙。

開發工具:這里說的工具不是指IDE,而是工程工具,包括構建與優化工具、開發-調試-部署等流程工具,以及組件庫獲取、提交等相關工具,甚至運營、文檔、配置發布等平台工具。前端開發需要工具支持,這個問題的根本原因來自前端領域語言特性(未來我會單獨寫一篇文章介紹前端領域語言缺陷問題)。前端開發所使用的語言(js、css、html)以及前端工程資源的載入與定位策略決定了前端工程必須要工具支持。由於這些工具通常都是獨立的系統,要想把它們串聯起來,才有了yeoman這樣的封裝。前面提到的7項技術元素都直接或間接的對前端開發工具設計產生一定的影響,因此能否串聯其他技術要素,使得前端開發形成一個連貫可持續優化的開發體系,工具的設計至關重要。

10. web前端跨域的一些解決方案

沒有歸納之前對跨域的一些說法是模糊的,什麼jsonp啊,跨域原理啊,心裡只有一個大概的說法,知道這個東西,然後用的時候直接網路Ctrl+C,後來閑下來決定整理一波這些知識點,需知其所以然。

那麼,其實這是瀏覽器對我們的一種保護機制,把壞人擋在門外。那麼,問題來了,我們怎麼確定門外的人到底是好人還是壞人呢?瀏覽器關上了壞人的一扇門,留給了我們好人一扇窗。

JSONP跟JSON沒有關系..就好像JavaScript和Java一樣
瀏覽器對script、img(這些標簽的請求方式都是 GET ,所以jsonp不支持 POST )這種標簽沒有限制,我們就可以這樣干

因此,實現CORS通信的關鍵是伺服器。只要伺服器實現了CORS介面,就可以跨源通信。

伺服器端對於CORS的支持,主要就是通過設置 Access-Control-Allow-Origin 來進行的。如果瀏覽器檢測到相應的設置,就可以允許Ajax進行跨域的訪問。 更多有關跨域資源共享 CORS 的知識

瀏覽器中可以查看對應的響應頭,舉個例子,如下

服務端允許CORS,服務端需要針對介面設置的一系列響應頭 (Response Headers)

1.簡單請求
目前大多數情況都採用這種方式。簡單請求只需要設置 Access-Control-Allow-Origin 即可。滿足以下兩個條件,就屬於簡單請求。

2.非簡單請求
非簡單請求會發出一次預檢測請求,返回碼是204,預檢測通過才會真正發出請求,這才返回200。來看栗子:

非簡單請求需要根據不同情況配置不同的響應頭,一系列響應頭配置項見上方

這個說法相信不陌生,我們依然使用前端域名請求,然後有一個 中介商---代理 把這個請求轉發到真正的後端域名上,那也就不存在跨域問題了。
比較普遍的Nginx,簡單的配置一下就可以了。了解更多的配置信息: nginx詳解

然後前端這邊的請求地址是 http://localhost:9099/api/xxx ,然後Nginx監聽到地址是 localhost:9099/api 的請求,就幫我們轉發到真正的服務端地址 http://.com

CORS與JSONP的使用目的相同,但是比JSONP更強大。JSONP只支持GET請求,CORS支持所有類型的HTTP請求。JSONP的優勢在於支持老式瀏覽器,以及在服務端同意jsonp方式時,可以向不支持CORS的網站請求數據。Nginx可以說是最方便的,不過需要部署Nginx才行,需要對伺服器有一定的理解,不太適合剛入門的同學,當然也可以請後台同學幫忙部署。

window.postMessage(data,origin) 是 HTML5 的一個介面,專注實現不同窗口不同頁面的跨域通訊。

現在是這么一個情況,由於同源策略的限制下, a.html 不能操作iframe( b.html )裡面的dom,那麼使用postMessage就可以解決這一情況

然後 b.html 頁面通過message事件監聽並接受消息:

這種方式只適合主域名相同,但子域名不同的iframe跨域。
比如主域名是 http://.com/:8888 ,子域名是 http://child..com/:8888 ,這種情況下給兩個頁面設置相同的document.domain即document.domain = .com 就可以訪問各自的window對象了。

前端跨域整理
不要再問我跨域的問題了