知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁(yè) » 新聞資訊 » 網(wǎng)站建設(shè) >
appweb的開(kāi)發(fā)步驟簡(jiǎn)介
發(fā)表時(shí)間:2014-8-22
發(fā)布人:葵宇科技
瀏覽次數(shù):70
之前的博客上講了開(kāi)發(fā)板上移植appweb的過(guò)程,這篇博客就記錄一下如何開(kāi)發(fā)一個(gè)典型的基于appweb的mvc架構(gòu)的網(wǎng)站
1.前言
1.1環(huán)境參數(shù)
開(kāi)發(fā)板:mini2440 64MB內(nèi)存 256MB Flash
PC系統(tǒng):X86 ubuntu10.04 gcc:4.4.3
交叉編譯器:gcc 4.4.3
appweb版本:5.0.0-rc1
1.2簡(jiǎn)介
ESP全稱是Embedded Server Page,和jsp(Java Server Pages)很相似,前者支持將C語(yǔ)言嵌套到html中后者支持將Java語(yǔ)言嵌套到html中來(lái)實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)。下面摘抄一點(diǎn)官網(wǎng)上的原話:
ESP is the blazing fast "C" language web framework that works at thought-speed.ESP is not a traditional low-level environment. It is a powerhouse MVC framework in a tiny footprint with most things you'd expect from an enterprise web framework including: MVC, scaffolds, templates, WebSockets, integrated databases, database migrations and more.
ESP的document:https://embedthis.com/esp/doc/index.html
AppWeb的document:https://embedthis.com/appweb/doc/index.html
其他工具的網(wǎng)址:https://embedthis.com/products.html
2.一個(gè)簡(jiǎn)單的MVC登錄
由于開(kāi)發(fā)的是嵌入式web,每改動(dòng)一點(diǎn)內(nèi)容就要重新編譯然后再下載到開(kāi)發(fā)板中測(cè)試,很是麻煩,所以一般采取的方法是先在PC上開(kāi)發(fā)好,測(cè)試好后然后移植到開(kāi)發(fā)板上。所以我們先要在PC上安裝AppWeb以及其它工具,然后開(kāi)發(fā)一個(gè)web應(yīng)用,最后移植到開(kāi)發(fā)板上。
2.1向PC上安裝AppWeb
下載源碼:
去網(wǎng)址:http://appwebserver.org/downloads/appweb/download.esp下載appweb的源碼,我下載的版本是appweb5.0
編譯:
(i)解壓源碼文件
(ii)把文件appweb-linux-default-me.h中的#define ME_COMPILER_HAS_SYNC64 1注釋掉,不然會(huì)報(bào)錯(cuò)“undefined reference to `__sync_add_and_fetch_8'collect2: ld returned 1 exit status”
//#define ME_COMPILER_HAS_SYNC64 1
(iii)make
make -f projects/appweb-linux-default.mk
編譯完后會(huì)在../appweb-5.0.0-rc1/linux-x86-default文件下生成目標(biāo)文件將
(iiii)安裝
make –f project/appweb-linux-default.mk install
2.2利用appweb提供的工具建立MVC模板
參考網(wǎng)址:https://embedthis.com/esp/doc/guide/esp/start/mvc-tour.html
這個(gè)程序很簡(jiǎn)單,就是輸入用戶名和密碼,如果用戶名是“abc”密碼是“123”那么頁(yè)面就跳到loginOK頁(yè)面,如果不是那么頁(yè)面就跳轉(zhuǎn)到loginError頁(yè)面。
目的是熟悉流程和簡(jiǎn)單地理解appweb,里面沒(méi)有涉及到數(shù)據(jù)庫(kù),所以MVC中的M就沒(méi)有很好地體現(xiàn),主要是V和C,如果要完整的實(shí)現(xiàn)可以認(rèn)真地閱讀上面的參考網(wǎng)址。
2.2.1模板生成
(1)$ mkdirmylogin
(2)$cd mylogin
(3)$esp install esp-html-mvc
執(zhí)行完(3)后會(huì)在文件夾里面出現(xiàn):client layouts package.json paks這幾個(gè)文件或是文件夾,將package.json中的auth中的內(nèi)容type刪除,不然會(huì)報(bào)錯(cuò):esp: Error: Cannot find auth type app
(4)$esp generate controller login
執(zhí)行(4)的目的是產(chǎn)生controller,執(zhí)行玩了之后就會(huì)發(fā)現(xiàn)文件夾里面多了個(gè)文件夾controllers,里面已經(jīng)自動(dòng)生成了login.c
2.2.2 修改/編寫(xiě)View
(1)修改mylogin/client/index.esp頁(yè)面為用戶名密碼形式,這里一定要加這句話<% inputSecurityToken(); %>不然的話會(huì)報(bào)錯(cuò)誤:
Access Error: 401 -- Unauthorized
Security token is stale. Please reload page.
<html>
<head>
<title>MyLogin</title>
</head>
<body>
<h1>MyLogin</h1>
<form action=/do/login/check method=POST>
<table>
<tr>
<td>Name:</td><td><input type=text name=name size=50 value=""></td>
</tr>
<tr>
<td>Pwd:</td><td><input type=text name=pwd size=50 value=""></td>
</tr>
<tr>
<td align="CENTER">
<input type=submit name=login value="Login">
<% inputSecurityToken();%>
</td>
</tr>
</table>
</form>
</body>
</html>
(2)在mylogin/client文件夾下建立app/login文件夾,在里面新建兩個(gè)esp頁(yè)面,login-ok.esp和login-error.esp
login-ok.esp:
<html>
<head>
<title>OK</title>
</head>
<body>
<h1>login OK</h1>
</body>
</html>
login-error.esp:
<html>
<head>
<title>error</title>
</head>
<body>
<h1>login Error</h1>
</body>
</html>
2.2.3 修改/編寫(xiě)Controller
這里主要是修改controller文件夾下的login.c,這里 的action的命名是這樣的:比如./do/login/check的uri對(duì)應(yīng)的就是login-cmd-check
/*
login Controller for esp-html-mvc (esp-html-mvc)
*/
#include "esp.h"
static void checkLogin() {
cchar *name = param("name");
cchar *pwd = param("pwd");
if(smatch("abc",name) && smatch("123",pwd))
{
renderView("login/login-ok");
}else{
renderView("login/login-error");
}
}
static void common(HttpConn *conn) {
}
/*
Dynamic module initialization
*/
ESP_EXPORT int esp_controller_mylogin_login(HttpRoute *route, MprModule *module) {
espDefineBase(route, common);
espDefineAction(route, "login-cmd-check", checkLogin);
return 0;
}
2.2.3編譯
$esp compile
如果沒(méi)有錯(cuò)誤的話,機(jī)會(huì)生成cache文件,里面的.so文件就是appweb要加載的文件,這里我們可以看到,esp會(huì)被“翻譯”成c文件,就像jsp會(huì)被“翻譯”成java文件(servlet)一樣
2.2.4配置文件
為了節(jié)省空間我把不必要的注釋和其它的東西都刪除了,如果想看完整版(里面有很多的注釋,建議看一下),就去看appweb-5.0.0-rc1/src/server/sample.conf
需要注意的是以下幾個(gè):
(1)Listen 4000 監(jiān)聽(tīng)端口
(2)Documents /home/jxm 這個(gè)表示你的web應(yīng)用所在的目錄,比如我的文件夾mylogin就在/home/jxm文件夾下
(3)EspRoute name="login" methods="GET,POST" prefix="^/{controller}(~/{action}~)" target="${controller}-${action}" source="${controller}.c" 這個(gè)文件就是配置action的語(yǔ)句,只需要修改name就行,其它的用模板里面的就行
ErrorLog "error.log" size=10MB level=2 backup=5 anew stamp=1hr
Listen 4000
Documents /home/jxm
AddHandler fileHandler html gif jpeg jpg png pdf ico css js txt ""
<if ESP_MODULE>
LoadModule espHandler libmod_esp
AddHandler espHandler esp
EspUpdate off
EspKeepSource>
2.2.5啟動(dòng)
$appweb --config sample.conf
2.2.6訪問(wèn)
向?yàn)g覽器中輸入網(wǎng)址:127.0.0.1:4000就會(huì)出現(xiàn)登錄界面,如果要去掉最上面的“Home”banner,需要將文件夾mylogin/layouts中的default.esp文件刪除,然后重新編譯再運(yùn)行

2.2移植到開(kāi)發(fā)版
2.2.1 交叉編譯
在編譯前建議將cache文件夾刪除
$export CC=arm-linux-gcc
$esp --platform../appweb-5.0.0-r1/linux-arm-release(這個(gè)路徑是你之前交叉編譯appweb產(chǎn)生的目錄) compile
然后將整個(gè)mylogin文件拷貝到開(kāi)發(fā)板中,這里需要注意的是,由于目錄變化所以在sample.conf 中的Document的目錄也要變
相關(guān)案例查看更多
相關(guān)閱讀
- 云南網(wǎng)站建設(shè)百度官方
- 政府網(wǎng)站建設(shè)服務(wù)
- 云南建設(shè)廳網(wǎng)站
- 江蘇小程序開(kāi)發(fā)
- 北京小程序制作
- 云南網(wǎng)站建設(shè)開(kāi)發(fā)
- 模版信息
- 云南小程序開(kāi)發(fā)首選品牌
- 麗江小程序開(kāi)發(fā)
- 網(wǎng)站建設(shè)列表網(wǎng)
- 網(wǎng)站建設(shè)首選
- 百度排名
- 開(kāi)發(fā)微信小程序
- 高端網(wǎng)站建設(shè)公司
- 報(bào)廢車拆解系統(tǒng)
- 云南小程序開(kāi)發(fā)哪家好
- 網(wǎng)絡(luò)營(yíng)銷
- .net網(wǎng)站
- 網(wǎng)絡(luò)公司
- 跳轉(zhuǎn)小程序
- 百度人工排名
- 小程序制作
- 分銷系統(tǒng)
- 昆明小程序代建
- 百度推廣
- 云南網(wǎng)絡(luò)公司
- 網(wǎng)站開(kāi)發(fā)公司哪家好
- 報(bào)廢車回收
- 網(wǎng)站建設(shè)
- 云南網(wǎng)站建設(shè)公司排名