目錄
一,命名
二,使用前提
三,特點
四,使用方法
1,控制器Controller" >1,控制器Controller
控制器中的函數
load : 控制器中的load物件用來讀取各種文件,使用方法如下
2,模型Model" >2,模型Model
3,视图View" >3,视图View
4,辅助函数" >4,辅助函数
5,类库" >5,类库
首頁 web前端 H5教程 HTML5開發中使用MVC模式

HTML5開發中使用MVC模式

Mar 01, 2017 pm 03:32 PM

公司上週舉辦了一次程式設計馬拉松,時間為兩天,我當然用了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引擎官網

http://lufylegend.com/lufylegend

lufylegend.js引擎線上API文件連結

http://lufylegend. com/lufylegend/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这个具体的开发实例。

 以上就是HTML5开发中使用MVC模式 的内容,更多相关内容请关注PHP中文网(www.php.cn)!



本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

HTML 中的表格邊框 HTML 中的表格邊框 Sep 04, 2024 pm 04:49 PM

HTML 表格邊框指南。在這裡,我們以 HTML 中的表格邊框為例,討論定義表格邊框的多種方法。

HTML 中的巢狀表 HTML 中的巢狀表 Sep 04, 2024 pm 04:49 PM

這是 HTML 中巢狀表的指南。這裡我們討論如何在表中建立表格以及對應的範例。

HTML 左邊距 HTML 左邊距 Sep 04, 2024 pm 04:48 PM

HTML 左邊距指南。在這裡,我們討論 HTML margin-left 的簡要概述及其範例及其程式碼實作。

HTML 表格佈局 HTML 表格佈局 Sep 04, 2024 pm 04:54 PM

HTML 表格佈局指南。在這裡,我們詳細討論 HTML 表格佈局的值以及範例和輸出。

HTML 輸入佔位符 HTML 輸入佔位符 Sep 04, 2024 pm 04:54 PM

HTML 輸入佔位符指南。在這裡,我們討論 HTML 輸入佔位符的範例以及程式碼和輸出。

HTML 有序列表 HTML 有序列表 Sep 04, 2024 pm 04:43 PM

HTML 有序列表指南。在這裡我們也分別討論了 HTML 有序列表和類型的介紹以及它們的範例

在 HTML 中移動文字 在 HTML 中移動文字 Sep 04, 2024 pm 04:45 PM

HTML 中的文字移動指南。在這裡我們討論一下marquee標籤如何使用語法和實作範例。

HTML onclick 按鈕 HTML onclick 按鈕 Sep 04, 2024 pm 04:49 PM

HTML onclick 按鈕指南。這裡我們分別討論它們的介紹、工作原理、範例以及各個事件中的onclick事件。

See all articles