HTML5开发中使用MVC模式

公司上周举办了一次编程马拉松,时间为两天,我当然用了lufylegend.js,为了让代码看起来更整洁一些,尝试着用javascript写了一个小的MVC框架,并开发了一个简单的demo,由于时间太短,游戏只完成了预计的一小部分。

本次开发的游戏截图如下



测试连接如下

http://lufylegend.com/demo/mvcSample/

很多人一定会说,js开发根本不需要什么MVC,用了就是给自己找麻烦。在这里,我不去讨论需不需要的问题,只是我个人感觉这次的开发使用了MVC模式之后,代码各个模块确实一目了然,维护和扩展都相对方便了许多,很适合大中型的开发,当然对于小程序而言,也确实没有使用MVC的必要。现在我将这个框架公开,并在这里简单说明一下它的用法,这个框架是我在很短的时间内完成的,所以一定存在很多不完善的地方,如果你有更好的想法,也欢迎提出来一起讨论

一,命名

沿用我在lufylegend.js引擎中的命名方式,我给这个框架命名为LMvc,框架已被加入到lufylegend.js的下载包

二,使用前提

本框架是我在lufylegend.js引擎的基础上完成的,所以使用它的话,你需要引入lufylegend.js引擎。

lufylegend.js引擎官网

lufylegend.js引擎在线API文档链接


三,特点

动态加载文件,你可能会把所有JS文件写到了一起,但是工程很大的时候,你的JS文件也会很大,会影响页面的显示速度,LMvc不但可以动态加载图片,还可以动态加载JS,一个页面,你每次只需要加载与它相关的文件即可。

四,使用方法

首先配置引擎中各路径LMvc.JS_PATH,LMvc.IMG_PATH,LMvc.MVC_PATH,LMvc.API_PATH,LMvc.SOUND_PATH。
如果需要提前读取一些图片的话,需要将读取完的数据赋值给LMvc.datalist,在后面使用LMvc框架读取图片的时候,会自动对LMvc.datalist进行监测,重复的图片会不再次读取。
最后,调用LMvc.init();就可以进入IndexController了。

每一个***Controller,***Model,***View是一个组,使用之前必须先读取,使用控制器的loadMvc函数,可以读取一组MVC。
一组MVC中可以互调,在控制器Controller中,可以使用 控制器.model 来调用它的模型,使用 控制器.view 来调用它的视图。在模型Model中,可以使用 模型.controller 来调用它的控制器,使用 模型.view 来调用它的视图。在视图View中,可以使用 模型.controller 来调用它的控制器,使用 模型.model 来调用它的模型。

1,控制器Controller

简而言之,一个控制器就是一个类文件。控制器必须放到Controllers文件夹内,控制器的名字以Controller结尾。
在控制器中,可以使用 this.model 来调用它的模型,使用 this.view 来调用它的视图。

控制器中的函数

construct()控制器初始化结束后会直接调用此函数,如果有想要在控制器初期化结束后运行的代码,可以写在construct函数内,控制器的construct函数,在模型的construct函数运行之后运行。
loadMvc(name,callback,lastClass)读取一组MVC,name是控制器的名称中去除Controller的部分;callback是回调函数,当MVC的三个文件读取完之后,会自动调用此函数;lastClass需要设定为当前对象this。
loadMvc使用举例:
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);
};


load : 控制器中的load对象用来读取各种文件,使用方法如下

this.load.model(names,callback)读取一个或者多个模型。
this.load.view(names,callback)读取一个或者多个视图。
this.load.library(names,callback)读取一个或者多个外部类库。
this.load.helper(names,callback)读取一个或者多个辅助函数文件。
this.load.image(loadData,callback)读取多张图片。

load.model和load.view一般是不用的,但是在一个控制器中要想使用另一组的模型和视图的时候,就需要个别读取了。

load.library的使用案例

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);

load.helper的使用案例

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("对话测试");
};

load.image的使用案例

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获取
};

2,模型Model

模型是专门用来和数据打交道的,数据的存储等工作需要写到模型内。模型必须放到Models文件夹内,模型的名字以Model结尾。
在模型中,可以使用 this.controller 来调用它的控制器,使用 this.view 来调用它的视图。

3,视图View

视图是一个LSprite的子对象。视图必须放到Views文件夹内,视图的名字以View结尾。
在模型中,可以使用 this.controller 来调用它的控制器,使用 this.model 来调用它的模型。

4,辅助函数

在控制器中可以通过this.load.helper来读取一个辅助函数文件。辅助函数文件必须放到Helpers文件夹内。

5,类库

在控制器中可以通过this.load.library来读取一个类库。类库必须放到Libraris文件夹内,类库的名字与控制器,模型和视图的名字不同,它的名字就是类库的名字。

如果想要了解更详细的使用方法,大家可以下载lufylegend.js引擎,查看引擎包中的mvcSample这个具体的开发实例。

本章就讲到这里,欢迎继续关注我的博客

转载请注明:转自lufy_legend的博客http://blog.csdn.net/lufy_legend

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
222.jpg 北京时间2016年11月16日,国内领先的WEB与移动内核软件研发厂商-Zoomla!逐浪CMS团队发布其年度最后一个大作,也是目前国内首个基于MVC架构的厂商级dotNET框架CMS- Zoomla!逐浪2 x3.8 众所周知,目前面向云与大数据是今天互联网的大势所趋,而MVC框架则是目前最流行的开发框架之一。 ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。 ASP.NET 支持三种不同的开发模式: Web Pages(Web 页面)、MVC(Model View Controller 模型-视图-控制器)、Web Forms(Web 窗体) MVC 编程模式 MVC 是三种 ASP.NET 编程模式的一种。 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心(比如数据库记录列表)。 View(视图)显示数据(数据库记录)。 Controller(控制器)处理输入(写入数据库记录)。 MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。 MVC 模式定义 Web 应用程序 带有三个逻辑层: 27 (1).jpg 业务层(模型逻辑) 显示层(视图逻辑) 输入控制(控制器逻辑) Model(模型)是应用程序用于处理应用程序数据逻辑的部分。 通常模型对象负责在数据库存取数据。 View(视图)是应用程序处理数据显示的部分。 通常视图是依据模型数据创建的。 Controller(控制器)是应用程序处理用户交互的部分。 通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。 MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。 MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑 未标题-1.jpg 基于这一思维开发的产品,具有更易维护、更加简洁目录,同时加上全新的逐浪CMS架构和自主表现引擎,整体效率与运行脚本也更具上乘。 Zoomla!逐浪CMS2 x3.8系统是逐浪软件团队年度大作,也是有史以来最大的一次加构更新,我们不仅重写了全局代码、后台引擎,同时就整个底层架构进行优化,整体效率提升了三倍以上。 同时融入了新的办公系统、移动功能、H5模块、移动开发引擎,具备良好的扩展性。 主要更新有: 全新后台表现体系,完美支持移动设置和Surface book、ipad等触控设备应用 全新智能模板引擎,引入我们为猪八戒网等平台提供的模板引擎,从而有更好的设计体验 新增FTP管理模板,可以更好的管理云主机 HTML5表单问券系统 场景复制功能 全新会员特许商品功能 全新会员层级邀请码,通过层级进行B2B分销推荐 增加:插件式开发方式,用于在发布后的项目增加新的mvc页面 增加:加固的安全防护,config下数据库链接不再明文,而是加密,并可通过官方Help.z01.com工具进行解密,从而提升平台的安全性。 修复:用户云备用功能。 增加:扩展商品支持最大购买数、最小购买数、购买倍数 改进:验证码改为点击后会自动更新防抓图破解 增加:增加:微信公众号子商户支付功能(wxpay_submp) 扩展:/Tools/ 维护工具,增加对加密文本的维护功能 增加:内容管理、商品、商城新增二维码,后台一键分享更方便 修改:修改CMS密钥机制 修改:webup多文件上传组件,增加图片压缩功能 场景:增加相册功能,并扩展支持图片压缩 增加:提现申请支持费率(需要在系统-配置-商城参数设置费率) 修改:场景--相册,增加新建场景提示,微信分享图片默认为第一张图 扩展:ueditor已升级为1.4.3.3,解决一个安全溢出缺陷 增加:微信红包功能(/User/Money/RedPacket) *管理员在后台--微信--生成红包 *用户通过红包码在前台领取红包(用户必须关注公众号才可发送红包) 扩展:场景增加访问密码功能 *如设置,则非创建者访问需要密码 *输入一次密码后,只要不关浏览器,即可直接访问 扩展:资金赠送可根据用户名或ID选择赠送人 扩展:订单管理新增导出Excel 新增:全新订单管理样式 新增:快递打单功能,支持顺风、EMS、通、安能物流等快递直接打出订单并匹配快递订单 扩展:内容支持文URL,示例:/Item/标题,从而提升SEO的效率 *需要在后台--节点--栏目选项--文URL *IE下需要对文编码,否则无法解析标题 扩展:在线设计增加了对标签的支持,提现支持手续费率 扩展:相册模式增加新的模板,修复PPT模式 相册Bug 修复:OA模型添加无效Bug,用户检测Bug,专题路径无效Bug,OA事务模板Bug *编辑器模板:后台--办公--套红管理--模板类型=事务 修复:重新校验了手机注册流程,将注册流程修复 可视设计:增加记录复制 可视设计:增加标签复制,仅首行显示添加按钮 修复:后台--办公--OA,选择用户无效Bug(OA统一使用组织结构) 优化:开发心Runsql增加快捷键,并优化关键词显示颜色 优化:后台商城-推广心-用户明细列表显示用户ID、推荐人,新增按ID、真实姓名搜索, 并可逐级查看推广用户 增加:会员展示和会员详情新样式,更加简洁明亮 移除:移除后台SNS好友管理、虚拟商品等无用页面 修复:邀请码生成功能,并检验邀请码逻辑 修复:微博绑定Bug,修改密码链接Bug 修复:用户心广告申请、节日提醒功能 增加:MVC页面索引功能,用户心已可搜索页面 增加:会员支付二级密码功能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值