看了 deno, 感觉 ts 前景不可估量啊

2020-03-07 18:08:12 +08:00
 a132811

感觉 deno 这种明确带版本号的引入方式,才是解决版本依赖的最佳方式,简洁、明确、不混淆,或许能产生比 npm 更强的生态。

import { serve } from "https://deno.land/std@v0.30.0/http/server.ts";
const s = serve({ port: 8000 });
console.log("http://localhost:8000/");
for await (const req of s) {
  req.respond({ body: "Hello World\n" });
}

终于不用再被 package.json 和 node_module 以及 AMD-CMD 折磨了。

就是在文件中手写 url 有点麻烦,要是能支持 domain 的 alias、支持默认版本 latest 就更好。

	// .deno/config
    const cdn_npm = 'https://npm.cdn.deno';
    
	// main.ts
	import echo_latest from "cdn_npm/echo.ts"  
	import echo_v2_1_1 from "cdn_npm/echo@2.1.1.ts"  
	import echo_v2_1_0 from "cdn_npm/echo@2.1.0.ts"  
13625 次点击
所在节点    程序员
59 条回复
fewok
2020-03-07 20:15:40 +08:00
将 java 转译成 js,感觉更有前景。。。
optional
2020-03-07 20:26:32 +08:00
@liufengsoft722 我觉得 npm 比 maven 好用。。。。除了浪费一些磁盘
isukkaw
2020-03-07 20:33:07 +08:00
@azh7138m #17
不知道 npm 和 yarn 有版本管理、不知道 HTTPS 不能保护服务器被入侵导致的投毒( 16 年网宿数据中心被入侵导致 jsDelivr 和七牛的 CDN 服务受到严重影响),这种前端在 V2EX 掘金 SegmentFault 上比比皆是。对此不必感到吃惊、我们也只能暗自幸运我们的知识面比他们会 *略微* 宽广一些。
Buges
2020-03-07 20:44:57 +08:00
把 URL 硬编码到代码中是最睿智的行为,一个广泛使用的库维护者 GitHub 改个名字全都爆炸。
其实 npm 是非常好用的包管理,但问题是生态太乱,随便装个包后面跟几十上百个依赖一大坨小文件堆硬盘上,右键 node_modules 目录属性一看:size: xxx MB , size on disk : x.xx GB
explore365
2020-03-07 20:53:52 +08:00
@rayhy node deno 看名字
love
2020-03-07 20:54:33 +08:00
@optional 浪费磁盘也快要成过去式了,现在的 yarn2 就可以全机共享同一包文件
janxin
2020-03-07 21:09:04 +08:00
什么时候 TS 不兼容 JS 的坑我觉得更有前途...
keelii
2020-03-07 21:15:55 +08:00
有关 deno 的视频可以去我的 bilibili 了解一下。各种搬运 😂
keelii
2020-03-07 21:16:02 +08:00
otakustay
2020-03-07 21:25:02 +08:00
yarn:任何需要网络的依赖安装是不明智不安全的,是会被包管理的 BUG 影响的,我们要全本地 cache,所以我们发了 yarn 2.x !
deno:放你的狗屁,全网络依赖!
Mohanson
2020-03-07 21:33:11 +08:00
偏向看好没有历史包袱的 wasm, ts 对 js 态度暧昧,不如彻底抛弃 js。用 C 和 rust 写前端想想就刺激…
yolio2003
2020-03-07 21:58:28 +08:00
版本号放代码里面看起来麻烦了,但也获得了更简单、而且显式,还很清晰的依赖树。
fumichael
2020-03-07 22:01:16 +08:00
@love #26 真的吗,那就是会像 maven 的本地 repo 那样?
ipwx
2020-03-07 22:55:05 +08:00
@Mohanson C 和 rust 那种语法,你还想写前端?前端 boy 连上游库的 bug fix 都不在意。。。
azh7138m
2020-03-07 22:56:44 +08:00
@fumichael 是真的。。。webpack5 支持 PnP
4 需要配置一下,也能支持
周边生态可能会炸,但总是一个好的开始(
chiuan
2020-03-07 22:57:44 +08:00
ts 还可以。但是我觉得引用是真的很烦。
a132811
2020-03-08 02:47:01 +08:00
@azh7138m @isukkaw npm/yarn 的版本控制也没有完全解决版本冲突的问题,还存在 node_module 体积爆炸问题,阿里 umi 框架初始化 node_module 就超过 1G,每次 ci/cd 上线 都是灾难。

HTTPS 不能保护服务器被入侵导致的投毒,npm 同样也不能保证不被人挂马啊。

你不能说因为 cdn 服务出现问题就 废 CDN 方案,npm 包挂马、不稳定大家不也用了这么多年了吗?而且你说的这些问题,也有很多方案,就看自己承受的成本了。安全本来就是相对的,光谈安全风险不讲自己需要的安全级别吗?
----------
ps: 我的前端知识面确实很窄,还望知识面*略微*宽广的前辈多多指教,万分感谢~
a132811
2020-03-08 03:20:57 +08:00
@otakustay 看了 yarn2 的 pnp 方案,比较期待。我记得以前 npm 有一个通过软链接共享重复包的方案,后来被放弃了。
另外 deno 的包,也同样要本地 cache 的。
Osk
2020-03-08 08:27:27 +08:00
看到网络依赖我流下了不争气的泪,可能大家还没被网络搞哭过吧。

go get, 搞不好半小时起步,再搓一点,直接无法完成。
pip install,几 kb,下至 0kb。常常失败。
npm 文件系统爆炸,xxx 框架初始化占用空间 200MB, 共 20,0000 个文件
ericgui
2020-03-08 08:46:09 +08:00
ts 前景不可估量
deno 前景,不知道

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

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

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

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

© 2021 V2EX