CLMan 最近的时间轴更新
CLMan

CLMan

V2EX 第 580446 号会员,加入于 2022-05-08 13:39:26 +08:00
今日活跃度排名 21745
根据 CLMan 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
CLMan 最近回复了
23 小时 49 分钟前
回复了 shanejix 创建的主题 程序员 后端小白如何上手近 20 年的 Java 项目
20 年的自研后端框架,除了坑还是坑,应该是外包公司吧,最喜欢搞这种过时落后还当个宝的东西。

如 4 楼所说的,这种框架别浪费时间去研究,多问别人怎么解决问题,能完成任务就行。

如果想走技术路线,那就多接触主流技术,早日跳槽。
Vue 项目用 electron,wails,tauri 等 web ui 解决方案打包成桌面端程序。

java 项目有技术就用 graalvm 编译成 exe ,没技术可以安装 JRE/JDK ,或者绿色版 JRE/JDK 。

Nginx 是什么鬼,本地部署哪里需要 Nginx 。

这其实就是 shadowsocks,clash for windows,clash verge 之类翻墙软件用的解决方案,去看看它们的源码就懂了。

唯一麻烦点就是 java 程序需要虚拟机,比纯 exe 麻烦点,但你想想,IDEA 还不是照样自带了个虚拟机。
------
归根到底,你这项目最佳的部署方案就是桌面端 GUI 程序。
相应的功能在 chrome 下能通过吗,你先按照 Chrome v3 的相关文档来开发,最后再考虑兼容性问题。
@CLMan 补充:
1. “函数内部代码会貌似会同步执行”,我理解了,你指的内部代码会作为一个整体被执行,这是正确的。返回 Future 是语法层面的规定,表示这个异步函数的异步执行情况。正如我上面所说的,返回结果会自动包装为 Future ,比如 B 函数,熟练以后是这样:

```dart
//省略上面内容
return "请求到的数据:" + result.toString();
```
1. JS 的 async 会将返回结果自动包装为 Future ,Dart 也是类似的原理。异步函数会异步执行,返回结果为 Future 类型,跟里面是否使用 await 没什么关系。

你所认为的同步,其实只是因为你这测试用例过于简单,只有 A,B ,给你带来的错觉。

2. 你为什么会认为“遇到 B 函数的 Future.delay 时直接返回了 Future 对象给 A”,你用打印下结果就知道不是你想得那样:
//修改 A 函数的 print(B());为:
var result = B();
result.then((value) => print(value));

3. await 有两个作用:1. 让“await doSomething()”的 doSomething()异步执行( JS,DART 就是“抛事件循环”,其它语言可能就是多线程、协程等) 2. 等待 doSomething()对应的异步任务执行完成,然后再执行剩余部分。所以只有 B 执行完后,才返回执行 A 的后半部分,也就是你说的“同步调用 B 函数第一行打印语句”。

“抛事件循环”,是一种抽象化的模型,容易让人理解得云里雾里。沿用这种模型来说明,应该是先抛 B()到事件循环,再抛 A 的剩余部分到事件循环。

事实上,当 JS 和 Dart 的代码混合了异步逻辑,很难只用事件模型来描述代码的执行情况。比如,假设 B()函数里面`await C()`,那 C()是不是就抛到 A 的剩余部分后面了,岂不是 A 的剩余部分还先于 C()执行。当然,你可以再给这个模型补充很多细节,问题是这些细节就牵涉到具体的实现,比如 chrome,mozilla,quickjs 等完全可以采用不同的底层实现。

这并不是说事件模型是错误的,只是说当存在异步逻辑时,事件模型需要补充很多细节,不然就会像你一样陷入混乱,此时可以不用事件模型来理解程序的执行。

4. 不了解,我这里 IDE 提示:“可以去掉 await ,且 await 无效”。无论是还是不是,这种代码没有啥实际价值。
4 天前
回复了 iLucis 创建的主题 Python 编程小白学习 Python 研究哪本书比较好?
对于有计算机基础(熟悉其它编程语言,了解科班知识),其实官方 tutorial 入门阶段绰绰有余。

没有基础,看书容易陷入自我内耗,其实还不如看视频啥的。
6 天前
回复了 tlerbao 创建的主题 程序员 前端:大家的 API 都是怎么导入导出的?
@CLMan 补充下,默认导出目前还是有一些应用场景:

- 使用 JS/TS 作为配置文件,rollup,jest,vite 等框架的配置文件都是采用默认导出

除了以上场景,一般情况下自己的代码都没有必须使用默认导出的必要。
洋洋洒洒写了那么多,其实最关键的继承家业却没提,属实典中典了。
7 天前
回复了 tlerbao 创建的主题 程序员 前端:大家的 API 都是怎么导入导出的?
@CLMan 我翻了下 ECMAScript 的早期相关讨论,终于找到了一个相关文档: https://archives.ecma-international.org/2014/misc/2014misc6.html

这个文档证明了我的以上猜测,默认导出设计的初衷就是为了兼容类似 jQuery 这样 ES6 之前的流行的 JS 使用模式(全局单例对象),也确实如文档所说,给当时的 JS 使用者以及后来的 JS/TS 使用者造成了混乱。

这是典型的编程语言设计时因缺乏长远考虑,给后来的使用者带来困扰,后来的使用者还必须得考古才能理解其应用场景,了解语言的缺陷仅为了避免使用该缺陷是当代的编程语言学习者常常面临的情况。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2415 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms · UTC 15:52 · PVG 23:52 · LAX 07:52 · JFK 10:52
Developed with CodeLauncher
♥ Do have faith in what you're doing.