一、拉近我们的距离

我想,很多人会问,如今IE6还占据颇多份额的中国,html5、css3是否还很遥远?我会很直接告诉他们:其实就在你的眼前.我们来看两个图:

                            (图一:2013 4月左右,全球浏览器情况)

分析:全球浏览器中6.22+23.08=40%的浏览器不支持html5+css3

                           (图二:国内浏览器份额图)

分析:大概有60%的浏览器在国内不支持html5+css3

这是否就意味着,我们需要等待?我在给大家看一幅图,大家或许就知道出路在哪里了.

说明:用户再次用小于IE9的IE允许时,直接启动平台工具(本质上为webkit,谷歌内核;启动原理activex)

问题解决了,可能你会说不完美,因为需要下载,但你回头想想会为你节省很多成本.而且可以体验到html5、css3前沿技术的绝对优势.

二、如何解耦

1)提出现行问题

  目前而言ASP.NET的主流开发模式:webform、mvc.而如前我所论述的,似乎都不尽完美?真心用过MVC的人就知道如下的情况:

  虽然MVC让开发从原来的 webform中解脱出来,解决了:层次清晰逻辑、UI的隔离、服务端控件的一些瑕疵等诸多问题,但是MVC的弱点同时也存在.在MVC中我们的Model时常变动,我们必须手动创建Model类和Model的变动修改.同时相对于Model的Action控制操作,也需要一定程度上的变动.(因实体框架等生成的实体(Model)是无法满足现行逻辑需求的).

  其次因为实际开发中没有银弹,只有平衡点.V,C之间的逻辑紧密,然而实际的前台实现和效果需求是变化莫测的, 更加导致美工决定VC的局面,从而VC的重用性很低很低.如果一个页面存在多个视图,那么其逻辑就相对不易(我们需要维护多个VC组,我们需要处理VC组 的一定逻辑次序,构造不同的Model).

2)解决方案

为了解决上述问题,我将再后续文章中详细讲解如何利用angularjs解耦、如何利用新的设计模式(jpvl)来解耦.

  这里我简单介绍一下两者存在的意义和原理;

1)angularjs

  是一组用来开发Web页面的框架、模板以及数据绑定和丰富UI组件。它支持整个开发进程,提供web应用的架构,无需进行手工DOM操作。 AngularJS很小,只有60K,兼容主流浏览器,与 jQuery 配合良好。数据绑定可能是AngularJS最酷最实用的特性。它能够帮助你避免书写大量的初始代码从而节约开发时间。一个典型的web应用可能包含了80%的代码用来处理,查询和监听DOM。数据绑定是的代码更少,你可以专注于你的应用。

特点一:前端的解耦能力
  当model变化了。 开发人员需要手动处理DOM元素并且将属性反映到这些变化中。这个一个双向的过程。一方面,model变化驱动了DOM中元素变化,另一方面,DOM元素的变化也会影响到Model。这个在用户互动中更加复杂,因为开发人员需要处理和解析这些互动,然后融合到一个model中,并且更新View。这是一个手动的复杂过程,当一个应用非常庞大的时候,将会是一件非常费劲的事情。
特点二:模板
  在AngularJS中,一个模板就是一个HTML文件。但是HTML的内容扩展了,包含了很多帮助你映射model到view的内容。
  HTML模板将会被浏览器解析到DOM中。DOM然后成为AngularJS编译器的输入。AngularJS将会遍历DOM模板来生成一些指导,即,directive(指令)。所有的指令都负责针对view来设置数据绑定。
  我们要理解AuguarJS并不把模板当做String来操作。输入AngularJS的是DOM而非string。数据绑定是DOM变化,不是字符串的连接或者innerHTML变化。使用DOM作为输入,而不是字符串,是AngularJS区别于其它的框架的最大原因。使用DOM允许你扩展指令词汇并且可以创建你自己的指令,甚至开发可重用的组件。
特性三:MVC
特性四:依赖注入(Dependency Injection,即DI)
特性五:Directives(指令)

2)JPVL设计模式

1)JVPL(json-视图-处理器--加载器),如上图所示.如果我要视图重用我只要载入所需视图和加载器即可.var 新的视图=get("加载器","视图"); 且Moon.net架构会接着脚本引擎帮助我们生成后台所需代码.

2)整个JVPL模式建立建立在Ajax的机制上,它具有Ajax所有的优缺点.(但我认为Ajax的优点>>缺点,且我们可以
通过手段解决这些缺点).正如有人说Ajax不安全,因为暴露了系统服务接口,这完全废话,难道纯的form提交就没有暴露?这些都是门外汉说的话,因为
根本的权限机制都没有建立.接着说,正如前面文章提到的视图数据的加载.如果我前台的逻辑变动系统的逻辑变动,这是Moon.Web会辅助我们生产新的后台代码. 如果一个页面存在多个视图,那么这多个视图的加载,我们通过加载器直接调度即可.因为脚本引擎的存在,它会帮助我们生成后台代码和数据分配及数据转
发.Moon.NET中最为精华的部分就是脚本引擎.它也是我们提高开发效率的关键.

3)在我们的开发中,前端展现的标准是由策划及美工定的,所以作为一个开发者还是架构师必须紧密结合实际进行架构或开发.这样才能提高开发效率.
Moon.Web主要对复杂的UI控件诸如:编辑器,分页,异步文件上传...等控件进行了封装且提供了美工可控制接口.因为MVC的控件方法也是一样
的.

  

大话ASP.NET开发(第一章 html5+css3+解耦问题的探讨)的更多相关文章

  1. ASP.NET自定义控件组件开发 第一章 第三篇

    原文:ASP.NET自定义控件组件开发 第一章 第三篇 第三篇:第一章的完结篇 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待 ...

  2. ASP.NET自定义控件组件开发 第一章 第二篇 接着待续

    原文:ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 很感谢大家给我的第一篇ASP.NET控件开发的支持!在写这些之前,我也看了 ...

  3. ASP.NET自定义控件组件开发 第一章 待续

    原文:ASP.NET自定义控件组件开发 第一章 待续 第一章:从一个简单的控件谈起 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接 ...

  4. ASP.NET自定义控件组件开发 第一章 第三篇 第一章的完结篇

    ASP.NET自定义控件组件开发 第一章 第三篇   第三篇:第一章的完结篇 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ...

  5. ASP.NET自定义控件组件开发 第一章 第一章:从一个简单的控件谈起

    第一章:从一个简单的控件谈起 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ASP.NET自定义控件组件开发 第一章 第三 ...

  6. 【翻译习作】 Windows Workflow Foundation程序开发-第一章04

    1.2.3  Windows Workflow运行时 从Windows Workflow的角度看,可以将工作流活动当成是交给一个工作流处理器去执行的一系列指令或操作码.在Windows Workflo ...

  7. 【翻译习作】 Windows Workflow Foundation程序开发-第一章02

    1.2      Windows Workflow概览 微软的Windows Workflow Foundation(简称WF)是.NET框架3.0版的一部分..NET3.0其它主要部分是Window ...

  8. 【翻译习作】 Windows Workflow Foundation程序开发-第一章05

    1.3      开发我们的第一个工作流 也许你曾经在这样的产品经理手下搞过开发:他总是在你身边转悠,并不时的问一句“你还没做完吗?”.在这一部分,我们将用一个简单的Windows Workflow程 ...

  9. 【翻译习作】 Windows Workflow Foundation程序开发-第一章03

    1.2.2.Visual Studio 2005扩展包 微软也为Windows Workflow开发者提供了Visual Studio 2005扩展包.扩展包将许多功能集成到Visual Studio ...

随机推荐

  1. Java设计模式11:外观模式

    外观模式 外观模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的外观对象进行.外观模式是一个高层次的接口,使得子系统更易于使用. 医院的例子 现代的软件系统都是比较复杂的.假如把医院比作一 ...

  2. HTTP解析

    前言 B/S网络架构的核心是HTTP,掌握HTTP对一个从事互联网工作的程序员来说非常重要.要理解HTTP,最重要的是要熟悉HTTP的HTTP Header,HTTP Header控制着互联网上成千上 ...

  3. JavaScript –类型之我晕

    每次写博我觉得取上恬当的题目比整篇行文都难,词量有限的情况下突然想到JavaScript拾遗应该会是一个非常文艺而夺目的博文题目,但我并没有急着使用,经验告诉我应该先去搜一下看有没有被用过.果不其然, ...

  4. Linux 容器技术史话:从 chroot 到未来

    Linux 容器是一个在单一 Linux 主机上提供多个隔离的 Linux 环境的操作系统级虚拟技术.不像虚拟机(VM),容器并不需要运行专用的访客(guest)操作系统.容器们共享宿主机的(host ...

  5. 说说设计模式~组合模式(Composite)

    返回目录 何时能用到它? 组合模式又叫部分-整体模式,在树型结构中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦.对于今天这个 ...

  6. NodeJS系列~第四个小例子,NodeJs处理Get请求和Post请求

    返回目录 说在前 对于HTTP请求来说,我们通常使用的是Get和Post,除此之外还有put,delete等,而对于get来说,比较lightweight,只是对字符串的传输,它会被添加到URL地址里 ...

  7. ui-router API

    ui-router API 英文不咋地感觉找个API都要找半天, 拿好不谢 http://angular-ui.github.io/ui-router/site/#/api/ui.router

  8. 动手搭个wordpress

    看到很多人都是自己搭建博客服务器,然后一切都在自己的掌控之下,这样就不存在什么迁移,数据安全之类的问题,当然需要自己搞个空间了,不过现在都便宜的不行,$15/year,也是醉了.我不怎么写博客,但是个 ...

  9. 关于sass的介绍和基本语法

    引入 什么是sass?sass是css预处理器. 那预处理器又是什么?css本身不是一种编程语言,而预处理器是用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件. 如今主流的预处理器 ...

  10. 解析大型.NET ERP系统 20条数据库设计规范

    数据库设计规范是个技术含量相对低的话题,只需要对标准和规范的坚持即可做到.当系统越来越庞大,严格控制数据库的设计人员,并且有一份规范书供执行参考.在程序框架中,也有一份强制性的约定,当不遵守规范时报错 ...