js 写后台, 是不是有点先天残缺?

2022-07-28 11:21:39 +08:00
 bthulu

最近在做一个面向企业内部生产运输的系统, 生产排程及排车排程算法异常复杂, js 原生容器字典非常简陋, 也缺乏对容器字典进行各种排序过滤反查的手段.
像 java 原生就支持多种集合字典, 不行还有 guava 来凑.
C#的 Linq 就更不用说了.
这几天 js 写的越多就越怀疑人生, 数据处理稍微复杂一点的啥都要自己写工具函数来干, 是不是我水平太菜了, 实际 js 是有简单现成的进行复杂的数据处理的办法的?

8449 次点击
所在节点    JavaScript
79 条回复
think2011
2022-07-28 15:22:36 +08:00
@byzf 有道理 哈哈哈
banricho
2022-07-28 15:24:49 +08:00
我觉得主要还是人的问题
FallenMax
2022-07-28 15:57:27 +08:00
前后端都用 js ,有一些非常方便的特性:

0. 前后端可共用一些基础业务类型 /工具,代码一致性高
1. 前后端通讯不需要定义 http 接口,实现一个简单的 rpc 就可以像调用方法一样调用后端 API ,并且类型安全
2. 设施准备良好后,项目启动快,改动前后端代码都触发浏览器刷新,生产力之选
forgottencoast
2022-07-28 16:04:42 +08:00
@zhuangzhuang1988
#19 的 @blindie 的说完全能搞定呀。
lbunderway
2022-07-28 16:10:29 +08:00
觉着是楼主自己不知道
v135ex
2022-07-28 16:17:13 +08:00
开惯了特斯拉在开三缸手动挡,当然会觉得先天残缺
qrobot
2022-07-28 16:21:09 +08:00
@adoal #20L 我仿佛听到了什么笑话 padStart, padEnd 不能用吗?
qrobot
2022-07-28 16:23:12 +08:00
@fanyer #36L 别人删个库有什么大惊小怪的, 自己项目中不锁版本吗? 没有 nexus repository 吗?
DingJZ
2022-07-28 17:15:52 +08:00
在现阶段,我国社会的主要矛盾是人民日益增长的物质文化需要同落后的社会生产力之间的矛盾。
jamosLi
2022-07-28 17:44:47 +08:00
首先需要说明的是 js 有很多版本,其次要说明的是 js 本身只是一个脚本语言,从出生到现在用的比较多的是在前端领域。在后端的应用也是在 node 出来以后。你提的一堆数据结构,或者业务场景即便在 java 中也不是一开始就有的吧。你拉着一个英国人问他你是不是天生在说中文上有缺陷,这是不是有点扯,一切都是在进步的。一个复杂的系统要想追求机制的性能,很难一套语言一把梭。并且类似于 java94 年出来,到现在生态已经非常繁荣,js 搞后端也要从 node 出来的 09 年算,并且生产应用规模还不是很大。总之这么一个提问非常没有意义。虽然 java 又臭又长,但是最好还是能把 js 慢慢改成 ts 。
guxin0123
2022-07-28 19:08:32 +08:00
js 也有 linq 插件可以用
urnoob
2022-07-28 21:24:26 +08:00
就算用 js 写好了 后期维护你自己都看不懂当初的代码。js 只适合拿来写页面
iikebug
2022-07-28 21:48:46 +08:00
@zhuangzhuang1988 js-sdsl 一个参考 C++ STL 实现的 JavaScript 标准数据结构库,你是说这种数据结构嘛?
hangbale
2022-07-28 21:59:51 +08:00
每种语言设计之初都有明确的方向和目的
js 被设计成浏览器里运行的语言,它的特性严重依赖各大浏览器厂商的支持程度,而且各家实现方案还不一样
曾经浏览器兼容性问题频频出现在前端面试中,就很搞笑
即便如今 NodeJS 流行开来,也是得益于 JS 开发者多,门槛低,底下用 C*糊了个 V8 和 libuv 获得了不错的性能。
JS 的特性也越来越多,可惜大部分用不到,专业的场景也有比它更好的语言
就像我花 50W 改装一台思域 Type R ,看起来不错,0 百加速甚至媲美超跑,但是呢,上了赛道被 911 吊打,去夜店被兰博基尼吊打,只有红绿灯起步的瞬间能让大家另眼相看
hLc1
2022-07-28 22:22:31 +08:00
@iikebug js 有类型之王的 typescript ,不存在看不懂
zhuangzhuang1988
2022-07-28 22:46:41 +08:00
@iikebug 是的 还有楼主附录的那些,都是 js 缺少的

好像记得 d3.js 作者 还写了个 支持不关注 key 大小写的 map 结构的 js 库 具体忘记了
CptDoraemon
2022-07-28 23:41:27 +08:00
害,日子不还得过吗
咱 leetcode 周赛都拿 js 来写,一个 heap 我在那糊了 20 分钟
别人引个库两行完事了 😭
wxlwsy
2022-07-29 00:10:24 +08:00
一时写一时爽,写多了就是火葬场. 任何弱类型动态语言都"不太适"合写"复杂业务"的后台.
dayeye2006199
2022-07-29 00:44:40 +08:00
我做过很多类似 lz 这样的需求。首先拿 js 写这样的重计算需求是不太合适的,一是数据结构孱弱,二是缺乏这类算法的轮子。

常见的做法是用 Cpp 或者 py 配合 https://developers.google.com/optimization
这样的轮子搓一个封装好的函数出来。

然后用 RPC 或者消息队列这样的语言中性的方法暴露接口出来,取决于是需要同步或者异步调用。

前端再调用这样的服务。
DeWjjj
2022-07-29 00:44:47 +08:00
可它真的包多...
他是世界上包最多的...

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

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

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

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

© 2021 V2EX