PhoneGap就是将html+css+js转成移动的APP,包括的移动平台有ios,android,黑莓等。
PhoneGap的优势是跨平台,即只需要编写一次代码就可以在不同移动平台运行。
phoneGap的劣势是交互能力不好,只适合交互性弱的项目,如读书APP之类的应用。运行效率低,因为PhoneGap的运行,依赖于移动设备上的内置浏览器的Webkit, 所以运行速度上自然是比Native App慢。并且不能支持全部的系统API。
PhoneGap的配置 :
http://blog.jobbole.com/72590/
nodejs的配置:
http://www.cnblogs.com/linjiqin/p/3765390.html
第一个phoneGap实例:
http://www.jb51.net/html5/80728.html
cordova3.4 jar和js文件下载地址:
http://download.csdn.net/download/xiaoluo5238/7793119
PhoneGap项目结构:
Activity
亲测根据上面的4个网站提高的资料可以运行最基础的phoneGap实例。
2016/4/18更新
PhoneGap分析:
Web APP, Native APP, Hybird APP
1.Web APP :
采用html+javascript+css等web技术。
优点:通过不同平台的浏览器来访问应用达到跨平台的功能。并且可以使用HTML5。
缺点:基于浏览器的应用无法调用系统API来实现一些高级的功能呢。
2.
Native APP :
原生APP,使用不同平台特定开发语言来开发应用。
优点:可以完全调用系统API和平台特性,性能也是最好的。
缺点:由于开发技术不同,覆盖多个平台则需要针对多个平台独立开发,没有跨平台性。
3.
Hybird APP :
web开发人员可以0成本转型移动应用开发者。
其次,可以通过包装好的接口,调用大部分常用的系统API,PhoneGap正式Hybird APP目前框架中集大成者。
==================
Adobe dreamweaver 5.5版本为phonegap提供了优越的开发环境。
PhoneGap开发需要使用技能:html+css+javascript。特别是javascrpit+jquery mobil框架ajax通讯技术。
=================
PhoneGap优缺点:
优点:
1.跨平台性
2.易用性(不需要自己调用平台资源,phoneGap框架可以完成)
3.提供硬件访问控制(JS的类,可以直接访问硬件,比如相机,加速,GPS等)
4.配合javascripy框架
5.方便安装和使用
缺点:
1.运行速度慢(比原生的差很多,基于浏览器webkit)
2.不适合部分程序(3D,频繁刷新)
3.不能调用全部的平台资源
4.内存消耗大
5.调试难度大(只能使用firefox firebug调试)
转载于:
http://blog.csdn.net/happyflyingave/article/details/23431911
2016/5/6更新
Phonegap访问第三方的api接口,可以使用ajax
注意:这样可以在网页是访问,不过在设备(手机)上却无法访问。
原因:因为phonegap有一个白名单机制,需要在android的res目录下添加xml/config.xml
config.xml
<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns = "http://www.w3.org/ns/widgets"
id = "io.cordova.helloCordova"
version = "2.0.0">
<name>Hello Cordova</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author href="http://cordova.io" email="dev@cordova.apache.org">
Apache Cordova Team
</author>
<access origin="*"/>
<!-- <content src="http://mysite.com/myapp.html" /> for external pages -->
<content src="index.html" />
<preference name="loglevel" value="DEBUG" />
<!--
<preference name="splashscreen" value="resourceName" />
<preference name="backgroundColor" value="0xFFF" />
<preference name="loadUrlTimeoutValue" value="20000" />
<preference name="InAppBrowserStorageEnabled" value="true" />
<preference name="disallowOverscroll" value="true" />
-->
<feature name="App">
<param name="android-package" value="org.apache.cordova.App"/>
</feature>
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.GeoBroker"/>
</feature>
<feature name="Device">
<param name="android-package" value="org.apache.cordova.Device"/>
</feature>
<feature name="Accelerometer">
<param name="android-package" value="org.apache.cordova.AccelListener"/>
</feature>
<feature name="Compass">
<param name="android-package" value="org.apache.cordova.CompassListener"/>
</feature>
<feature name="Media">
<param name="android-package" value="org.apache.cordova.AudioHandler"/>
</feature>
<feature name="Camera">
<param name="android-package" value="org.apache.cordova.CameraLauncher"/>
</feature>
<feature name="Contacts">
<param name="android-package" value="org.apache.cordova.ContactManager"/>
</feature>
<feature name="File">
<param name="android-package" value="org.apache.cordova.FileUtils"/>
</feature>
<feature name="NetworkStatus">
<param name="android-package" value="org.apache.cordova.NetworkManager"/>
</feature>
<feature name="Notification">
<param name="android-package" value="org.apache.cordova.Notification"/>
</feature>
<feature name="Storage">
<param name="android-package" value="org.apache.cordova.Storage"/>
</feature>
<feature name="FileTransfer">
<param name="android-package" value="org.apache.cordova.FileTransfer"/>
</feature>
<feature name="Capture">
<param name="android-package" value="org.apache.cordova.Capture"/>
</feature>
<feature name="Battery">
<param name="android-package" value="org.apache.cordova.BatteryListener"/>
</feature>
<feature name="SplashScreen">
<param name="android-package" value="org.apache.cordova.SplashScreen"/>
</feature>
<feature name="Echo">
<param name="android-package" value="org.apache.cordova.Echo"/>
</feature>
<feature name="Globalization">
<param name="android-package" value="org.apache.cordova.Globalization"/>
</feature>
<feature name="InAppBrowser">
<param name="android-package" value="org.apache.cordova.InAppBrowser"/>
</feature>
<!-- Deprecated plugins element. Remove in 3.0 -->
<plugins>
</plugins>
</widget>
参考网址:
http://topmanopensource.iteye.com/blog/1578060
http://blog.csdn.net/aaawqqq/article/details/22441867
ajax代码
js
function myAjax(carNo) {
$.ajax({
type: "POST",
async: false,
url: "http://api.jisuapi.com/transit/line?cityid=95&transitno=" + carNo + "&appkey=c60829acb1faeecc",
dataType: "jsonp",
jsonp: "callback", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
jsonpCallback: "itemsListGet", //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
success: function(json) {
// 访问成功
if (json.status == 0) {
myCallback(json);
}
},
error: function() {
alert('fail');
}
});
}
/**
*访问成功后的回调方法
* @param {Object} json
*/
function myCallback(json) {
var ul = getUl("list");
for (var i = 0; i < json.result[0].list.length; i++) {
var txt = json.result[0].list[i].sequenceno + " " +
json.result[0].list[i].station;
addLi(ul, txt);
}
}