Razor能做的JS大部分能做,不是全部。比如说,如果你用了Entity Frame一类的ORM的时候,Razor可以直接绑定数据库数据,但JS就不可能直接访问数据库——必须通过其他web service去开一个另外的连接来取数据。不过总而言之,Razor和JS的主要区别是服务器端渲染和客户端渲染的区别

我们先从浏览器发展的历史说起(现在开始吹牛逼)刚开始的时候浏览器只认识html和css,只会呆萌的将它们渲染成我们看到的图像和文字(其实最开始连css都不认识,但是与本文无关),通信过程也简单,浏览器请求服务器已写好的html和css,服务器发给它,然后浏览器渲染呈现,一切都是那么和谐。 后来人们觉得网页太安静了,就想不如加点动画吧,这就有了javascript江湖人称js,它能在浏览器运行并动态的去修改html,当然仅限于你自己的浏览器内的数据,这个过程和服务器无关。现在的通信过程也无非是服务器除了html css 再多发送一份js罢了,于是此时我们能看到了跑马灯,看到了晃来晃去的小广告。 后来一个可怕的需求来了,用户需要登录…更可怕的是登录之后显示的内容都是不同的,比如邮箱…这个时候服务器就需要针对每个用户去生成专有的html,一大批解决方案也应运而生,早期的asp,php,java也有相应的解决方案,c#作为世界上最牛逼的语言(有人不服请另外开贴来辩)当然也得有最牛逼的方案,介就是razor…现在我们的通信过程就是 浏览器请求并告诉服务器我是谁,服务器去查询数据库得到属于你的数据,razor去根据数据生成只属于你的html,然后再发送给你,浏览器职责不变还是根据收到的html css js 去渲染页面。 但上述过程存在问题,服务器处理这么多请求,生成这么多专属页面好累的有木有?既然js可以去动态生成html那干脆将数据发送给js让它去浏览器上自行去生成html不就得了?而且js去修改html还能做到平滑过渡局部刷新,不存在整个网页闪来闪去了,提高了用户的体验有木有…所以自从谷歌地图这么搞之后,几乎所有网站都开始了这个过程…但是别忘了js是干小广告起家的,业务一复杂有点hold不住啊,所以人们开始推出js的框架 前期的jquery 现在的angular, react,vue,都是试图去规范化js的用法以满足大型项目复杂逻辑的需求,不至于写跑偏了…

最大区别就是Razor是http://ASP.Net的框架引擎,用户在后台生成html然后返回给客户端,Javascript是直接在客户端处理的一种语言。Razor中可以使用javascript, 而Javascript无法使用Razor.Javascript本质上是一种操作Html的语言,对于后台逻辑和数据库的访问,要通过call restful api来做。Razor本质上是一个框架引擎,让你更方便的使用ASP.Net, 而http://ASP.Net作为一种后台web语言,它处理你的请求,访问数据库,然后把结果生成一个html,返回给客户端。

ASP.NET的 Razor引擎和JavaScript是一种什么关系的更多相关文章

  1. ASP.NET,C#后台调用前台javascript的五种方法

    C#后台调用前台javascript的五种方法 由于项目需要,用到其他项目组用VC开发的组件,在web后台代码无法访问这个组件,所以只好通过后台调用前台的javascript,从而操作这个组件.在网上 ...

  2. [asp.net mvc 奇淫巧技] 02 - 巧用Razor引擎在Action内生成Html代码

    在web开发中经常会遇到在内部代码中获取Html,这些Html是需要和数据进行一起渲染.并不是直接把Html代码返回给客户端.这样的做法有很多应用场景,例如分页.Ajax一次性获取几段Html片段.生 ...

  3. MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式

    MVC的验证(模型注解和非侵入式脚本的结合使用)   @HtmlHrlper方式创建的标签,会自动生成一些属性,其中一些属性就是关于验证 如图示例: 模型注解 通过模型注解后,MVC的验证,包括前台客 ...

  4. 独立使用Asp.net Core 的razor模板 (一):Razor引擎的一些细节

    由于最近需要写一些界面稍微好看点的Winform程序,如果用原生控件,,想要达到好看的程度,需要花费比较大的功夫,因为之前使用过CefSharp,因此发觉如果是使用CEF+Html的方式,界面可以相对 ...

  5. (转)Asp.Net Mvc视图引擎Razor介绍

    Asp.Net Mvc视图引擎Razor介绍 1.Razor介绍 程序园原创,转载请注明:http://www.kwstu.com/ArticleView/dabaomvc_2014082408205 ...

  6. Asp.net MVC 视图引擎

    Asp.net MVC视图引擎有两种: 1.ASPX View Engine 这个做过WebForm的人都清楚 设计目标:一个用于呈现Web Form页面的输出的视图引擎. 2.Razor View ...

  7. 实例演示 kino.razor (前端 Javascript 模板工具,Razor 风格)的使用

    前言 对于习惯了 ASP.NET MVC Razor 模板引擎的人来说,比如我,一直在寻找前端 Javascript 端的 Razor 模板工具.这之前,我也了解到很多Javascript 端的模板工 ...

  8. ASP.NET没有魔法——ASP.NET MVC Razor与View渲染

    对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的界面呈现工作是由浏览器完成的,Web应用的原理是通过Http协议从服务器上获取到 ...

  9. 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

随机推荐

  1. jenkins - docker搭建jenkins

    jenkins镜像拉取 docker pull jenkins/jenkins 为jenkins镜像分配容器 docker run -d --name jenkins \ -p 8080:8080 \ ...

  2. php 对象、json 、XML、数组互转

    对象转json $json=json_encode($postObj,JSON_FORCE_OBJECT); json转对象 $obj=json_encode($json); json转数组 $arr ...

  3. centos7添加多个网段

    # service network restart是重启所有网卡.例如下面的例子:>ifconfig eth0 up|down>service network restart|start| ...

  4. [CQOI2009] 中位数 - 桶

    给出 \(1~n\) 的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是 \(b\).中位数是指把所有元素从小到大排列后,位于中间的数. Solution (这个题为什么会被打上数学标签? ...

  5. Spring Boot2 快速入门教程-到上手

    Spring Boot2 教程合集 入门 纯 Java 代码搭建 SSM 环境 创建一个 Spring Boot 项目的三种方法 理解 Spring Boot 项目中的 parent 基础配置 配置文 ...

  6. 基于 Octotree 的[码云]文件树插件

      之前一直在用github上面的Octotree,现在在用gitee(主要是github的访问速度太慢了).   现在主要转到了gitee上面了,那么有没有基于 Octotree 的[码云]文件树插 ...

  7. COS上传图片和显示图片

    写这篇文章之前,我也是刚刚实现COS上传和显示图片.我百度了好多相关文章,COS上传图片成功的文章不少,上传后显示图片的文章几乎没有.于是写一篇记录下. COS上传图片推荐链接:https://blo ...

  8. dijkstra算法为什么不能处理带有负边权的图

      1 2 3 1 0 8 9 2 10 0 10 3 10 -2 0 先看样例再解释,看邻接矩阵会发现, 如果用dijkstra算1-2的最短路因为贪心思想所以得到的结果是8,但明显可以看到1-3- ...

  9. go语言 实现哈希算法

    验证结果网址 http://www.fileformat.info/tool/hash.htm "golang.org/x/crypto/md4"不存在时,解决方法: cd $GO ...

  10. CodeForces - 645 C.Enduring Exodus

    快乐二分 用前缀和随便搞一下 #include <cstdio> using namespace std; ; int p[N]; ; inline int msum(int a, int ...