html5算法,html5協(xié)議
html5有哪些優(yōu)點和缺點
優(yōu)點:a、網絡標準統(tǒng)一、HTML5本身是由W3C推薦出來的。
b、多設備、跨平臺
c、即時更新,提高可用性和改進用戶的友好體驗;
d、有幾個新的標簽,這將有助于開發(fā)人員定義重要的內容;
e、可以給站點帶來更多的多媒體元素(視頻和音頻),可以很好的替代Flash和Silverlight;
f、涉及到網站的抓取和索引的時候,對于SEO很友好;
缺點: a、安全:像之前Firefox4的web socket和透明代理的實現(xiàn)存在嚴重的安全問題,同時web storage、web socket 這樣的功能很容易被黑客利用,來盜取用戶的信息和資料。
b、完善性:許多特性各瀏覽器的支持程度也不一樣。
c、技術門檻: html5簡化開發(fā)者工作的同時代表了有許多新的屬性和API需要開發(fā)者學習,想web worker、web socket、web storage等新特性要求對于后臺的技術需要有一定的了解,甚至需要深入了解其后面原理和邏輯,而canvas要求視覺和圖像算法的一些知識,傳統(tǒng)的前端開發(fā)者需要掌握更多算法、視覺、 后臺甚至瀏覽器原理的知識,機遇的同時也是巨大的挑戰(zhàn)
d、性能:某些平臺上的引擎問題導致html5性能低下,同時在不加入GPU(圖形處理器)加速的情況下,html5處理復雜音視頻, 動畫的性能不盡如人意。
e、瀏覽器兼容性:最大缺點,IE9以下瀏覽器幾乎全軍覆沒。
html5 先進先出算法的實現(xiàn)
script?type="text/javascript"
?var?d="232152453252";
?var?c=3;
?function?FIFO?(d,c)?{
?
?var?b=0;//缺頁次數
?var?m=new?Array(c);
?var?x;
?while(d){
?i=d.substring(0,1);
?d=d.substring(1);
?l=false;
?out:
?for(j=0;jm.length;j++){
?l=true;
?if(i==m[j]){
?l=false;
?break?out;
?console.log(j);
?}
?}
?if(l){
?m.push(i);
?m.shift();
?b++;
?}
?
?console.log(i,m);
?}
?console.log(b);
?}
FIFO(d,c);
/script
如何實現(xiàn)HTML5文件斷點續(xù)傳
實現(xiàn)HTML5文件斷點續(xù)傳
一、實現(xiàn)文件多選
HTML5的input新增了"multiple"屬性,該屬性可接受多個值的文件上傳字段
input type="file" multiple="multiple" name="file" id="file"
添加了該屬性用戶就可以在彈出的對話框中一次性選擇多個文件了
二、實現(xiàn)文件從計算機拖拽到網頁以及添加文件隊列功能
這里我們用 dragover 和 drop 兩個事件來管理文件拖拽的功能
其中 dragover 用來處理在指定的元素上移動時的事件,這里我們通過給body綁定dragover時間來處理頁面中拖動文件的事件
document.body.addEventListener('dragover', dragFile, false);
function dragFile(evt) {
evt.stopPropagation();
evt.preventDefault();
evt.dataTransfer.dropEffect = 'copy';
}
用 drop 事件來處理鼠標松開時候的事件,此時應該將用戶拖動過來的文件加入到上傳隊列中,以供后續(xù)的處理
document.body.addEventListener('drop', dropFile, false);
function dragFile(evt) {
evt.stopPropagation();
evt.preventDefault();
// dataTransfer.files屬性可以獲取到所有拖動選擇的文件,通過遍歷可以讀取到所有文件的信息。
// 遍歷每個文件可以獲取到文件的 name、size、type、lastModifiedDate等關鍵信息
var files = evt.dataTransfer.files;
// addfile 方法 用來添加上傳文件隊列,在input的change事件中也需要調用
// 該方法首先檢查有無文件正在上傳中,如果有就將后續(xù)加入的文件放到上傳隊列中,如果沒有文件正在上傳就直接執(zhí)行上傳命令
addfile(files);
}
三、文件續(xù)傳原理
目前比較常用的斷點續(xù)傳的方法有兩種,一種是通過websocket接口進行文件上傳,另一種是通過ajax,兩種方法各有千秋,雖然websocket聽起來比較高端些~ 但是除了用了不同的協(xié)議外其他的算法基本上都是很相似的,并且服務端要開啟ws接口,這里用相對方便的ajax來說明斷點上傳的思路。
說來說去,斷點續(xù)傳最核心的內容就是把文件“切片”然后再一片一片的傳給服務器,但是這看似簡單的上傳過程卻有著無數的坑。
首先是文件的識別,一個文件被分成了若干份之后如何告訴服務器你切了多少塊,以及最終服務器應該如何把你上傳上去的文件進行合并,這都是要考慮的。
因此在文件開始上傳之前,我們和服務器要有一個“握手”的過程,告訴服務器文件信息,然后和服務器約定切片的大小,當和服務器達成共識之后就可以開始后續(xù)的文件傳輸了。
前臺要把每一塊的文件傳給后臺,成功之后前端和后端都要標識一下,以便后續(xù)的斷點。
當文件傳輸中斷之后用戶再次選擇文件就可以通過標識來判斷文件是否已經上傳了一部分,如果是的話,那么我們可以接著上次的進度繼續(xù)傳文件,以達到續(xù)傳的功能。
四、文件的前端切片
有了HTML5 的 File api之后切割文件比想想的要簡單的多的多。
只要用slice 方法就可以了
var packet = file.slice(start, end);
參數start是開始切片的位置,end是切片結束的位置 單位都是字節(jié)。通過控制start和end 就可以是實現(xiàn)文件的分塊
如
file.slice(0,1000);
file.slice(1000,2000);
file.slice(2000,3000);
// ......
五、文件片段的上傳
上一部我們通過slice方法把文件分成了若干塊,接下來要做的事情就是把這些碎片傳到服務器上。
這里我們用ajax的post請求來實現(xiàn)
textpop-up
var xhr = new XMLHttpRequest();
var url = xxx // 文件上傳的地址 可以包括文件的參數 如文件名稱 分塊數等以便后臺處理
xhr.open('POST', url, true);
xhr.onload = function (e){
// 判斷文件是否上傳成功,如果成功繼續(xù)上傳下一塊,如果失敗重試該快
}
xhr.upload.onprogress = function(e){
// 選用 如果文件分塊大小較大 可以通過該方法判斷單片文件具體的上傳進度
// e.loaded 該片文件上傳了多少
// e.totalSize 該片文件的總共大小
}
xhr.send(packet);
HTML5開發(fā)需要學習哪些內容
關于Web前端學習的必經階段。正在從事Web前端學習的小伙伴們來和小伙伴們一起看一看吧。希望能夠對大家有所幫助!
第一階段:
● HTML+CSS:
HTML進階、CSS進階、div+css布局、HTML+css整站開發(fā)、
● JavaScript基礎:
Js基礎教程、js內置對象常用方法、常見DOM樹操作大全、ECMAscript、DOM、BOM、定時器和焦點圖。
● JS基本特效:
常見特效、例如:tab、導航、整頁滾動、輪播圖、JS制作幻燈片、彈出層、手風琴菜單、瀑布流布局、滾動事件、滾差視圖。
● JS高級特征:
正則表達式、排序算法、遞歸算法、閉包、函數節(jié)流、作用域鏈、基于距離運動框架、面向對象基礎、
● JQuery:基礎使用
懸著器、DOM操作、特效和動畫、方法鏈、拖拽、變形、JQueryUI組件基本使用。
第二階段:HTML5和移動Web開發(fā)
● HTML5:
HTML5新語義標簽、HTML5表單、音頻和視頻、離線和本地存儲、SVG、Web Socket、Canvas.
● CSS3:
CSS3新選擇器、偽元素、臉色表示法、邊框、陰影、background系列屬性改變、Transition、動畫、景深和深透、3D效果制作、Velocity.js框架、元素進場、出場策略、炫酷CSS3網頁制作。
● Bootstrap:
響應式概念、媒體查詢、響應式網站制作、刪格系統(tǒng)、刪格系統(tǒng)原理、Bootstrap常用模板、LESS和SASS。
● 移動Web開發(fā):
跨終端WEB和主流設備簡介、視口、流式布局、彈性盒子、rem、移動終端JavaScript事件、手機中常見JS效果制作、Zepto.js、手機聚劃算頁面、手機滾屏。
第三階段:HTTP服務和AJAX編程
● WEB服務器基礎:
服務器基礎知識、Apache服務器和其他WEB服務器介紹、Apache服務器搭建、HTTP介紹。
● PHP基礎:
PHP基礎語法、使用PHP處理簡單的GET或者POST請求、
● AJAX上篇:
Ajax簡介和異步的概念、Ajax框架的封裝、XMLHttpRequest對象詳細介紹方法、兼容性處理方法、Ajax框架的封裝、Ajax中緩存問題、XML介紹和使用。
● AJAX下篇:
JSON和JSON解析、數據綁定和模板技術、JSONP、跨域技術、圖片預讀取和lazy-load技術、JQuery框架中的AjaxAPI、使用Ajax實現(xiàn)瀑布流案例額。
第四階段:面向對象進階
● 面向對象終極篇:
從內存角度到理解JS面向對象、基本類型、復雜類型、原型鏈、ES6中的面向對象、屬性讀寫權限、設置器、訪問器。
● 面向對象三大特征:
繼承性、多態(tài)性、封裝性、接口。
● 設計模式:
面向對象編程思維、單例模式、工廠模式、策略模式、觀察者模式、模板方法模式、代理模式、裝飾者模式、適配器模式、面向切面編程。
第五階段:封裝一個屬于自己的框架
● 框架封裝基礎:
事件流、冒泡、捕獲、事件對象、事件框架、選擇框架。
● 框架封裝中級:
運動原理、單物體運動框架、多物體運動框架、運動框架面向對象封裝。
● 框架封裝高級和補充:
JQuery框架雛形、可擴展性、模塊化、封裝屬于傳智自己的框架。
第六階段:模塊化組件開發(fā)
● 面向組件編程:
面向組件編程的方式、面向組件編程的實現(xiàn)原理、面向組件編程實戰(zhàn)、基于組件化思想開發(fā)網站應用程序。
● 面向模塊編程:
AMD設計規(guī)范、CMD設計規(guī)范、RequireJS,LoadJS、淘寶的SeaJS。
第七階段:主流的流行框架
● Web開發(fā)工作流:
GIT/SVN、Yeoman腳手架、NPM/Bower依賴管理工具、Grunt/Gulp/Webpack。
● MVC/MVVM/MVW框架:
Angular.js、Backbone.js、Knockout/Ember。
● 常用庫:
React.js、Vue.js、Zepto.js。
第八階段:HTML5原生移動應用開發(fā)
● Cordova:
WebApp/NativeApp/HybirdApp簡介、Cordova簡介、與PhoneGap之間的關系、開發(fā)環(huán)境搭建、Cordova實戰(zhàn)(創(chuàng)建項目,配置,編譯,調試,部署發(fā)布)。
● Ionic:
Ionic簡介和同類對比、模板項目解析、常見組件及使用、結合Angular構建APP、常見效果(下拉刷新,上拉加載,側滑導航,選項卡)。
● React Native:
React Native簡介、React Native環(huán)境配置、創(chuàng)建項目,配置,編譯,調試,部署發(fā)布、原生模塊和UI組件、原生常用API。
● HTML5+:
HTML5+中國產業(yè)聯(lián)盟、HTML5 Plus Runtime環(huán)境、HBuilder開發(fā)工具、MUI框架、H5+開發(fā)和部署。
第九階段: Node.js全棧開發(fā)
● 快速入門:
Node.js發(fā)展、生態(tài)圈、Io.js、Linux/Windows/OS X環(huán)境配置、REPL環(huán)境和控制臺程序、異步編程,非阻塞I/O、模塊概念,模塊管理工具、開發(fā)流程,調試,測試。
● 核心模塊和對象:
全局對象global,process,console,util、事件驅動,事件發(fā)射器、加密解密,路徑操作,序列化和反序列化、文件流操作、HTTP服務端與客戶端、Socket.IO。
● Web開發(fā)基礎:
HTTP協(xié)議,請求響應處理過程、關系型數據庫操作和數據訪問、非關系型數據庫操作和數據訪問、原生的Node.js開發(fā)Web應用程序、Web開發(fā)工作流、Node.js開發(fā)Blog案例。
● 快速開發(fā)框架:
Express簡介+MVC簡介、Express常用API、Express路由模塊、Jade/Ejs模板引擎、使用Express重構Blog案例、Koa等其他常見MVC框架。
● Node.js開發(fā)電子商務實戰(zhàn):
需求與設計、賬戶模塊注冊登錄、會員中心模塊、前臺展示模塊、購物車,訂單結算、在線客服即時通訊模塊。
html5好學嗎?
HTML5入門門檻低體現(xiàn)在HTML和CSS上,前者只是結構標簽,后者是樣式配置,入門是非常簡單的只是需要一些時間。
HTML5相對于后臺和開發(fā)而言比較簡單。所見即所得,不需要太多的算法與邏輯。
HTML5的學習路線分享給你:
1、HTML5+CSS3+JQ的學習
真正的了解HTML5的新特性,CSS3的新屬性,我們換句話說HTML5就是一個全新的JavaScript,就是我上面說的,如果你JS學的不好,HTML5很難,本來他們就是配合在一起的東西,JQ是JS的框架,相對不是很難,但是學習方法很重要。
2、HTML+CSS+JS
在第一階段中,我們要學習最基礎的靜態(tài)布局,HTML+CSS很好搞定,這里特別提出一定要下功夫攻破JS,因為JS是最難的,也是前端開發(fā)者的工資標準,見過很多人學不懂JS,要跟著大量的案例進行學習,學習方法也是非常的重要。
3、前端的一些主流框架的學習
現(xiàn)在公司都是必須用框架的,這些我們必須要掌握,但是有些框架的難度還是很大的,因為都跟JS有關系,這個腳本語言,基本會伴隨我們前端開發(fā)者的一生,只要你還在做前端,一定缺少不了前端的JS,說白了我們做前端就是特效,就是需要JS,所以一定要學好JS,一個好的學習方法非常重要。
學html5是不是要看懂代碼?
學習html5是不需要任何基礎的,因為html5屬于網頁前端語言,沒有算法,沒有邏輯性,學習起來非常簡單,只要你對html5開發(fā)感興趣,完全不用擔心基礎的問題。建議,如果你在學習html5之前,最后先學習一下html4,因為html5很多語法,以及標簽與html4一樣,html5繼承了html4一些技術特點,所以,建議你先學習html4,然后在學習html5,這樣的學習效果會更加好。
最后,我想說html5是完全可以自學的,網上的教程很多,文檔類的、視頻類的等等。
您可能感興趣的文章
- 04-02html5圖形,html5圖形縮放
- 04-02html5的例子,HTML示例
- 04-02html5登錄模板,html5登錄注冊模板
- 04-02html5的canvas,html5的canvas的作用
- 04-02關于html5 視頻代碼的信息
- 04-02朋友圈html5,朋友圈發(fā)泄情緒的句子
- 04-02html5chm手冊,html操作手冊
- 04-02html5的新特性有哪些,HTML5的新特性有哪些?
- 04-02html5掃二維碼,html5調用手機攝像頭掃描二維碼
- 01-11HTML5實戰(zhàn)與剖析之觸摸事件(touchstart、touchmove和touchend)


閱讀排行
本欄相關
- 04-02html5算法,html5協(xié)議
- 04-02html5圖形,html5圖形縮放
- 04-02html5登錄模板,html5登錄注冊模板
- 04-02html5的例子,HTML示例
- 04-02html5的canvas,html5的canvas的作用
- 04-02關于html5 視頻代碼的信息
- 04-02html5chm手冊,html操作手冊
- 04-02朋友圈html5,朋友圈發(fā)泄情緒的句子
- 04-02html5的新特性有哪些,HTML5的新特性有哪
- 04-02html5掃二維碼,html5調用手機攝像頭掃描
隨機閱讀
- 01-10delphi制作wav文件的方法
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10C#中split用法實例總結
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢)副欄目數量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 04-02jquery與jsp,用jquery
- 01-11ajax實現(xiàn)頁面的局部加載