前端Web开发MVC模式-入门示例

MVC概论起初来之桌面应用开发。其实java的structs框架最能体现MVC框架:model模型是理解成服务器端的模块程序;view为发送给客服端的内容;control为servlet程序控制跳转和工作流。

随着前端Ajax兴起、前端开发工作进一步划分:js程序员和ue页面制作、另外从整个前端项目的清晰明朗可以扩展性角度来看,MVC的应用也越来越必要,特别是对大的项目?

例如 需要给一个页面上的button注册一个onclick事件。

1、我们可以有如下最简洁的写法:(view和model control完全混合)

<html>

<head>

<title> example </title>

</head>

<body>

<input type="button" value="baidu" onclick="alert(this.value);"/>

</body>

</html>

说明:如上写法的好处:简单、直接;

严重的弊端:如果都是这样写法,页面代码很大的时候,修改js代码还需要查找整个页面,导致整个页面非常混乱。

批注:类似与 jsp中直接嵌入java片段语句。

2、将html和js代码进行适当分离:(view和model control在同一页面适当分离)

修改以上的写法:

<html>

<head>

<title> example </title>

</head>

<body>

<input type="button" value="baidu" onclick="tipInfo(this);"/>

<script type="text/javascript">

function tipInfo(o){

alert(o.value);

}

</script>

</body>

</html>

这是将页面上所有的js代码操作放到<script></script>标签中进行。使得js逻辑代码相对集中,易于后期修改。

但是我们还是需要在html标签中写tipInfo(this)的js调用代码。即html和js仍然有混合。

3、将html和js代码彻底分离:(view和model control完全分离)

修改写法:

视图view的html代码:

<html>

<head>

<title> example </title>

</head>

<body>

<input type="button" value="baidu" id="baidu"/>

</body>

<script src="example.js"></script>

</html>

分离出来的模型model和控制control的综合example.js代码:

var o = document.getElementById("baidu");

o.onclick = function(){

alert(this.value);

}

说明:button节点的操作和事件注册等工作完全与html页面分离。但是仔细想想,这还不是一个基于MVC的模式,control和model完全混合在一起。

批注:与jsp中的javabean实现类似。

4、符合MVC框架的实现:(view、mode和control完全分离)

view视图的view.html代码:

<html>

<head>

<title> example </title>

</head>

<body>

<input type="button" value="baidu" id="baidu"/>

</body>

<script src="model.js"></script>

<script src="control.js"></script>

</html>

实现control控制功能的control.js代码:

function G(id){

return document.getElementById(id);

}

var UI = new Object();

UI.register = function(id,even,fun,arr){

if(G(id))

G(id)["on"+even] = function(){

fun(arr);

};

}

UI.register("baidu","click",tipInfo,[1,2]);

第一参数:为button节点id

第二参数:为需要注册的触发事件

第三参数:事件触发函数

第四参数:需要传递的参数。

说明:control.js的代码就是实现html页面节点事件的注册。使得节点的各种事件知道会触发什么函数去执行。

具体的函数操作,可以放到model模块中执行,在model中,才是真正处理逻辑操作。看model.js代码:

function tipInfo(arr){

alert(arr[1]);

//实现其他组件功能,例如popup、form等。都属于model模型

}

批注:类似jsp中的struts框架、struts标签实现方式。

总结:

View:只管页面的显示和样式展示

Control:进行页面节点事件的注册和控制,以及页面加载性能的实现(例如方荣的硬盘缓存)。

Model:真正的逻辑处理,例如jslib库中的form、popup、drag等功能组件都属于model模块。

【转】前端Web开发MVC模式-入门示例的更多相关文章

  1. 前端Web开发MVC模式-入门示例

    MVC概论起初来之桌面应用开发.其实java的structs框架最能体现MVC框架:model模型是理解成服务器端的模块程序:view为发送给客服端的内容:control为servlet程序控制跳转和 ...

  2. SAP web 开发 (第二篇 bsp 开发 mvc模式 Part1 )

    Model-View-Controller 简称MVC. 简单的说就是把数据处理,显示,页面事件及处理过程分离开来,企业应用多数都采用这种方式,多层架构的优缺点不再多言,google一下啥都知道. 在 ...

  3. 《Flask Web开发实战:入门、进阶与原理解析(李辉著 )》PDF+源代码

    一句话评价: 这可能是市面上(包括国外出版的)你能找到最好的讲Flask的书了 下载:链接: https://pan.baidu.com/s/1ioEfLc7Hc15jFpC-DmEYBA 提取码: ...

  4. web开发-MVC IoC 框架(转)

    随着Web应用的商业逻辑包含逐渐复杂的公式分析计算.决策支持等,使客户机越 来越不堪重负,因此将系统的商业分离出来.单独形成一部分,这样三层结构产生了. 其中‘层’是逻辑上的划分. 三层体系结构是将整 ...

  5. Java Web开发技术教程入门-自定义标签

    回顾: 昨天了解了JSP开发的两种模式Model1和Model2模式.Model1采用JSP+JavaBean技术开发Web应用,它比较适合小规模应用的开发,效率较高,易于实现.但由于在Model1中 ...

  6. Java Web开发技术教程入门-Model1和Model2

    今天我们聊聊JSP开发中的Model1和Model2. Model1采用了JSP+JavaBean技术开发Web应用.其中,JSP实现页面显示,业务逻辑和流程控制,数据处理由JavaBean完成.在J ...

  7. MVC模式入门案例

    import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widg ...

  8. Java Web开发技术教程入门-JSP基本语法和九大内置对象

    这两天气温逐渐升高,好想把自己泡在冰块里······ 恩嗯摁蒽恩嗯摁蒽恩嗯摁蒽恩嗯摁蒽.......今天阅读到了这本书的第四章-JSP基本语法.经过第一天的阅读,我们明白JSP技术是Java Web开 ...

  9. Java Web开发技术教程入门-静态网页技术

        昨天了解了构建动态网站的几种技术:Servlet技术.JSP技术,ASP技术和ASP.NET技术以及PHP技术.昨天的精髓在于JSP技术的运行原理:通过用户请求JSP文件,首先检查JSP文件的 ...

随机推荐

  1. svg相关

    1.指定点缩放公式 translate(-centerX*(factor-1), -centerY*(factor-1)) scale(factor)

  2. Web服务器使用基于纯文本表单的身份验证——.net(未完待续)

    asp.net 表单验证方式 Asp.net的身份验证有有三种,分别是"Windows | Forms| Passport",其中又以Forms验证用的最多,也最灵活. 根据实际需 ...

  3. 在SELECT的时候,加入一列固定值

    SELECT * FROM (select id id, si_code code, si_sharetype sharetype, si_name name, si_organid organid, ...

  4. live555 学习资料

    下载源码 http://www.live555.com/liveMedia/public/live555-latest.tar.gz 安装tar xzf live555-latest.tar.gz c ...

  5. idea 新建一个java项目并运行

    这个只能算是个笔记,参考:参考文档 打开Idea,选择create new project,如图 或选择File ——> New——>Project... 出现以下界面,选中Java,然后 ...

  6. 2017-2018-2 20165228 实验四《Android程序设计》实验报告

    一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:苏祚堃 学号:20165228 指导教师:娄嘉鹏 实验日期:2018年5月14日 实验时间:13:45 - 3:25 实验序号:实验四 ...

  7. 【letcode】5-LongestPalindromicSubstring

    回文串 回文串(palindromic string)是指这个字符串无论从左读还是从右读,所读的顺序是一样的:简而言之,回文串是左右对称的.一般求解一个字符串的最长回文子串问题. problem:Lo ...

  8. [LeetCode&Python] Problem 404. Sum of Left Leaves

    Find the sum of all left leaves in a given binary tree. Example: 3 / \ 9 20 / \ 15 7 There are two l ...

  9. Redis实战之Redis命令

    阅读目录 1. 字符串命令 2. 列表命令 3. 集合命令 4. 散列命令 5. 有序集合命令 6. 发布与订阅命令 7. 小试牛刀 Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结 ...

  10. IE8的兼容问题

    1: rgba失效的问题: 在添加rgba的类名内加上:filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7f00000 ...