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. P5048 [[Ynoi2019模拟赛]Yuno loves sqrt technology III]

    为什么我感觉这题难度虚高啊-- 区间众数的出现次数- 计算器算一下 \(\sqrt 500000 = 708\) 然后我们发现这题的突破口? 考虑分块出来[L,R]块的众数出现个数 用 \(\text ...

  2. 一直报找不到function,然后又不为null。最后发现是个数组。哭死。

    今天写代码,报找不到function.然后又不为空.最后发现是类型不对.因为是数组,所以不能用node.function(),而应该用nodeArr[0].function.错用前者会找不到funct ...

  3. 【巨杉数据库SequoiaDB】巨杉再获企业级认可,分布式数据库领跑“一亿中流”

    据全球最具权威的IT研究与顾问咨询公司 Gartner 预测,DBMS(数据库管理系统)市场从2017年到2018年增长了18.4%,达到461亿美元,这是有史以来最大幅的增长,并有望在2019年超过 ...

  4. 【剑指Offer】47、求1+2+3+...+n

    题目描述: 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 题解:递归实现/利用Math //利用短路 ...

  5. AtCoder Beginner Contest 068 ABCD题

    A - ABCxxx Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement This contes ...

  6. Wannafly Camp 2020 Day 6K 最大权值排列

    按照样例那样排列即可 #include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; if( ...

  7. linux - mysql 异常:Ignoring query to other database

    问题描述 Ignoring query to other database(忽略其他数据库查询) 问题原因 登录方式错误,登录命令用的是 “mysql -root -p”,应该用命令 “mysql - ...

  8. ArcMap空间参考警告窗口关了怎么重新打开

    有时候加载的数据没有空间参考或者空间参考和数据框的空间参考不一致,都会弹出警告的对话框 如果选中不再向我发出警告复选框,之后又想显示它,可启动 AdvancedArcMapSettings.exe 工 ...

  9. Python入门7 —— 赋值运算符补充

    增量赋值 x = 10 x += 1 #就是:x = x+1 交叉赋值 a = 10 b = 20 print(a,b) temp=b # temp=20 b=a # b = 10 a=temp # ...

  10. 2018-2019 ACM-ICPC, Asia East Continent Final L Eventual … Journey

    #include<iostream> using namespace std; ; int cnt[MAX]; int ans[MAX]; int a[MAX]; int main() { ...