说到设计模式,咱们开发软件怎么能少得了MVC?
咱们这次就来聊聊用LMvc搞出来的那个MVC,看看它到底是怎么回事儿,还能用来实现什么东西,到最后再看它到底有多好用,值不值得用在那些高大上的项目里头。
LMvc框架简介
简单来说,LVMc这个框架就是从lufylegend.js那里借鉴来的,主要就是方便我们使用MVC模式。它牛在哪里?就是可以把控制器(Controller)、模型(Model)和视图(View)拆分开,让你的代码看起来更清爽,也好维护和扩展。不过要注意,如果只是搞个小项目,比如小程序啥的,那就不用MVC啦;但是如果想搞定大型项目,那MVC绝对是你的好帮手!
动态加载文件优化
你是不是在搞开发时碰上了大难题?比如看到那个像是垃圾堆似的JS文件加载半天,导致网页慢如蜗牛?没关系,我们有LMvc框架专门解决这个问题。它能自动加载你正在看的页面需要的图片和文件,让网页速度瞬间提升。更棒的是,如果你想提前知道图片信息,只需要把它们放到LMvc.datalist里,下次再用LMvc框架加载时就可以直接调用,再也不用浪费时间去读取!
初始化及组件调用
敲个LMVC.init(),就可以进去IndexController!记得看看每个小部件儿,之前提到过的loadMvc函数得用起来。而且各部分之间还能直接互通,比如控制器里直接用控制器.model调模型,模型里用模型.controller唤控制器。
组件之间关系
你看在LMVC这套框架里,每个部分都有自己的事儿要干。比如控制器这个家伙就是来安排模型和视图做事儿的,它们之间还可以相互扯皮啥的。说白了,控制器里就可以用this.model来操控模型,用this.view来看视图;模型里也能用this.controller来控制控制器,用this.view来展示视图;而视图,它就是用this.controller来指使控制器,用this.model来折腾模型。这样一来,代码是不是变得更容易懂了?
function IndexController(){ base(this,MyController,[]); } IndexController.prototype.construct=function(){ var self = this; self.loadMvc("Logo",self.logoLoad); }; IndexController.prototype.logoLoad=function(){ var self = this; var logo = new LogoController(); self.view.addChild(logo.view); };
文件结构规范
记得,每一个控制器都得塞到Controllers文件夹里面去,后面还得加上“Controller”这个后缀名。模型,就藏在Models文件夹里,记得要带上”Model”这俩字。至于视图,当然也得藏进Views文件夹,记得要加上”View”。最后,不要忘了我们的小帮手们它们就在Helpers文件夹中,全都是各种实用的帮助函数。别忘了还有Libraries文件夹,那里是装所有类库文件的地方,这样才能让我们更轻松地管理和维护项目!
控制器函数与加载机制
function GameController(){ base(this,MyController,[]); } GameController.prototype.construct=function(){ var self = this; self.load.library(["Character","AttackCharacter","Face","Bar","effects/Effect02", "effects/Qinglong","effects/Baihu","BitmapSprite","CoolingTime"],self.libraryLoadOver); }; GameController.prototype.libraryLoadOver=function(){ var self = this; var chara = new Character(); self.view.addChild(chara);
每个controller都有专属技能比如说那个Construct,一上来就要用到,搞定那些初始化之后的事儿。再来说说Load,它就是专门用来读东西的,不管是模型、视图、库还是助手,甚至图片也能搞定。不过,如果你想在同一个控制器里用不同的模型或者视图,那就得自己动手读取。
MVC组件间通信
function GameController(){ base(this,MyController,[]); } GameController.prototype.construct=function(){ var self = this; self.load.helper(["Talk","UI"],self.helperloadOver); }; GameController.prototype.helperloadOver=function(){ var self = this; Talk("对话测试"); };
告诉你个事儿,MVC这哥儿仨就像亲兄弟一样好使!举个栗子,在控制台上动动手指输入个this.load.helper就能搞定,把小工具库调出来;而到了视图或模型那边,还可以和其它部分玩儿在一起,处理各种数据。这么做有啥好处?简单说,代码随便复制粘贴,维护起来超轻松!
详细示例与实践指南
function GameController(){ base(this,MyController,[]); } GameController.prototype.construct=function(){ var self = this; var list = self.model.getCommonImages(); self.load.image(list,self.loadImageOver); }; GameController.prototype.loadImageOver=function(){ var self = this; //读取完图片后,可以通过LMvc.datalist获取 };
想学LMvc吗?先别急着动手,去LuFYLegend.js引擎里的mvcSample看看!这里有详细的步骤和提示,保证你立马就能学会,轻松掌握LMvc。
用IMP.NETMVC这种玩意儿来搞大中项目真是太舒服了!代码一目了然,随便哪儿都能找到你需要的那个组件;还有,文件的管理也井井有条,工作起来就顺畅多了,自然效率也跟着上去了。不过,到底要用不用这MVC模式还得看你的项目大小和需求咯。
评论0