亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

ThinkPHP Mobile使用方法簡明教程

2020-03-22 18:07:08
字體:
來源:轉載
供稿:網友
NativeApp是用原生語言開發,用戶需要下載安裝的手機應用。 NativeApp的開發成本很高,每個平臺的開發語言都不一樣, 比如IOS的開發語言是object C , Android系統的APP需要用Java開發, WindowsPhone 則需要用 C# 開發。那么我們如果需要做一個多平臺都能運行的APP,需要用多種語言重復開發多次。
相對于NativeApp來說, WebApp開發就簡單多了, 用html,css,js就可開發WebApp, 而且開發一次跨多個平臺。但是WebApp 需要用戶打開手機瀏覽器輸入網址才能訪問,而且不能像NativeApp 能調用手機的攝像頭,通訊錄等功能。WebApp的html,css,js圖片等靜態資源在服務器上,用戶需要下載,會消耗用戶更多的流量。 而NativeApp的靜態資源在手機本地。
HybridApp中和了NativeApp和WebApp各自的優勢。 我們可以用html,css,js 開發,兼容多個平臺。用戶也要下載安裝,并能調用手機的攝像頭、通訊錄等功能, HybridApp的靜態資源也在手機本地。
我們知道ThinkPHP的模板也是用HTML,CSS,JS 開發的。所以我們想能否將ThinkPHP的模板直接打包成手機APP?讓我們能一次開放同時擁有電腦版網站,手機版網站和手機APP, 因此才有了TPM的誕生。TPM能讓我們將ThinkPHP的模板打包成一個HybridApp。2.手機APP的一般架構很多手機APP的數據都是動態獲取的,我們需要給APP提供接口,讓APP請求接口獲取數據。 不管你是開發NavtiveApp 還是 HybridApp, 都需要給APP提供接口。
傳統的HybridApp 開發方式任然需要我們為APP開發一個接口程序, 我們還要用js寫調用接口的ajax的代碼。
如果使用TPM開發,不用特意寫接口程序,也不用寫ajax調用接口的程序 。 我們還是按照開發網站的方式開發手機客戶端,在
Action中指派模板變量, 在模板中使用模板變量。 當我們將模板打包成APP時,APP能自動請求Action,然后渲染對應的模板,這時候請求Action時,Action會自動返回json格式數據。3.其他手機開發的知識我們要開發好手機APP,還需要了解更多手機開發的知識。 手機的尺寸大小不一樣,所有我們的界面一般不能寫成固定尺寸的, 要做響應式設計。 建議大家了解一下響應式設計的知識。 也可以結合一些UI框架,如bootstrap、purecss 他們自帶對響應式的支持。
建議大家再閱讀一下《移動端webapp開發必備知識》
http://www.qianduan.net/mobile-webapp-develop-essential-knowledge.html二、環境搭建首先你需要建立一個包含TPM的ThinkPHP項目。 你可以在ThinkPHP官方網站上下載TPM, 也可以中github中獲得。 Github的地址是:
http://github.com/liu21st/extend/tree/master/Extend/Tool/TPM
將下載的文件中, Tpl目錄下的文件復制到你的項目文件夾下Tpl目錄中。將SwitchMobileTplBehavior.class.php 復制到 項目目錄下 Lib/Behavior 目錄下,將TemplateMobile.class.php 文件復制到 ThinkPHP/Extend/Driver/Template 下。
項目需要開啟layout , 在項目配置文件中配置:
'LAYOUT_ON'= true在項目的Conf文件夾下建立tags.php ,代碼為:
php return array( 'action_begin'= array('SwitchMobileTpl')如果想手機客戶端支持頁面跳轉,需要修改核心文件 ThinkPHP/Common/functions.php 中得redirect函數,修改為:function redirect($url, $time=0, $msg='') { //多行URL地址支持 $url = str_replace(array("/n", "/r"), '', $url); if (empty($msg)) $msg = "系統將在{$time}秒之后自動跳轉到{$url}!"; if (!headers_sent()) { // redirect if (0 === $time) { //手機客戶端跳轉發送redirect的header if(defined('IS_CLIENT') && IS_CLIENT){ if(''!==__APP__){ $url=substr($url,strlen(__APP__)); header('redirect:'.$url); }else{ header('Location: ' . $url); } else { header("refresh:{$time};url={$url}"); echo($msg); exit(); } else { $str = " meta http-equiv='Refresh' content='{$time};URL={$url}' if ($time != 0) $str .= $msg; exit($str);編輯器打開Tpl/index.html文件,修改代碼TPM.run("http://yourappurl"); 將網址修改為你項目的真實訪問地址。
然后,我們可將模板目錄打包成手機APP 。
首先打開你的命令行, cd 到模板目錄, 運行命令:
php build.php 然后我們發現在模板目錄會生成手機APP文件, 我們在手機上面安裝即可。
命令行打包程序需要你的環境開啟zip和curl擴展,如果不清楚的話請自行百度解決。
注意:打包命令需要聯網,如果沒有聯網的話 可以用第三方打包工具例如phonegap打包。打包命令還可以跟更多參數:
php build.php platform name package version 參數說明:platform :輸入android或ios, 默認為android,現在還不支持IOS打包,大家敬請期待。
name :應用名稱, 默認為TPM 。
package: 應用的包名,如:com.think.yourname ,一般為一個域名的倒序。 默認為 cn.thinkphp.tpm
version: 應用版本, 默認為1.0三 使用說明1.運行原理之前我們在部署項目的時候發現ThinkPHP開啟了layout,其實瀏覽器瀏覽網站時使用的layout文件是Tpl/layout.html, 而打包成手機APP后,layout文件其實是 Tpl/index.html , 我們用編輯器打開 Tpl/index.html文件, 發現里面多加載了一個js文件:TPM.js 。 在手機APP上運行時,TPM.js文件負責解析ThinkPHP模板標簽和自動請求接口。
Tpl/index.html 中需要有這兩個層:
div id="main" /div div 正在加載中... /div TPM會把每次渲染模板的結果放到ID為main的層中。 class為ajax_wait的層 是在請求接口的時候會顯示,我們可以在css文件中定義ajax_wait的樣式。2.模板標簽我們知道在手機APP中并沒用PHP運行環境,解析ThinkPHP模板標簽的是js,ThinkPHP的大部分模板標簽都可以正常使用,但也有一些限制,比如模板標簽中不能用PHP的函數,所以也不能在模板中使用U函數。
支持的ThinkPHP模板標簽有: volist,foreach,for,empty,notempty,present,notpresent,eq,neq,heq,nheq,egt,gt,elt,lt,if,elseif,else,switch,case,default,in,notin,between,notbetween,include。include標簽在使用時有點限制,file屬性必須寫明控制器和方法,不能省略控制器。 如
include file="Action:method" / 不能省略Action。如果有分組也不能省略分組。 其他標簽的用法不變。TPM未實現的標簽有: defined,define等TPM未實現 __URL__,__PUBLIC__,__ROOT__,__SELF__ 等模板替換變量。大家需要在模板中寫固定的URL , 以斜杠開頭。URL地址格式為: /Action/method3.獨立手機APP的模板我們如果希望網站模板和手機APP模板分離,可以定義項目配置:
'TPM_THEME'= 'mobile'然后在Tpl目錄下建立一個mobile文件夾。 在mobile文件夾中放置手機APP的模板。 這樣如果是瀏覽器瀏覽網站首頁,程序渲染的模板是Tpl/Index/index.html, 如果是手機APP打開,渲染的首頁模板是 Tpl/mobile/Index/index.html .4.配置說明Tpl/index.html文件中需要加載TPM.js以及運行TPM , 運行TPM的代碼是:
TPM.run(config)TPM.run傳遞的config參數是配置項。 以對象形式傳遞。 可以設置的主要配置有:
api_base: 項目入口文件地址, http開頭。
api_index: 首次請求的控制器方法,默認為/Index/index
下面舉例說明一下這些配置項。
假設我們創建了一個項目, 入口文件的瀏覽地址是 http://www.xxx.com/index.php , 我們想手機APP打開的第一個頁面不是首頁,而是登陸頁,登陸頁的瀏覽地址假設是:
http://www.xxx.com/index.php/Index/login那么TPM.run的傳參如下:TPM.run({ api_base:'http://www.xxx.com/index.php', api_index:'/Index/login'如果你的項目做了隱藏入口文件的處理,那么api_base也可以不寫入口文件,配置為:
TPM.run({ api_base:'http://www.xxx.com',//注意,末尾不帶斜杠 api_index:'/Index/login'如果只想配置api_base這個參數,其他參數使用默認值,只傳遞一個網址作為參數:
TPM.run('http://www.xxx.com')
5.元素監聽我們做一些js效果,往往會監聽元素事件,比如:
script $(document).ready(function(){ $('#id').click(function(){ alert('click'); script 這段代碼監聽一個元素的點擊事件,但在TPM中這樣監聽可能會失效, 因為這種監聽方式不能監聽到新生的元素, 而TPM 的界面都是 請求接口渲染模板后新生的, 新生的內容會放在Tpl/index.html 文件中main層中。在TPM中要對這種新生的元素進行事件監聽,可以使用TPM.ready,用法如下: script TPM.ready(function($){$('#id').click(function(){ alert('click');}); script TPM還有很多特性,它不僅能和ThinkPHP結合, 也可以結合自己已有的接口。還有一些附件插件幫助我們實現一些常用功能。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩福利电影| 亚洲视频日韩精品| 日韩成人中文电影| 日韩精品亚洲元码| 国产综合香蕉五月婷在线| 91精品国产91久久| 欧美性高潮床叫视频| 亚洲欧美国产视频| 亚洲美女av在线播放| 欧美黑人巨大精品一区二区| 国产精品偷伦视频免费观看国产| 久久久精品亚洲| 在线观看国产精品淫| 国产91精品久久久久久| 精品视频偷偷看在线观看| 亚洲第一区中文99精品| 欧美性视频在线| 欧美成人小视频| 欧美午夜片欧美片在线观看| 成人免费xxxxx在线观看| 97人洗澡人人免费公开视频碰碰碰| 欧美精品一区三区| 日本一区二区在线免费播放| 亚洲性生活视频| 亚洲欧美一区二区三区情侣bbw| 久久夜精品香蕉| 国产成人久久精品| 亚洲免费小视频| 精品视频—区二区三区免费| 亚洲女同性videos| 97在线观看免费| 亚洲三级免费看| 日韩电影在线观看永久视频免费网站| 5252色成人免费视频| 亚洲国产成人爱av在线播放| 日韩美女激情视频| 欧美电影在线观看网站| 亚州欧美日韩中文视频| 亚洲无亚洲人成网站77777| 国产精品福利无圣光在线一区| 国产精品大陆在线观看| 久久精品亚洲一区| 亚洲自拍偷拍视频| 日韩激情片免费| 午夜欧美不卡精品aaaaa| 亚洲一区二区中文字幕| 中国日韩欧美久久久久久久久| 亚洲成人精品在线| 欧美国产高跟鞋裸体秀xxxhd| 在线国产精品播放| 欧美激情一级二级| 国产美女精品免费电影| 日韩精品视频在线免费观看| 欧美一区二区三区免费视| 国产精品91视频| 国产精品免费视频xxxx| 国产欧美精品一区二区三区介绍| 97超级碰碰人国产在线观看| 日韩av免费网站| 国产一区二区三区久久精品| 久久久久久久久久久人体| 亚洲精品久久久久久久久| 欧美午夜美女看片| 欧美激情视频给我| 在线色欧美三级视频| 国产精品嫩草影院一区二区| 久久理论片午夜琪琪电影网| 国产精品扒开腿做爽爽爽的视频| 日韩69视频在线观看| 国产午夜精品全部视频播放| 精品国产视频在线| 亚洲福利在线观看| 精品国产区一区二区三区在线观看| 7777免费精品视频| www国产精品视频| 午夜精品久久久久久99热软件| 国产精品a久久久久久| 国产成人综合精品| 欧美日韩精品在线视频| 尤物九九久久国产精品的特点| 亚洲成人网久久久| 日韩免费观看在线观看| 91亚洲国产成人久久精品网站| 精品亚洲一区二区三区在线播放| 国外成人免费在线播放| 日韩成人在线播放| 欧美又大粗又爽又黄大片视频| 久久五月天综合| 欧美丰满少妇xxxx| 在线观看欧美日韩| 中文字幕欧美专区| 国产丝袜一区二区三区免费视频| 亚洲精品免费一区二区三区| 色yeye香蕉凹凸一区二区av| 91在线|亚洲| 狠狠综合久久av一区二区小说| 国产亚洲人成a一在线v站| 日本午夜人人精品| 色老头一区二区三区在线观看| 亚洲成人免费网站| 国产999在线| 成人国产在线激情| 日韩精品极品毛片系列视频| 亚洲第一av网站| 亚洲精品白浆高清久久久久久| 日韩av快播网址| 中文综合在线观看| 亚洲欧美激情视频| 中文字幕精品影院| 中文字幕一区二区三区电影| 欧美俄罗斯性视频| 日韩电影大全免费观看2023年上| 亚洲japanese制服美女| 精品国产乱码久久久久久天美| 欧美一区三区三区高中清蜜桃| 91禁国产网站| 国产精品成人品| 国产免费一区二区三区在线能观看| 欧美极品少妇xxxxⅹ喷水| 成人做爽爽免费视频| 久久久久久网址| 国产91亚洲精品| 午夜精品久久久久久久男人的天堂| 欧美成人精品在线观看| 国产精品美女www| 伊人亚洲福利一区二区三区| 久久久精品国产| 日韩av免费在线播放| 蜜臀久久99精品久久久无需会员| 国产午夜精品理论片a级探花| 高清一区二区三区四区五区| 九九热精品视频| 欧美日韩精品在线| 国产精品男人爽免费视频1| 国模视频一区二区| 亚洲性av在线| 在线日韩日本国产亚洲| 92看片淫黄大片欧美看国产片| 国产精品一区二区久久精品| 欧美激情视频一区二区| 欧美一区二区影院| 亚洲国产天堂久久国产91| 国产经典一区二区| 国产主播喷水一区二区| 欧美在线视频观看免费网站| 色悠悠久久88| 国产在线98福利播放视频| 日韩国产中文字幕| 欧美老女人bb| 日韩中文字幕不卡视频| 欧美xxxx综合视频| 亚洲韩国青草视频| 高清日韩电视剧大全免费播放在线观看| 国产香蕉一区二区三区在线视频| 91精品久久久久久综合乱菊| 日韩精品视频观看| 97在线视频免费播放| 欧美激情精品久久久久久免费印度| 国产欧美日韩中文字幕在线| 亚洲国产成人爱av在线播放| 国产精品欧美久久久| 亚洲精品电影网站| 亚洲最大福利视频网| 久久精品99无色码中文字幕|