1.权限管理(React)

2.Vue ,React ,Angular多个服务器下部署同一个web项目,只需打一个包

3.Reactjs是否适合做 pc 端 web 网站?为什么?

权限管理(React)

react怎么获取电脑系统-react-desktop

公司需要做一款产品,里面需要有一个平台用来类似手机APP似的房子不同的子产品入口(类快捷图标),各子产品间实现单点登录,创建不同账户级别,可以分配产品权限,产品权限,产品操作级权限。

本产品,最后权限做了双重控制,前后端都控制, 本文只从前端角度进行总结。

账户所拥有的产品权限信息,登录后后台将会返回数组形式,每项包含一些信息,至于这些产品信息管理,也在后台系统中进行统一管理配置,之后将会在权限提及。

其中,主要是url来进行跳转,这里有个问题:url里的路径有时是同一域名下的产品,也可以是一些以前的产品路径,这就需要进行url判断

当然,有人会问,如果直接进入一个产品地址,如何判断登录呢?

我们前后端约定好一个未登录code码 401

其实前端也将登录后的用户信息存入了localstorage, 退出登录后将会销毁,这也能进行登录验证,但是不是很准确;当然这里其实还得进行路由权限验证,这下面将会讲到。

路由权限设计有些考虑的问题:

后台系统管理设计

管理用树形结构,同级叶子可以进行拖拽调换位置展示导航菜单,每级叶子均可以添加叶子,删除修改。叶子的信息这里有些特有的设计:

登录后,对显示菜单进行渲染后,要对访问的路由进行访问权限审核检查:

操作权限管理界面

操作权限主要是设计了一个webkey配置,方便前端的操作权限的检测。操作权限是进行统一管理的,路径管理下可以进行操作权限的勾选配置。

操作权限由于涉及到按钮级,也就是组件级,不能在每个页面单独配置,那样需求改动,将会陷入深坑。我用的 HOC 高阶组件的封装套路:

界面中使用也是很简单:

这样用HOC进行封装,可以进行一些别的需要扩展:加入操作动画,改变样式等。

不同的用户登录以后,对数据范围的权限是有限制的,那些能够访问,那些不能访问在产品设计的是就已经定义好,当访问一个当前登录用户无权访问的 API 或者数据的时候,API 响应中会返回对应的 code, 这个 code 是提前就前后的约定好的值。

这部分权限需要在 xhr api 层调用接口时进行数据权限的判断

总结一下,其实前端在做权限控制的时候,依赖于后端 API 返回的配置信息,所以在权限设计,路由设计,数据结构设计的时候,前后端一定要约定好。

Vue ,React ,Angular多个服务器下部署同一个web项目,只需打一个包

前言:

有这样一个需求,需要在多个不同的服务器下部署同一个前端项目,(正常操作是每一台服务器都根据不同的IP地址build一个包依次部署,非常繁琐,因此简化为多个环境只需要用打一个包即可)

解决方案:首先需要服务器设置系统环境变量,在打包后部署到服务器,通过运行.s件来获取环境变量set到项目中

以下是vue项目为例, React ,Angular 均可以使用

1,在项目根目录创建 run.sh 文件

注解:

第一行 apiUrl为当前系统配置的系统环境变量名称

第二行 将获取到的ip地址赋值到打包后的dist文件下index.html下的body中

2,项目中使用

3,将打包后的dist文件上传到服务器后,运行 run.sh,运行完成,页面就可以正常请求啦~

运行命令如下,也可手动运行

重要:需要在部署的服务器提前配置系统环境变量API_URL,否则获取不到

Reactjs是否适合做 pc 端 web 网站?为什么?

是的,Reactjs非常适合用来制作PC端的web网站。以下是几个主要原因:

1.**组件化**:Reactjs是基于组件的库,这意味着你可以创建复用的UI组件。这使得开发变得更加高效,代码也更易维护。

2.**VirtualDOM**:Reactjs使用虚拟DOM(DocumentObjectModel)来提升性能。每当状态发生改变时,Reactjs创建一个新的VirtualDOM,与之前的VirtualDOM进行比较,然后确定实际浏览器中需要进行哪些更改,这大大提高了应用程序的性能。

3.**灵活性**:Reactjs是一个库而不是框架,所以它给你很大的灵活性,允许你选择其他库或框架(如Redux、MobX等)来配合使用。

4.**社区和生态系统支持**:由于Reactjs有庞大的开发者社区和强大的生态系统,你可以找到大量的预构建组件和有用的工具,以及丰富的学习和问题解决方案。

5.**一次学习,随处编写**:React的理念是“Learnonce,writeanywhere”,意味着你只需要学习一次React,就可以在Web和移动端进行开发,对于团队来说这样可以节省大量的学习时间。

总的来说,ReactJS在构建复杂、高性能且可维护的PC端web网站方面是一个非常好的选择。