node 的几个问题

2019-05-29 10:46:34 +08:00
 Maxzel

1.node 怎么使用多线程

2.node 上传文件有比 multer 更好的方案吗

3.前端点击按钮上传图片之前如何实现图片预览

4.被 python 党喷 js 就是个辣鸡,应该怎么怼

4993 次点击
所在节点    Node.js
16 条回复
whypool
2019-05-29 10:52:47 +08:00
cluster
传文件这个中间件挺好用的
预览和 node 有鸡毛关系,直接去看 filereader
菜是原罪,和语言无关
Bijiabo
2019-05-29 10:56:05 +08:00
@whypool 最后一句好精辟
lisia
2019-05-29 11:01:47 +08:00
1. 使用 worker_threads
3. 前端预览可以直接前端实现, 使用 canvas
libook
2019-05-29 11:19:13 +08:00
1. Node 现在多线程是试验阶段,不过已经离稳定发布不远了,现在最新版 Node 已经不需要加 flag 就可以使用 https://nodejs.org/api/worker_threads.html 如果对稳定性(主要是 API,程序已经很稳定了,不保证正式发布前 API 是否会做调整,不过大概率不会有大变动)要求不严格可以开始用了。或者可以去找一些 Web worker 的其他方案。
如果接受多进程方案的话,Cluster、Chield Process 都很稳定,可以根据自己的需要使用。
2. 没抠过这个,用得比较多的方案是上传 SDN 再从 Node 上下载,这样对弹性分布式+消息总线的系统友好一些。
3. 跟 Node 没关系,个人没怎么做过,不过有思路是用 HTML5 API 读取本地文件然后再用 Canvas 画出来,这样可以支持上传前编辑,最终上传的应该是页面内存里的那个编辑过的图片数据。可以找找有没有相关的前端组件。
4. 软件工程没有银弹,在不同的地方使用最合适的技术栈才是最明智的。
azh7138m
2019-05-29 11:25:16 +08:00
1. 上次看到一个用 https://www.npmjs.com/package/fibers
是一种 coroutine,被 https://www.npmjs.com/package/sass 使用,Dart 写的,很有趣的用法

4. 电子竞技(
marsgt
2019-05-29 11:31:30 +08:00
2 和 3 可以放到客户端那边去做,亦即前后端分离。
2 的核心原理实际上就是 HTML5 的文件上传,3 可以调 FileReader 接口 new 个 Image 然后直接填充,当然也可以用 Canvas (如果项目里没大规模用 Canvas,我觉得还是前者比较有优势)
4 ……这种人懒得喷,就让他继续辣鸡下去好了。
marsgt
2019-05-29 11:34:26 +08:00
关于 2 和 3,可以参考 https://segmentfault.com/a/1190000006718963
原文用了个 js 插件来处理图片兼容性的问题,不过上传和预览的大致原理都有涉及。
TomVista
2019-05-29 11:44:54 +08:00
4.告诉他 php 是世界上最好的语言.
ochatokori
2019-05-29 11:49:21 +08:00
4 支持他把他培养成大煞笔
ben1024
2019-05-29 12:23:51 +08:00
4. 菜是原罪 (PHP 是世界上最好的语言)
redbuck
2019-05-29 13:04:04 +08:00
lbw
2019-05-29 13:29:30 +08:00
3. 将上传的图片转换为 base64, 再用 img 标签直接预览
alw
2019-05-29 13:52:03 +08:00
4. 是是是,你说得对,Python 语法容易阅读,并且能做大数据,人工智能啥的,js 语法就是个垃圾,性能坑的要死,要不是前端必须要用它,我才不想用呢。 我现在呀,就后悔没学 Python,不然现在月薪应该就有 50K 了吧。
l1nyanm1ng
2019-05-29 14:30:14 +08:00
@alw 厚葬友军
jasonlwy
2019-05-29 14:43:28 +08:00
3 , express + ejs 的话,上传本地服务时候,把图片存在 session 中,提交表单时候,delete session.img
BlackHole1
2019-06-04 22:33:21 +08:00
3.直接走 blob 协议就好
4. js 确实辣鸡

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

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

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

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

© 2021 V2EX