您的位置:首页 > Web前端

PHP Lumen - 入门教程 - web前端架子

2016-08-19 23:36 531 查看
用了Lumen一段时间了,感觉还不错。也适合全栈开发。因为我一丢丢PHP基础都没看就直接用起了框架,挺多地方还是闹笑话了。比如,字符串追加,PHP它喵的居然是用 “.” 来追加,而通过“->”进行属性调用也是不爽~

这个web前端架子,不是Lumen专用的,额外分享。

首先我写了一个公共类(common.js),主要用来进行封装请求的。

/*!
* =====================================================
* 全局通用变量
* =====================================================
*/
var Common = {};
//Common.ServerUrl = "http://120.24.xx.xx:8080/";       //线上测试版本
Common.ServerUrl = "http://192.168.0.110:8080/";    //公司测试版本
//Common.ServerUrl = "http://192.168.99.139:8080/";     //宿舍测试版本

Common.Post = function(url,data,successcallback,errcallback){
console.log(Common.jsonToUrl(url,data));
if(errcallback==null){
errcallback = function(xhr,type,errorThrown){
console.log(JSON.stringify(xhr))
plus.nativeUI.closeWaiting();//关闭旋转菊花
alert("网络异常:" + url);
}
}
//这里的mui是HBuilder跨平台开发工具自己的js,根据自己项目调改。
mui.ajax(Common.ServerUrl + url,{
data:data,
dataType:'json',
type:'post',
timeout:5000,
success:successcallback,
error:errcallback
});
}

Common.jsonToUrl=function(url,jsonData){
var full_url = Common.ServerUrl + url + "?";
for(var index in jsonData){
full_url = full_url + index + "=" + jsonData[index] + "&";
}
return full_url;
};


可以把这段代码塞到js插件里面去(比如jQuery)减少请求。

这一丢丢代码有几个好处:

1.统一请求的url,不需要每个页面都去设置请求地址。页面发送ajax时,只需要把相对路径传进来就行了。

2.统一错误返回的处理,可以即时知道哪个请求出错。也可以根据需要特殊回调处理。

3.把post的data转换为url地址,方便直接复制到浏览器进行get调试。

4.方便拓展与维护,比如可以统一处理“未登录则自动跳转到登录页”。

再看下html页的代码

<script>
/*
* 页面配置
*/
var PAGE = {
View: {},
page: 0,
Model: {
Article: function(article) {
return '<article id="' + article.information_id + '">' +
'<div class="article-time">' +
'<span>' + article.time_title + '</span>' +
'</div>' +
'<div class="article-bg" style="background-image: url(' + article.information_imgurl + ');">' +
'<div class="article-bg-cover">' +
'<span class="information_title"># ' + article.information_title + '</span>' +
'</div>' +
'</div>' +
'<div class="mui-pull-right article_collect">' +
'<img style="width: 100%;" src="../../img/news_shoucang.png" />' +
'<div class="article_collect_fone">' + article.favour_num + '</div>' +
'</div>' +
'</article>';
},
Articles:function(articles){
var html = "";
for(var i = 0; i < articles.length; i++) {
html += PAGE.Model.Article(articles[i]);
}
return html;
}
}
};
mui.init();//(mui框架需要)初始化框架
mui.plusReady(function() {
PAGE.Init();//初始化本页面
});
/*
* 页面初始化
*/
PAGE.Init = function() {
PAGE.preloadView();
PAGE.addEventListener();
}
/*
* 页面预加载
*/
PAGE.preloadView = function() {}
/*
* 事件监听
*/
PAGE.addEventListener = function() {
PAGE.addEventListener_Article();//确定监听点击文章列表的元素
}
/*
* 页面预加载-实现
*/
PAGE.preloadView_Name = function() {}
/*
* 事件监听-实现
*/
PAGE.addEventListener_Article = function() {
mui("#div_newList").on("tap", "article", function() {
mui.openWindow({
id: "/View/News/details.html",
url: "/View/News/details.html",
extras: {
information_id: this.id,
information_title: this.getElementsByClassName("information_title")[0].innerText,
information_imgurl: this.getElementsByClassName("article-bg")[0].style.backgroundImage
}
})
})
}
/*
* 事件实现
*/
PAGE.Event_Name = function() {}
</script>


编出来的这段,个人用起来还是比较舒服的。

1.所有js代码都是在PAGE这个域里面,尽量避免污染。

2.将所有监听事件独个封装起来,然后由PAGE.addEventListener统一调用。这样在简单事件较多的情况下,代码也足够清晰易阅读和定位。

3.所有动态生成的代码放在PAGE.Model对象里面(传人json数据,返回对应的html代码)。同样也是清晰易阅读和定位。

4.普通函数比如,更新页面数据就用PAGE.Event_XXX格式命名函数。这个主要就是统一规范吧。

5.一些配置变量,比如当前页PageNum,也可以防止PAGE里面去维护。

接下来继续实战,看能不能怎么优化。现在为了性能,大多数都是用原生js,看看有没有机会封装个js架子。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: