這周因為部門接了個小的html5 app case,所以從事android開發的我就接下了這個項目。與其說是項目需要,其實更大部分是我自己想要做html5 app,因為我對這個全新的平台已經好奇很久了。蠢蠢欲動很久了,只不過之前沒有碰到項目練手而已。
好了,讓我們開始這篇博文的主要內容吧。說到html5相信大家都不陌生了,的確這個概念已經在國內火了一段時間,但是大家對於html5具體能夠干什么,到底在什么地方我應該使用html5呢?然后html5相較之前的版本又多了什么呢?且聽我慢慢到來吧,首先html5主要用於web端,因為html5本身就是一種從html慢慢進化過來的標記語言,只不過相較之前的版本html5多了一些被瀏覽器支持的強大標簽,所以我們可以使用更簡便、更高效的標簽實現更加復雜的功能。所以說到底就是國外的一些標准組織出於現實需要,在原有html版本基礎上面添加新的標簽,同時制定一套新的標准,然后各大瀏覽廠商按照這套准則支持響應的功能。那么對於我們app開發者,使用html5開發和使用原生的語言開發又有什么優缺點呢?首先,我一直擔心體驗問題,因為畢竟是在手機瀏覽器里面顯示一個.html頁面。沒有原生框架里面提供的一些控件庫,同時沒有原生的一些sdk支持,這是不是意味着用戶就沒有原生app的體驗呢?隨着這個項目開發過程,我發現html5在開發app的方面,完全沒有問題。在用戶體驗方面幾乎可以做的差不多,而且html5開發出來的app不管什么平台風格一致,一套代碼,一次開發,你想想開發成本能夠降低多少呢?
首先在新建的html頁面如下代碼<meta charset="utf-8">下面,添加下面的代碼:<meta name="viewport" content="width=device-width,initable-scale=1,user-scalable=1">,這句代碼是什么意思呢?我們看看viewport,這個標記是apple開發出來的,我們可以理解為:這個html頁面就代表了一個app頁面,這個頁面的寬度跟屏幕的寬度一樣,然后縮放比例是1,不允許用戶縮放。通過這句代碼我們達到當html頁面在手機瀏覽器里面顯示的時候,它是以手機屏幕的尺寸去顯示的。然后我們就可以在這個html頁面做很多事情了,比如我們想要添加一個頁面title,我們應該怎么做呢?首先在頁面里面添加如下的jquery mobile框架的樣式文件:
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css">
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>
添加這三句應用之后,我們就可以在當前頁面的<body></body>標簽之間添加如下代碼:
<div data-role="page">
<div data-role="header">
<h1>登錄</h1>
</div>
<div data-role="content">
</div>
</div>
相信你一定看得懂div標簽,但是data-role是什么意思呢?這是jquery mobile框架里面用於設置標簽角色的屬性,首先我們將最外層的div設置成page(就是整個頁面),然后次外層有header,content這就分別對應頁面的標題和內容。你可以將上面的代碼敲到一個html里面,然后放到服務器上面通過手機瀏覽器訪問一下就知道了。當然,jquery mobile里面還有很多其他標簽、屬性、事件,利用這些東西我們就可以實現很多具有可交互的頁面了。
我在學習過程中,最令我好奇的地方就是:前台html用戶輸入的信息怎樣獲取到后台,同時封裝到http報文里面發送到服務端,然后解析出來的數據又是怎樣傳回到html頁面進行現實的呢?相信如果有服務端開發經驗的哥們這個好奇點,會感到很好笑。這不就是通過form,提交表單,然后利用javascript從html提交的參數里面提取我們需要的用到的數據嗎?是呀,如果弄懂了這點,我相信好多哥們就能更加自信的開發html5了。其實從一定程度上來說,開發html5就是在開發服務端web網站,只不過我們在開發過程中會用客戶端開發所需的一些設計思維,用戶體驗感吧了。說到這里,我們就可以很容易明白,開發html5所應該具有的技術基礎了。我們可以使用:php,java,c#只要能夠接受用戶請求,給予用戶響應在理論上面都可以用來開發html5 app。
剛剛從原生客戶端轉過來的話,可能會對一些頁面布局很到很疑惑,因為頁面布局很大程度上找不到原生語言那種規律,有的時候很簡單的頁面邏輯,可能費很大勁才能搞出來。其次我們可能對響應服務端http請求,響應方式也要有一定了解,這樣才能更好的解析數據、展示頁面。
好了,就講這么多吧,技術細節大家可以在項目實戰里面摸索。