博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在ASP.NET MVC项目中使用React
阅读量:5089 次
发布时间:2019-06-13

本文共 1412 字,大约阅读时间需要 4 分钟。

(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)

题记:最近在开发钉钉的微应用,考虑到性能和UI库的支持,遂采用了React来开发前端。

目前我的项目是基于ABP框架的ASP.NET MVC/WEB API作为后端,AngularJS作为前端。但是发现钉钉官方的UI(SaltUI)是基于React封装的,另外AmazeUI的Touch版本也是React封装,也考虑到React性能更优,同时移动端网页的前端业务逻辑不会太复杂,就打算使用React来开发钉钉微应用页面。

ReactJS.NET介绍

要在ASP.NET MVC中集成React最简单的方式就是使用ReactJS.NET()。它提供了如下几个特性:

1,即时编译JSX文件为JS:在HTML中直接引用JSX文件,ReactJS.NET会自动把其编译为JS并缓存在服务端。这种方式特别适合开发过程。如:

 
 

2,通过流行的压缩和合并工具把JSX编译为JS:可以使用Cassette()或者ASP.NET内置的压缩合并特性,也可以集成Webpack或Browserify。如:

 
 

3,可以实现服务端组件渲染:可以利用访问点组件渲染来加快初始页面的加载。如:

 

ReactJS.NET安装和使用

要安装也很容易,根据你项目ASP.NET版本不同有所不同:

1,对于ASP.NET MVC 4 and 5,Install-Package React.Web.Mvc4

2,对于ASP.NET Core,Install-Package React.AspNet

3,对于ASP.NET MVC 3,Install-Package React.Web.Mvc3

4,如果要使用Cassette,还要Install-Package Cassette.React

5,如果要使用,还要Install-Package System.Web.Optimization.React

详细的使用方法可以浏览ReactJS.NET的教程:

我的技术选择和集成方式

我的项目使用的是React.Web.Mvc4,没有使用即时编译直接就利用System.Web.Optimization.React来和内置ASP.NET压缩合并功能集成(因为项目其他部分就用的这个),没有使用服务端渲染(因为服务端渲染需要在ReactConfig.cs文件中逐一添加jsx文件,我有空可能会pr一个添加jsx文件夹的commit,那样会方便一些)。我的大致步骤如下:

1,注册一些Bundle,来包含React的js、UI的js和自己应用的jsx,如下:

 

其中,我在app js部分,通过BabelBundle来实现合并过程进行jsx编译,且我只是包含了jsx的目录,这个目录中只需要入口组件和依赖组件,无需app.jsx这样的文件。

2,添加一个专用的Controller,在Action中返回相应的View并传递封装了所有props内容的ViewModel,如下:

 

3,在视图文件中引用相关的Bundle,并初始化React入口组件,如下:

 

至此,React就可以完美的和ASP.NET MVC融合在一起了。之前在前端如何调用后端的api,现在在React还是怎么调用。

转载于:https://www.cnblogs.com/redmoon/p/5810252.html

你可能感兴趣的文章
Linux(Centos)之安装Redis及注意事项
查看>>
重构视角(摘抄)
查看>>
【H5 音乐播放实例】第一节 音乐详情页制作(1)
查看>>
listView注意的地方
查看>>
Filter案例
查看>>
装饰器与子类化
查看>>
学习笔记(六)——数据表的查找功能、数据行、数据列的综合应用
查看>>
Java集合中List的Sort()方法进行排序
查看>>
JS制作一个通用的商城版历史浏览记录
查看>>
浴谷金秋线上集训营 T11738 伪神(树链剖分)
查看>>
javascript基础01
查看>>
iOS开发个人独立博客收集
查看>>
JSONArray和JSONObject的简单使用
查看>>
北京大片《全球热死》正在上映!
查看>>
多进程复习
查看>>
Centos 安装golang beego
查看>>
JavaScript内置对象 以及和 内置对象相关的语法
查看>>
framespacing="10"和border="10"在frameSet中有什么区别?
查看>>
JavaScript中的字符串连接
查看>>
函数定义的三种方式
查看>>