最近接触了一个c#的项目,基本上是MVC结构,是基于asp.net的web项目。view层是多个cshtml文件构成(基本可以认为是以前的aspx文件),controller层由多个cs文件(c#代码)组成,数据层这里暂不讨论。
这个项目是这样的,我大概看了一下,view层的cshtml文件里面比如某个按钮会链接到js文件中的某个函数,然后这个函数会提交post请求或者get请求,然后就会链接到controller层的cs文件中的那个对应的函数了,之后就是数据处理然后返回。
现在有以下几个困惑:
1,我不知道上面讲的这个流程是不是现在web开发中主流的一个前后端交互过程?
2,基于java web的jsp技术是不是也是类似于上面.net这么一个流程?jsp文件是不是就是对应于.net中的cshtml文件?不过网上说,jsp文件会包含java代码,但我在cshtml文件中完全没找到c#的代码,要么就是html,要么就是js
3,如果jsp文件中会夹杂着大量的java代码,那这个view层和controller层岂不是粘在一块了?难道不应该是jsp文件调用js,然后js调用服务器端controller层中的java文件这样一个流程吗?
4,如果说3问题中的确是jsp文件中包含大量java代码,那的确是没有很好的解耦,那我刚刚说的那个.net的项目,这样的一个流程是不是意味着前后端解耦的还不错?
5,我有点纳闷的是,为什么那个.net项目中,我一个html文件都找不到,全都是cshtml文件,然后还有大量的js文件,和cs文件(c#代码)。
谢谢各位了,我其实是个刚进入web开发这个大海里的一个菜鸟
phpcn_u15822017-05-17 10:02:59
谢邀,以下是个人愚见,要喷请轻喷:
算是。不过现在还有前后端分离
是;不是,cshtml
应该对应是java中的velocity
如果夹杂着,就会。可以使jsp对应一个servlet
是的,已经算不错了
这是一种模板,简单来说会使html的开发对我们的后端人员更加友好
PHPz2017-05-17 10:02:59
是这样的,因为有经验我做个回答:
1,你所说的链接到某个js文件包括css文件是因为在c#中定义了识别路径,不然是无法识别的。
2,cshtml为Razor语法,要求文件名称后缀为这个。
3,我并没碰到过混杂着java的.net项目。不过还是建议既然是.net就用纯c#构建吧,也方便维护。
4,你现在所有的疑惑都源自于你对后台不太了解,作为前端有时间可以学习一下Node的express框架或者koa都可以,用一下模板语法,你就会理解你现在的疑惑了。
phpcn_u15822017-05-17 10:02:59
是一个经典的前后端交互架构,但目前主流已经向 spa 方向迁移,前端负责处理更多的路由和逻辑,后端只负责提供 api 和 数据;
jsp 与 cshtml 在这个意义上可以说是一致,但细节不同;至于为什么 cshtml 里面没有 c#,是因为微软规定 View 层使用 razor 引擎,后缀是 cshtml, 里面除了标准 html 和 js ,还可以使用 razor 语法 (注意并不是 C# ), 但是按当前的趋势,越来越多人不使用后端生成页面,而是直接在前端处理,所以很多 cshtml 里面没有 razor 语句;
jsp 夹杂 java 是类比与 asp ,属于淘汰技术, 题主已经接受了 mvc 的理念, 提出的疑问是对的,所以现在没人这么干了;
是的;
因为是微软规定的,具体原因看2;html 文件也是可以存在的,但用 cshtml 可以默认与 controller 绑定,更方便;
習慣沉默2017-05-17 10:02:59
这个问题是前后端的分离。现在主流的都是MVC三层分离。
至于你说的JSP其实是java早起的在html里面嵌入java代码的一种表现形式。现在已经慢慢弱化这种使用方法。