libook 最近的时间轴更新
libook

libook

.... . ._.. ._.. ___
🏢  yangcong345.com / Full Stack Developer
V2EX 第 78834 号会员,加入于 2014-10-27 17:14:14 +08:00
今日活跃度排名 2406
不参与一切辩论、圣战,无意义。
如果你觉得我我说得好,点一下“感谢”我将荣幸至极;
如果你觉得我说的不好,仅一句嘲讽是没有人获益的;
什么?触碰到了你的信仰?那么请务必当我放屁~
正常回复 IP 被封了,求解封
反馈  •  libook  •  343 天前  •  最后回复来自 libook
3
在 WSL 中运行 GUI(如 IDEA)
分享创造  •  libook  •  341 天前  •  最后回复来自 libook
17
电子设备如何消毒?
硬件  •  libook  •  2020-04-29 23:13:30 PM  •  最后回复来自 ssqtctc
9
支付授权目录设置为第三方 URL 有哪些风险
程序员  •  libook  •  2019-03-28 17:38:30 PM  •  最后回复来自 airyland
1
自己写的实时演算插件
Hexo  •  libook  •  2019-02-18 17:26:07 PM  •  最后回复来自 libook
3
[培训向]如何给学员讲明白一种算法不合适?
程序员  •  libook  •  2019-01-31 12:24:39 PM  •  最后回复来自 libook
13
[北京] 有没有想学习 Node 服务端开发的实习生?
酷工作  •  libook  •  2018-11-21 13:18:08 PM  •  最后回复来自 defunct9
1
[北京] 有想学习 Node.js 服务端开发的实习生吗?
酷工作  •  libook  •  2018-11-16 10:18:49 AM  •  最后回复来自 wangsahala
17
今天可能要发布 Node10 的 LTS?
  •  1   
    Node.js  •  libook  •  2018-10-31 08:45:44 AM  •  最后回复来自 Acexihua
    9
    libook 最近回复了
    1 小时 0 分钟前
    回复了 beginor 创建的主题 程序员 聊聊心目中的完美笔记本
    最近看了一个模块化的叫 Framework,屏幕是 3:2 的,接近 16:10,关键是要啥接口可以自己配,还有很多组件是方便拆装更换的。

    另外一直想搞一台 System76,专门为 Linux 设计的笔记本。
    1 小时 16 分钟前
    回复了 8e47e42 创建的主题 问与答 除了 Windows,当下什么 Linux 桌面发行版最靠谱?
    桌面只是个 Shell,现在大多发行版都是兼容多种桌面环境的,取决你装什么以及如何配置,当然也有官方调配好桌面环境的发行版,比自己折腾要省事。

    迫于穷,没有高 DPI 4K 显示器,所以没法给建议,可能商业支持的发行版会稳一些?比如 Ubuntu 、Fedora 、Pop!_OS 、Deepin 。

    Linux 发行版适合喜欢折腾的人用,这东西你是越折腾越好用,想要开箱即用的体验的话还是乖乖用 Windows 或 MacOS 吧。

    如果只是开发应用程序的话,WSL 基本多能满足。
    19 小时 2 分钟前
    回复了 yezheyu 创建的主题 程序员 请教一个很基础的变量内存分配问题
    我觉得这个就是编译原理的知识范畴,我自己也没有完整学过编译原理,但是之前学 Rust 的时候为了理解 stack 和 heap 的作用专门去挑了编译原理对应的章节去学习,你可以看 B 站的这个公开课,只看 9.2 章节应该就能解决你的疑惑了 https://www.bilibili.com/video/BV11t411V74n?p=41

    简单来讲就是编译完成后,机器码中可能就已经用 0x002 这个地址来替代 a 这个标识符了。
    然后每个作用域都有个基地址,0x002 是在这个基地址基础上的相对地址,这样你不同作用域下的 a 实际上就在不同的地址上。
    再然后值可能存在 stack 上,也可能存在 heap 上,这个取决于你目前用的编译器的设计,一种简单的设计是:stack 中 0x002 这个相对地址上存储的值是 heap 上的相对起始地址、长度,然后在 heap 的这个区域里存储 0x002 的值,可以很方便地修改;当然如果这是个常量,那么 stack 上 0x002 这个相对地址可能就直接存的值。
    一个 branch 尽可能包含一个细粒度的 feature 或 fix,可以随时 commit 和 push,合并的时候可以用 rebase 把 branch 的所有 commit 合并为一个 commit 来合并到其他分支上。
    @mxT52CRuqR6o5 #118 是,TS 和 JS+doc 都能自动改。
    不了解具体什么需求,以前做类似的功能是在业务里判断,网关负责确定请求的人是谁,然后业务里用网关认证的身份信息来判断是否有权限。

    如果业务里涉及鉴权规则的地方也比较多,可以在业务层塞入一个鉴权层,可以把权限简单划分为公开、已登录用户、自己等类别,然后业务返回这个属于哪种鉴权类别,鉴权层再直接套用通用逻辑鉴权。
    @xd199153 #114 TS 重构的时候也是一样要改两个地方,一处类型声明、另一处代码声明,只不过这两个地方和 JS 的两个地方位置不一样而已。
    工具都是有好用和不好用之分的,VSCode 的代码分析和提示功能跟一些商业 IDE 比起来还是很弱,在 WebStorm 里,JS 即便不写 doc 做类型声明也会通过代码分析来推断类型,然后给画波浪线,提交的时候还会提示代码可能存在问题建议去修改(也可以忽略),花的钱其实也值在这里。
    无非是 TS 工具默认不忽略问题(你也可以 @ts-nocheck 忽略问题);这个对于 JS 工具来说也可以配置不忽略潜在问题,让 CI 直接失败。在这个问题上,不得不说 TS 技术栈给出的是一站式方案,包装成了现成的产品,开箱即用,而 JS 技术栈则依然十分灵活,按配置来实现需求。

    对象参数用 doc 来定义的话有多种方式,一种思路是直接在 saveUser 声明参数的时候写个对象结构声明:
    /**
    * Save a user.
    * @param {{nickname: string, age :number}} userObject
    * @returns
    */
    function saveUser(userObject) {
    return true;
    }

    另一种思路可以先声明对象类型,然后在 saveUser 声明参数的时候直接引用这个类型,同样这种方式可以给每个属性写描述:
    /**
    * @typedef {Object} User
    * @property {string} nickname
    * @property {number} age
    */

    /**
    * Save a user.
    * @param {User} userObject
    * @returns
    */
    function saveUser(userObject) {
    return true;
    }
    // 效果如此: https://imgtu.com/i/Wb9wY4


    JSDoc 和 ESDoc 是两种 doc 标准,前者主要针对原型写法,后者主要针对 class 写法(这么说也比较笼统),不过很多工具都是会同时集成两者,都可以直接用,也确实有很多人不知道有这个东西,在 TS 出现之前 JSDoc 是解决文档和辅助语法检查问题的主要方式之一。
    @kingwl #111 你的意思是说,在 TS 出现之前没有任何工具可以做到这个事情吗? VSCode 使用的方案同时是其他所有编辑器和 IDE 使用的方案吗?讨论的问题是 JSDoc 、ESDoc 能否帮助达到 TS 一样的效果,这几张图不足以说明吗?


    @xd199153 #110 仔细看我的图,用 doc 的方式除了能满足类型提示和检查以外还能加更多描述,很多时候团队协作为了写描述横竖都要写 doc,顺手写类型声明和 TS 的成本是一样的,也就只是写的位置不一样。

    我前面的回复已经说明了,代码提示和类型检查都是工具带来的,TS 离了工具也没法出提示(用纯净的 Vim 试试看),面向 JS 的相关工具也都有,精确不精确取决于工具水平怎么样,WebStorm 上的高水平工具不写 JSDoc 靠推论也能做精准的类型提示。

    工具链+语言,至少工具链方面 TS 并没有比 JS 多少优势,语言方面看你要约束还是要灵活,对于要灵活的情况来说,TS 的约束就是缺点。

    技术栈选型从来都不是选一个最好的,而是选一个最合适的,任何技术都有优点和缺点,没有完美的。
    @xd199153 #75 你这个例子不需要写 JSDoc,编辑器、IDE 能自己判断出有哪些属性或方法。https://imgtu.com/i/WH1KZF
    任何编辑器、IDE 在没有 TS 插件的时候也都做不到 TS 的提示功能,相应的 JSDoc 带来的提示功能也是由插件实现的,和 TS 一样,很多编辑器和 IDE 自带了 JSDoc 的插件,甚至在 TS 出现之前就已经存在了。

    其实更多区别还是在于类型声明上,这两张图就是个简单的对比,图一是 ESDoc 实现的,图二是 TS 实现的:
    https://imgtu.com/i/WH3Ulq
    https://imgtu.com/i/WH3Npn
    你猜怎么着,ESDoc 还能给参数加描述。

    建议看一下 JSDoc 和 ESDoc 的文档,在自己的编辑器或 IDE 上试试,花不了几分钟。

    我觉得 TS 也就那样,没必要神化,项目适合就用,不适合就不用,TS 再怎么🐂🍺也不敢脱离 ES 的基本范畴,因为它就指着 ES 生态来维持用户群;除非某一天浏览器集体支持 TS 原生引擎,但只要 TS 还是微软主导的,就基本没可能。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3073 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:11 · PVG 12:11 · LAX 21:11 · JFK 00:11
    ♥ Do have faith in what you're doing.