A. 如何用html5構建移動端的webapp
H5e教育html5開發為您解答:
移動web在當今的發展速度是一日千里,作為移動領域的門外漢,在這段時間的接觸後,發現前端開發這一塊做一個小小的總結。
1.四大瀏覽器內核
1.Trident (IE瀏覽器) :因為在早期IE佔有大量的市場份額,所以以前有很多網頁是根據這個Trident的標准來編寫的,但是實際上這個內核對真正的網頁標准支持不是很好,同時存在許多安全Bug。
2.Gecko:( FireFox )優點就是功能強大、豐富,可以支持很多復雜網頁效果和瀏覽器擴展介面,缺點是消耗很多的資源,比如內存。
3.Webkit: ( Chrome/ Safari / UC )優點就是Webkit擁有清晰的源碼結構、極快的渲染速度,缺點是對網頁代碼的兼容性較低,會使一些編寫不標準的網頁無法正確顯示。
4.Presto: ( 歐朋 ) Presto內核被稱為公認的瀏覽網頁速度最快的內核,同時也是處理JS腳本最兼容的內核,能在Windows、Mac及Linux操作系統下完美運行。
移動端開發主要對象是手持設備,其中絕大部分是IOS和android系統,基於Webkit內核,可使用Chrome瀏覽器調試即可。
2.手機瀏覽器
瀏覽器已經逐漸從傳統桌面轉向手機端,競爭也越來越激烈。目前國內市場主流的手機瀏覽器:UC、網路、歐朋、QQ、海豚、safari、Chrome,這些瀏覽器都是基於webkit內核的,兼容性方面不存在問題,同時對html5和css3的支持很好,所以,大膽地應用html5和css3技術吧。
在開始編寫webapp時,前端工程師使用HTML5,而放棄HTML4,因為HTML5可以實現一些HTML4中無法實現的豐富的WEB應用程序 的體驗,可以減少開發者很多的工作量,當然了你決定使用HTML5前,一定要對此非常熟悉,要知道HTML5的新標簽的作用。比如定義一塊內容或文章區域 可使用section標簽,定義導航條或選項卡可以直接使用nav標簽等等。
3.終端解析度
手機解析度比PC解析度要龐雜得多,各種解析度有木有?大小差距那麼大有木有?這在一定程度上給頁面製作帶來了不小的麻煩。所以針對這樣的因素,必須有充分的考慮。考慮到瀏覽器自適應,需要設計和製作完成各種不同的方法。
1) 市場上主流手機生產商的產品解析度。經過調研發現,目前主流的手機解析度為:480*800像素、320*480像素,而1280*720像素(720P)會是接下來的趨勢。這些都是很粗略的統計,要有精確的數據需要花費不少的精力,那是數據分析人員的工作。
2) 項目目標群所持設備的解析度。項目目標群即用戶,用戶擁有什麼樣的手機解析度,從一定程度上來說比第一點來得更加重要,它決定著項目開發的方向。
4.響應式web開發
在編寫CSS時,我不建議前端工程師把容器(不管是外層容器還是內層)的寬度定死。為達到適配各種手持設備,我建議前端工程師使用自適應布局模式(支付 寶 採用了自適應布局模式),因為這樣做可以讓你的頁面在ipad、itouch、ipod、iphone、android、web safarik、chrome都能夠正常的顯示,你無需再次考慮設備的解析度。
響應式web開發不是一項開創性的技術變革,簡單地說,響應式web設計採用了媒體查詢、流式布局、液態圖片三項技術,把它們組合在一起來製作頁面,使得頁面不只在傳統桌面,在平板電腦和手機上,各種不同的解析度都能夠完美顯示。而要做到這點,我覺得不難,請繼續往下:
1) 准備工作:
a) 插件安裝:window resize。您可以通過下載安裝谷歌瀏覽器插件,安裝成功後,當您調整瀏覽器窗口時,在瀏覽器右下角會有灰度提示當前窗口和類似於手機視圖的大小提示。
b) 編輯器安裝:Hbulder或Webstorm
c) 弄清視圖和屏幕的區別。視圖是瀏覽器的內容顯示區域,屏幕是設備的物理顯示區域。比如視圖寬度我們一般用width表示,而屏幕寬度是用device-width來表示。相信做過手機頁面的童鞋都經常見過這段代碼:
<meta name="viewport" content="width=device-width,initial-scale=1.0">
其中width=device-width就是說把頁面寬度設置成和屏幕寬度一樣。
d) 響應式設計創意網站收集 。這里有很多響應式Web設計的網站,供您參考和學習。
2) 征途ING:
e) 響應式web設計之媒體查詢:
為了減少http請求,我想在css樣式表裡進行媒體查詢會是個不錯的選擇,而不是在頁面head部分使用link進行載入。樣式表裡的媒體查詢格式為:
@media screen and (max-width:960px){}
大括弧內部書寫樣式。該語句相當於判斷語句,有兩個條件,一個是視口寬度最大不超過960px,screen代表顯示屏,這兩個條件都具備了,就調用大括弧內的樣式。
f) 響應式web設計之流式布局:
流式布局以百分比進行布局。最重要是時刻關注元素的父級層,所有的元素都是以父級層為基準。流式布局的應用是為了和媒體查詢完美地結合,形成平滑的布局變 化跳轉效果。一般而言,media里的樣式多以width、padding、margin、font-size、line-height這些為主。
g) 響應式web設計之液態圖片:
要實現液態圖片,只需加入如下代碼:img{max-width:100%;}
web移動頭部書寫
1、首先我們來看看webkit內核中的一些私有的meta標簽,這些meta標簽在開發webapp時起到非常重要的作用
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />
這個meta標簽表示:強制讓文檔的寬度與設備的寬度保持1:1,並且文檔最大的寬度比例是1.0,且不允許用戶點擊屏幕放大瀏覽;
<meta content="yes」 name=" apple-mobile-web-app-capable" />
meta標簽是iphone設備中的safari私有meta標簽,它表示:允許全屏模式瀏覽;
<meta content="black" name=" apple-mobile-web-app-status-bar-style" />
meta標簽也是iphone的私有標簽,它指定的iphone中safari頂端的狀態條的樣式;
<meta content="telephone=no" name="format-detection" />
meta標簽表示:告訴設備忽略將頁面中的數字識別為電話號碼
B. 為什麼.net開發的webapp在android機上不能鎐ookie
Android中在使用OkHttp這個庫的時候,有時候需要持久化Cookie,那麼怎麼實現呢。OkHttp的內部源碼過於復雜,不進行深究,這里只看其中的HttpEngineer裡面的部分源碼,在發起請求以及請求結束都會調用這個類的幾個方法。我們先看networkRequest方法,在裡面通過client.getCookieHandler()函數獲得了CookieHandler對象,通過該對象拿到cookie並設置到請求頭里,請求結束後取得響應後通過networkResponse.headers()函數將請求頭獲得傳入receiveHeaders函數,並將取得的cookie存入getCookieHandler得到的一個CookieHandler對象中去
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
This client doesn't specify a default {@code Accept} header because it
* doesn't know what content types the application is interested in.
*/
private Request networkRequest(Request request) throws IOException {
Request.Builder result = request.newBuilder();
//此處省略n行代碼......
CookieHandler cookieHandler = client.getCookieHandler();
if (cookieHandler != null) {
// Capture the request headers added so far so that they can be offered to the CookieHandler.
// This is mostly to stay close to the RI; it is unlikely any of the headers above would
// affect cookie choice besides Host.
Map<string, string="">> headers = OkHeaders.toMultimap(result.build().headers(), null);
Map<string, string="">> cookies = cookieHandler.get(request.uri(), headers);
// Add any new cookies to the request.
OkHeaders.addCookies(result, cookies);
}
//此處省略n行代碼......
return result.build();
} data-snippet-id=ext. data-snippet-saved=false data-csrftoken=bFkHGE1O-cy7WY9D6w70F6qK9YUKZHLynI5g data-codota-status=done><code class="hljs" java="">/**
* Populates request with defaults and cookies.
*
* </code><p><code class="hljs" java="">This client doesn't specify a default {@code Accept} header because it
* doesn't know what content types the application is interested in.
*/
private Request networkRequest(Request request) throws IOException {
Request.Builder result = request.newBuilder();
//此處省略n行代碼......
CookieHandler cookieHandler = client.getCookieHandler();
if (cookieHandler != null) {
// Capture the request headers added so far so that they can be offered to the CookieHandler.
// This is mostly to stay close to the RI; it is unlikely any of the headers above would
// affect cookie choice besides Host.
Map<string, string="">> headers = OkHeaders.toMultimap(result.build().headers(), null);
Map<string, string="">> cookies = cookieHandler.get(request.uri(), headers);
// Add any new cookies to the request.
OkHeaders.addCookies(result, cookies);
}
//此處省略n行代碼......
return result.build();
}</string,></string,></code></p></string,></string,>
?
1
2
3
4
5
6
7
<code class="hljs" java="">public void readResponse() throws IOException {
//此處省略n行代碼......
receiveHeaders(networkResponse.headers());
//此處省略n行代碼......
}</code>
?
1
2
3
4
5
6
<code class="hljs" java="">public void receiveHeaders(Headers headers) throws IOException {
CookieHandler cookieHandler = client.getCookieHandler();
if (cookieHandler != null) {
cookieHandler.put(userRequest.uri(), OkHeaders.toMultimap(headers, null));
}
}</code>
而這個CookieHandler對象是OkHttpClient類中的一個屬性,提供了getter和setter方法,默認的構造函數OkHttpClient client = new OkHttpClient();不會創建這個CookieHandler對象。假設我們傳入了這個對象,那麼OkHttp自然會進行cookie的自動管理了。
?
1
2
3
4
5
6
7
8
9
<code class="hljs" cs="">private CookieHandler cookieHandler;
public OkHttpClient setCookieHandler(CookieHandler cookieHandler) {
this.cookieHandler = cookieHandler;
return this;
}
public CookieHandler getCookieHandler() {
return cookieHandler;
}</code>
那麼假設我們將CookieHandler對象傳入
?
1
2
<code axapta="" class="hljs">OkHttpClient client = new OkHttpClient();
client.setCookieHandler(CookieHandler cookieHanlder);</code>
那麼,現在關鍵是如何去實現這個CookieHandler 對象。CookieManager是CookieHandler 的一個子類,其構造函數 public CookieManager(CookieStore store, CookiePolicy cookiePolicy)需要傳入兩個參數,CookieStore 是一個介面,因此我們實現CookieStore介面中的抽象方法,即可實現這個CookieHandler 對象。參考android-async-http這個庫,它具有cookie的自動管理功能,主要我們參考其中的兩個類
PersistentCookieStore SerializableCookie
參考以上兩個類並做適當修改,得到了如下兩個類,他們的功能就是將cookie保持在SharedPreferences中。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<code avrasm="" class="hljs">package com.kltz88.okhttp.cookie;
/**
* User:lizhangqu([email protected])
* Date:2015-07-13
* Time: 17:31
*/
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.HttpCookie;
public class SerializableHttpCookie implements Serializable {
private static final long serialVersionUID = 6374381323722046732L;
private transient final HttpCookie cookie;
private transient HttpCookie clientCookie;
public SerializableHttpCookie(HttpCookie cookie) {
this.cookie = cookie;
}
public HttpCookie getCookie() {
HttpCookie bestCookie = cookie;
if (clientCookie != null) {
bestCookie = clientCookie;
}
return bestCookie;
}
private void writeObject(ObjectOutputStream out) throws IOException {
out.writeObject(cookie.getName());
out.writeObject(cookie.getValue());
out.writeObject(cookie.getComment());
out.writeObject(cookie.getCommentURL());
out.writeObject(cookie.getDomain());
out.writeLong(cookie.getMaxAge());
out.writeObject(cookie.getPath());
out.writeObject(cookie.getPortlist());
out.writeInt(cookie.getVersion());
out.writeBoolean(cookie.getSecure());
out.writeBoolean(cookie.getDiscard());
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
String name = (String) in.readObject();
String value = (String) in.readObject();
clientCookie = new HttpCookie(name, value);
clientCookie.setComment((String) in.readObject());
clientCookie.setCommentURL((String) in.readObject());
clientCookie.setDomain((String) in.readObject());
clientCookie.setMaxAge(in.readLong());
clientCookie.setPath((String) in.readObject());
clientCookie.setPortlist((String) in.readObject());
clientCookie.setVersion(in.readInt());
clientCookie.setSecure(in.readBoolean());
clientCookie.setDiscard(in.readBoolean());
}
}</code>
?
C. jsp源碼怎麼使用
個人建議:
使用eclipse或myeclipse導入整站源碼。
在eclipse或myeclipse配置好tomcat和jdk,然後導入工程(整站源碼),運行tomcat就OK了。
如果在你的源碼里有很多的.java文件,你又只有單純的tomcat + jdk,你就要一個個去編譯.java文件了。有
eclipse或myeclipse的協助,就不用手工去編譯了。
D. ios webapp開發要懂js嗎
前端開發最重要的基礎就三門技術 jvascript+css+html,js是其中最重要的
ps可以不掌握,工作的時候一般只需要會切圖就行,而且很多公司會讓作圖的人切好圖,你可以不考慮
flash完全不用理會,pc上flash日漸消沉,無線上早就死光光了
我想說的 最重要的,就是基礎,深入掌握一下javascript和css基礎,這兩個是無論是面試相關,跟以後的項目開發,都是最息息相關的。如果時間不夠的話,重點掌握javascript,推薦兩本書,你選其中一本就行,一是犀牛書(javascript權威指南),另外一本是javascript高級程序設計(尼古拉斯大神的書,目前第三版),重點掌握js語法基礎,ajax,面向對象相關(基於原型的繼承等高級技術)。
css推薦 css權威指南一書,css學習是很枯燥的,一般在項目過程中才能不斷掌握,如果沒有條件,可以重點學一下選擇器,定位,盒模型和浮動這幾章。
jquery在很多公司或者整個前端界用的居多,但在很多大公司面試時(像我在網路面試時,人家都豪不理會),因為這些公司重視的是基礎,項目經驗可以培養,但基礎需要花狠勁才能掌握牢固。這些框架對你現在的作用是熟悉一下源碼,看看它們怎麼實現的。我也是大三才學的前端,並且邊讀框架邊學的js,如果你對這樣學感興趣,推薦你讀一下prototype.js的源碼。jquery的源碼太過講究技巧,不太適合初學者去讀。
最後談一下准備作品這塊,去年開始前端界衍生了一個新的職位,叫無線前端開發工程師,說白了就是在iphone和android手機上做網站,用到的技術基礎還是js跟css,但不需要像pc那樣考慮兼容性(IE6是很惡心的),最重要的,就是對html5和css3支持度比較高,這個職位目前還是很熱門的,你可以往這個方向發展,掌握好基礎後學這些新技術還是很容易的。利用css3和html5寫一些demo絕對可以讓考官眼前一亮。
如果你學了一學期掌握了基礎,可以嘗試聯系我,網路還是很歡迎熱愛技術的人的,特別是女生(嘿嘿),最後祝你成功。
E. 瀏覽器可以看到源碼 那webapp不是很不安全 別人通過源碼就可以看到你的密碼
你只能看見靜態的源碼而已,PHP的話就完全看不到了。意思就是你只能看到靜態的HTML結構。
F. 移動web開發(webapp)後端和PCweb開發的後端一樣嗎
移動web開發(webapp)後端和PCweb開發的後端一樣嗎
如今,不少企業都想擁有屬於自己企業或產品的手機APP,但其中最困擾企業主的問題就是:開發一款手機APP到底需要多少錢?
簡單點來說,要視手機APP的需求及質量而言,價位一般在幾千到十幾萬左右,更高端的價格更高。
四、APP開發公司的所在地
需要注意的是,同樣實力的APP開發公司,在不同的城市也會導致APP的成本費用高一些,如在北京、深圳和上海等地的開發公司開發成本費用就會比較高,因為當地開發人員的薪資和其他支出相對更高。
以上就是影響一款手機APP製作成本價格的4點因素,希望對您有所幫助!
G. 開發一個webapp(前端+後端)需要多少錢
開發一個webapp(前端+後端)需要多少錢
如今,不少企業都想擁有屬於自己企業或產品的手機APP,但其中最困擾企業主的問題就是:開發一款手機APP到底需要多少錢?
簡單點來說,要視手機APP的需求及質量而言,價位一般在幾千到十幾萬左右,更高端的價格更高。
四、APP開發公司的所在地
需要注意的是,同樣實力的APP開發公司,在不同的城市也會導致APP的成本費用高一些,如在北京、深圳和上海等地的開發公司開發成本費用就會比較高,因為當地開發人員的薪資和其他支出相對更高。
以上就是影響一款手機APP製作成本價格的4點因素,希望對您有所幫助!
H. 開發一個webapp(前端+後端)需要多少錢
開發一個webapp(前端+後端)需要多少錢
如今,不少企業都想擁有屬於自己企業或產品的手機APP,但其中最困擾企業主的問題就是:開發一款手機APP到底需要多少錢?
簡單點來說,要視手機APP的需求及質量而言,價位一般在幾千到十幾萬左右,更高端的價格更高。
四、APP開發公司的所在地
需要注意的是,同樣實力的APP開發公司,在不同的城市也會導致APP的成本費用高一些,如在北京、深圳和上海等地的開發公司開發成本費用就會比較高,因為當地開發人員的薪資和其他支出相對更高。
以上就是影響一款手機APP製作成本價格的4點因素,希望對您有所幫助!
I. 為什麼要用PhoneGap給WebApp打包
Android App打包指的是將APP源碼壓縮成一個apk包的過程,具體步驟如下。
工具:eclipse
在eclipse中,工程上「右鍵」->導出。
讓選擇需要打包的工程,直接「Next」,到keystone頁面
接下來填寫證書信息
根據自己的情況填寫,點擊「Next」,生成keystore,到下一頁面:
選擇APK文件生成的位置,點擊Finish,完成,把apk文件安裝到手機上運行看是否正常運行。至此,全部結束!