谈谈JavaScript MVC模式

第一个是:没有使用mvc模式的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>javascript demo no mvc</title>
</head>
<body>
	<h3>JavaScript no MVC</h3>
	<div>
		<select name="" id="setAnimal">
			<option value="cat">cat</option>
			<option value="fish">fish</option>
			<option value="bird">bird</option>
		</select>
		<p id="whatDoesThisAnimalDo"></p>
	</div>

	<script type="text/javascript">
        document.getElementById(‘setAnimal‘).onchange = function(){
			var thisAnimalDoes;
			switch(this.value){
				case ‘cat‘:
					thisAnimalDoes = ‘cat meows‘;
					break;
				case ‘fish‘:
					thisAnimalDoes = ‘fish swims‘;
					break;
				case ‘bird‘:
					thisAnimalDoes = ‘bird fies‘;
					break;
				default:
					thisAnimalDoes = ‘wuff?‘;
			}

			document.getElementById(‘whatDoesThisAnimalDo‘).innerHTML = thisAnimalDoes;
		};
    </script> 

</body>
</html>

  第二个例子: 采用mvc模式(其实是 伪mvc 因为数据视图没有完全分开)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>javascript demo mvc</title>
</head>
<body>
	<h3>JavaScript simple MVC</h3>
	<div>
		<select name="" id="setAnimal">
			<option value="cat">cat</option>
			<option value="fish">fish</option>
			<option value="bird">bird</option>
		</select>
		<p id="whatDoesThisAnimalDo"></p>
	</div>

	<script type="text/javascript">
		// controller
		Animal = {
			start: function(){
				this.view.start();
			},
			set: function(animalName){
				this.model.setAnimal(animalName);
			}
		};

        // model
		Animal.model = {
			animalDictionary :{
				cat: ‘meows‘,
				fish: ‘swims‘,
				bird: ‘flies‘
			},

			currentAnimal:null,

			setAnimal: function(animalName){
				this.currentAnimal = this.animalDictionary[animalName]?animalName:null;
				this.onchange();
			},

			onchange: function(){
				Animal.view.update();
			},

			getAnimalAction: function(){
				return this.currentAnimal ? this.currentAnimal + " " + this.animalDictionary[this.currentAnimal] : ‘wuff?‘;
			}
		};

		// view
		Animal.view = {
			start: function(){
				document.getElementById(‘setAnimal‘).onchange = this.onchange;
			},

			onchange: function(){
				Animal.set(document.getElementById(‘setAnimal‘).value);
			},

			update: function(){
				document.getElementById(‘whatDoesThisAnimalDo‘).innerHTML = Animal.model.getAnimalAction();
			}
		};

		Animal.start();
    </script> 

</body>
</html>

  第三种 还可以

Animal={
	start:function(){
		Animal.view.onchange(Animal.set);
		Animal.view.start(Animal.onchange);
	},
	onchange:function(){
		Animal.view.onchange(Animal.set);
	},
	set:function(animalName){
		Animal.model.setAnimal(animalName);
		Animal.view.update(Animal.model.getAnimalAction());
	}
};
Animal.model={
	animalDictionary:{
		cat:‘meows‘,
		fish:‘swims‘,
		bird:‘flies‘
	},
	currentAnimal:null,
	setAnimal:function(animalName){
		this.currentAnimal=this.animalDictionary[animalName]?animalName:null;
	},
	getAnimalAction:function(){
		return this.currentAnimal?this.currentAnimal+" "+this.animalDictionary[this.currentAnimal]:‘wuff?‘;
	}
};
Animal.view={
	start:function(callback){
		document.getElementById(‘setAnimal‘).onchange=callback;
	},
	onchange:function(callback){
		callback(document.getElementById(‘setAnimal‘).value);
	},
	update:function(data){
		document.getElementById(‘whatDoesThisAnimalDo‘).innerHTML=data;
	}
};
Animal.start();

  

时间: 2024-08-07 04:07:13

谈谈JavaScript MVC模式的相关文章

谈谈MVC模式

谈谈MVC模式 作者: 阮一峰 1. 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论. MVC模式就是架构模式的一种,它对我的启发特别大.我觉得它不仅适用于开发软件,也适用于其他广泛的设计和组织工作. 下面是我对MVC模式的一些个人理解,不一定正确,主要用来整理思路. 2. MVC是三个单词的首字母缩写,它们是Model(模型).View(视图)和Controller(控制). 这个模式认为,程序不论简单或复

稍微谈一下 javascript 开发中的 MVC 模式

随着前台开发日益受到重视,客户端代码比重日益增加的今天,如何在javascript开发里应用MVC模式,这个问题似乎会一直被提到,所以偶在这里粗略的谈一下自己的看法吧. MVC模式的基本理念,是通过把一个application封装成model, view和controller三个部分达到降低耦合,简化开发的目的.这么说很空洞,大家可以实际看个例子: 1<select id="selAnimal"> 2    <option value="cat"&

30行代码构建javascript 的MVC模式

MVC模式是软件工程中一种软件架构模式,一般把软件模式分为三部分,模型(Model)+视图(View)+控制器(Controller); 很多讲解MVC的例子都从一个具体的框架的某个概念入手,比如Backbone的collection或AngularJS中model,这当然不失为一个好办法.但框架之所以是框架,而不是类库(jQuery)或者工具集(Underscore),就是因为它们的背后有着众多优秀的设计理念和最佳实践,这些设计精髓相辅相成,环环相扣,缺一不可,要想在短时间内透过复杂的框架而看

JavaScript的MVC模式(转载)

本文介绍了模型-视图-控制器模式在 JavaScript 中的实现. 我喜欢 JavaScript,因为它是在世界上最灵活的语言之一.在 JavaScript 中,程序员可以根据自己的口味选择编程风格:面向过程或面向对象.如果你是一个重口味,JavaScript 一样可以应付自如:面向过程,面向对象,面向方面,使用 JavaScript 开发人员甚至可以使用函数式编程技术. 这篇文章中,我的目标是编写一个简单的 JavaScript 组件,来向大家展示一下 JavaScript 的强大.该组件是

【转】谈谈MVC模式

作者: 阮一峰 日期: 2007年11月 8日 1. 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论. MVC模式就是架构模式的一种,它对我的启发特别大.我觉得它不仅适用于开发软件,也适用于其他广泛的设计和组织工作. 下面是我对MVC模式的一些个人理解,不一定正确,主要用来整理思路. 2. MVC是三个单词的首字母缩写,它们是Model(模型).View(视图)和Controller(控制). 这个模式认为,

MVC模式介绍

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现

学习模型-视图-控制器MVC模式

MVC简介: MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心(比如数据库记录列表). View(视图)显示数据(数据库记录). Controller(控制器)处理输入(写入数据库记录). MVC 模式同时提供了对 HTML.

JDBC - 开发实例 - MVC模式

JDBC - 开发实例 - MVC模式  1. 在web.xml中配置连接数据库的信息 web.xml: <context-param> <param-name>server</param-name> //主机名 <param-value>localhost</param-value> </context-param> <context-param> <param-name>db</param-name&

extjs4.1 和struts2结合使用时延迟加载js,可使用extjs的mvc模式

直奔主题,在前台我们点击左边的菜单会先打开一个tab页,希望将请求的页面放到新打开的tab页上面:关键代码如下: tabPanel.add({ id: id, title: title, closable: true, autoScroll: true, layout: 'fit', loader: { scripts: true, autoLoad: true, params: params, url: url } }); 传统的方法是在tab里面嵌入一个iframe,然后在里面嵌入一个独立的