前后端分离,前端一定要用 NVVM 之类的,比如 vue/react 东西吗?

2020-04-23 14:10:03 +08:00
 youcanwin8099

做 web 后台管理程序(CRM 之类的),用 jquery+bootstrap 能否一样做到前后端分离?

就是不让后台的 java 接口来输出 html+jquery+bootstrap,而是前端 html+jquery+bootstrap+css 读取后台 java 接口。

有这种类型的、比较典型的、也比较流行的框架吗?

10592 次点击
所在节点    Vue.js
92 条回复
geying
2020-04-24 03:31:30 +08:00
从技术上讲用啥都能前后端分离
从项目上讲项目经理叫你用哪种分离你就用哪种分离
从个人角度讲学习成本低使用简单维护方便的方式可以节省自己的时间成本

v 站现在怎么这么多杠精
shuding
2020-04-24 03:45:28 +08:00
Next.js: https://nextjs.org

本质上是前端( React )框架,但完全支持后端功能(大概是 React + Express 集合体)。在 pages 下面新建一个 /api 目录,里面就可以直接放 Node.js API 接口了。
最有趣的一个优势是:写 TS,前后端可以共享接口的 Typing 。

例子: https://github.com/zeit/next.js/tree/canary/examples/api-routes
cheng6563
2020-04-24 08:49:06 +08:00
老早之前用 ext.js 也是前后端分离了
areless
2020-04-24 08:55:31 +08:00
说没有 js 框架干不了富应用,操作 dom 会卡的。真想把你们通通扔回二十多年前去九城玩网页版的烧菜做饭狩猎挖矿,前端全 js 实现,ie4.0 流畅。无知
alertZ
2020-04-24 09:26:55 +08:00
@youcanwin8099 看项目需求,有时候项目要求单页面开发,我懒得用 webpack 就会使用 angular 。现在用 webpack 也是开发多页面也不是单页面。webpack 可以帮我解决很多事情,比如 CSS 兼容性问题,代码复用,包管理等等。我现在是 webpack+JQ+Bootstrap 来搭配。webpack 作为管理,JQ 作为 ajax,bootstrapUI 。当然你如果想用模板渲染,也有对应的包可以用。
youcanwin8099
2020-04-24 09:45:30 +08:00
@alertZ,哦,那你的这个 webpack+JQ+Bootstrap 能否有兴趣和时间 形成一个框架类的东西,放到 gitee 上?
SilentDepth
2020-04-24 09:56:54 +08:00
@youcanwin8099 #66 决定用 jQuery 的话,要什么 Webpack,Parcel 多香~
windychen0
2020-04-24 09:59:21 +08:00
@youcanwin8099 我觉得你只是单纯的想找个 admin,http://ace.jeka.by/index.html
Chenamy2017
2020-04-24 10:03:32 +08:00
没有哪个是必须的,在你用没用这个技术前你最好先去了解这个技术,了解它的优势和不足,选择最适合你的。如果没有了解和尝试就做选择太不客观。说回 VUE/REACT 这些,确实效率很高,谁用谁知道。
alertZ
2020-04-24 10:30:10 +08:00
@youcanwin8099 哈哈哈,我技术不高,就不献丑了。
IsaacYoung
2020-04-24 10:39:06 +08:00
又开始了吗
hjdtl
2020-04-24 10:57:50 +08:00
不一定要用 MVVM 类型框架,也没必要学习这些框架,徒增开发难度。
应该使用 jQuery,方便快捷。
vivipure
2020-04-24 11:05:53 +08:00
可以自己封装一个 spa 框架,原理就那样,配上模板引擎和 webpack 。其实也挺方便的
youcanwin8099
2020-04-24 13:09:00 +08:00
@SilentDepth ,这个 ACE ADMin(”http://ace.jeka.by/index.html“)以后去了解了。反正我从这个帖子了解到了:用 webpack+jquery+bootstrap 一样可以实现目的,或许更轻量级。这个作为一个有经验的、高阶的前端,他在做项目时,一定会酌情考虑,而不是一味采用时髦技术造成成本飙升,这是一个技术问题,也是人品问题,也是项目管理问题。。。
如果用 webpack+jquery+bootstrap,每次发布前,需要 npm 打包吗?如果要打包,我觉得还是费事。我认为那种打包行为真是一个耗时、带来项目成本飙升的一个重要因素。
sima675
2020-04-24 13:18:35 +08:00
这样也能吵起来.....喜欢什么就用什么 只要自己用的舒服
youcanwin8099
2020-04-24 13:20:31 +08:00
我之所以这样,是我本人不是一个前端,但是目前卷入了一个项目,然后前端和 PM 用了 ant design vue,但是我我感觉很费事,自己搭建环境跑测试也很费劲,前端开发一个任务花的时间很长,效果也不好,找别的另外一个做过很多年的前端但不懂 MVVM 的接手,我看他也要花很长时间。但是问他们有什么更好的方案,又不说,也不说这个 ant design vue 好,或不是不好。弄得我一个后台架构师一筹莫展。。。
SilentDepth
2020-04-24 13:27:41 +08:00
@youcanwin8099 #74
使用 Vue 或 React 不算赶时髦啊。比如 Java 应用开发,用 SpringBoot 怎么就算赶时髦了呢。即便从成本角度去考虑,jQuery 要求使用者手动完成 DOM 树的构建,维护成本反而比 Vue 或 React 高。
现代前端开发基本上都需要发布前构建的(有它的固有需求在,你不能单纯把它看做耗时成本)。如果你不想引入前端构建流程,那用不用 Webpack 区别不大,同时还要注意不要使用 ES6+ 特性(如果你需要支持 IE )、处理好依赖的引入次序。
SilentDepth
2020-04-24 13:31:53 +08:00
@youcanwin8099 #76 术业有专攻,现在的前端自成一个庞大的体系,就跟后端自成一个庞大的体系一样(不然怎么还会有「前端架构师」这么个职位)。「做过很多年的前端……要花很长时间……又不说(更好的方案)」,恕我直言,这同志水平不行。如果这个项目已经用了 Ant Design + Vue,我可以很负责任地告诉你,这个开始没有毛病。接下来,逢山开路遇水架桥,有问题一个个解决便是。这时候改换技术栈反而更有风险。
chingli
2020-04-24 13:37:47 +08:00
非前端,借此话题,针对目前手头上的一个项目,大家看看我这种技术选择对不对:

项目需要从后端传递过来一个类似 GeoJSON 或 TopoJSON 格式(其实是完全自定义的格式)的 JSON 文本(很大),在浏览器端生成对应的 JS 对象实例,并据此使用 SVG 技术进行类似地图一样的可视化显示。由于是监控类项目,要借助 WebSocket 保持长连接,该对象实例不能在网页渲染后销毁,而是一直存在,并且根据后续传来的 JSON 文本对其进行更新。如果用 VUE/React 类技术,则浏览器端就会长久有以下三层了:

JS 模型对象 ⇔ 虚拟 DOM ⇔ 真实 DOM

但由于 JS 模型对象的格式是固定的,了解其中各个元素应该对应的 SVG 元素(可建立关联),且从服务器端传来新数据时必须要比较新数据和已有的 JS 模型对象的区别,因此觉得不用虚拟 DOM 会更好。即直接 DIFF 新旧 JS 模型对象,直接根据 JS 模型对象的更新来更新真实的 DOM 。这样省去了虚拟 DOM 层,省去了对虚拟 DOM 的 DIFF,或许能使性能大大增加。

或许对于我这种目标纯粹的单页面应用情况,会经常遇到,如 Google Docs 。不知道我这种不使用 VUE/REACT 类框架的技术选型对不对?
SilentDepth
2020-04-24 14:29:39 +08:00
@chingli #79 VDOM 层的内存占用可以忽略(除非是需要锱铢必较的场景)。如果你的 JSON 结构与 DOM 结构对应性很高,为什么不把 diff 的过程交给 VDOM 来完成呢?综合性能很可能比你手写的高。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/665319

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX