狼叔:聊聊 Node.js

2023-10-18 20:10
文章标签 js 聊聊 node 狼叔

本文主要是介绍狼叔:聊聊 Node.js,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前阵子我在知乎上回答了《2021前端会有什么新的变化?》,单篇33.8万的阅读量,还是不错的,说明大家非常关心前端的变化趋势,这里再与大家分享一下我对 Node.js 相关内容的看法。

Node.js 概况

整体看,Node.js 社区还是非常健康且与时俱进的。Serverless 借着云原生这波基建升级,逐渐走入更多开发者的视野中。低运维,甚至是0运维,对前端来讲是致命诱惑的。Node.js 被吐槽最多的运维问题,在 Serverless 时代没有了,且Serverless 容器跑的最多的示例都是 Node.js 环境。以前的说法是“所有云厂商都爱 Node.js”,现在要改成了“所有 Serverless 厂商和开发者都爱 Node.js”了。

如果是今年选 Node.js Web 框架,大概只有 Midway、Nest 和 next.js 了。从框架性价比角度上看,Midway 是很好的,你想要的 IoC 与 FaaS 集成等都是非常专业的,作者能力很强,可惜历史包袱+过度设计,击中开发者的点总觉得不那么准,不太理解搞那么多 gRPC 的集成有啥用,反而在常用db,缓存,脚手架等方面没有啥动作。Nest 作为最像 Java 全家桶的框架,其 IoC 写法从 Angular 而来,生态和规模都已经相当大,是一个不可忽视的存在,如果能接受写法和调试成本,是一个不错的选择。next.js 是一线开发者最佳视角的框架,将易用性做到了极致,从最初 ssr 定位到现在的 jamStack 架构下的全能型框架,相当于 Umi + Midway 的超集,其功能是非常强大的,未来的野心和商业版图是非常可观的。从工程角度看,next.js 第一,其次是 Nest 和 LoopBack4,LoopBack4 在配套做的相当优秀,可惜用的人不多。

新的框架和具有创新点的框架也是有很多的。比如 blitzjs 和 redwoodjs ,目前还是比较新的框架,处于成熟期,从全栈或基于 Jamstack 角度看,未来还是有一定空间的。另外 Midway-hooks 和 Farrow,都有创新的。Midway-hooks 是 Midway-FaaS 基础上加入了 React hooks,由于 FaaS 之上有路由和参数信息,所以在前端的 Ajax 部分可以直接生成出来,再结合 React hooks 友好写法,这是很有创新和与时俱进想法的,在同构演进里也是具有里程碑意义的。另一个是 Farrow,它基于 TypeScript 4.1 发布的特性——Template Literal Types,实现了 Rocket 框架所实现的对 URL 中参数的校验并映射到了 TypeScript 的类型中,这点还算有些新意。

狼叔是如何做的?

狼叔目前淘系前端团队,也一直还在做和 Node.js 相关的事儿,简单分享一下目前在做的事儿。

1、 2019年做 egg-react-ssr,还算比较成功的,大型 ssr 项目算的上是最佳实践了。2020年底开始做 ykfe/ssr,在 egg-react-ssr 基础上,做了插件化,支持了Vite,支持了 Vue2/Vue3/React 多种前端框架,支持 FaaS 和各种 Node.js Web 框架,说是地球上较好的 ssr 框架,也不算过分。在 ssr 世界里,不确定的是 React server component,我还没看明白,研究中。最有可能带来破坏性的是 React concurrent mode,目前这方面尝试还比较少,观望。

早年做 ssr 做C端性能优化是被迫的,今天 ssr 几乎已经成了前端标配,除了唤端拉新效率上提升外,来自各个大厂的关注用户体验升级的背景下,更是催熟了ssr 的落地环境,作为 Node.js 落地重要应用场景之一,ssr 还是有很大上升空间的,相信 ykfe/ssr 也会越来越好。

2、 iMove 面向开发者的逻辑编排工具。年初开源到现在已经超过 2.8k Star 了,可见大家对这种开发方式还是非常认可的。在 lowCode 和 noCode 背景下,iMove 也算是一个还不错的创新方式,通过流程图,双击编写代码,继而完成复杂逻辑处理,在 Code Review 过程里受到了 PD 和后端的极大认可。其实,iMove 更想解决的是编程模式上的创新,以前是按照需求直接写代码,而当可视化之后,先想想节点如何拆分,然后再去实现,这样才能更好的进行设计。iMove 接下来会侧重管理功能(系统设置:Runtime、私有源、节点模板),做好节点市场,并加入 API 模式(对 Node.js 支持会更好)。

iMove 将逻辑进行结构化,和搭建天然是搭档。未来能否改变前端的开发方式,还是值得期待的。

3、通过 ESM 改善开发者体验。在 iMove 开发过程中,我们探索了 ESM 在浏览器中直接运营的能力,无需本地安装 npm 模块。这是极其轻量的做法,结合Vite,以及很多CJS转 ESM 服务,可以看到当下很多研发模式都会被废弃,比如本地开发,WebIDE 等等。如果在浏览器直接可以运行,为啥还要做那些浪费时间且毫无意义的事儿呢?

当然,在浏览器直接可以运行是改善开发者体验的一部分,配套设施要跟上,比如直接在浏览器修改代码并编译保存,是不是想想就很美好?如果再结合 Vercel(next.js 母公司)的做法,将 Serverless 和 CI/CD、Git hooks 进行集成,页面托管到 Serverless 平台,无需关心运维。是的,只要有一个浏览器,就可以满足前端的所有开发的时代,很快就可以实现。

4、《狼书》卷三很快就要发布了。卷三主要是自己写 npm,写框架,测试,开源,微服务,性能调优,如何学习这些内容。在我看来,《狼书》三卷还是面向初级 Node.js 开发者,卷三写的是高级篇,除了一些实践外,又加入了开源和如何学,目的是为了授人以渔。

既然是授人以渔,狼叔也在此送出狼书10本(卷一卷二随机送出),欢迎大家关注 Alibaba F2E 微信公众号,回复 送狼书 参与抽奖。

这篇关于狼叔:聊聊 Node.js的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/234883

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

Node Linux相关安装

下载经编译好的文件cd /optwget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gztar -xvf node-v10.15.3-linux-x64.tar.gzln -s /opt/node-v10.15.3-linux-x64/bin/npm /usr/local/bin/ln -s /opt/nod

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

js异步提交form表单的解决方案

1.定义异步提交表单的方法 (通用方法) /*** 异步提交form表单* @param options {form:form表单元素,success:执行成功后处理函数}* <span style="color:#ff0000;"><strong>@注意 后台接收参数要解码否则中文会导致乱码 如:URLDecoder.decode(param,"UTF-8")</strong></span>

js react 笔记 2

起因, 目的: 记录一些 js, react, css 1. 生成一个随机的 uuid // 需要先安装 crypto 模块const { randomUUID } = require('crypto');const uuid = randomUUID();console.log(uuid); // 输出类似 '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

uuid.js 使用

相关代码 import { NIL } from "uuid";/** 验证UUID* 为空 则返回 false* @param uuid* @returns {boolean}*/export function MyUUIDValidate(uuid: any): boolean {if (typeof uuid === "string" && uuid !== NIL) { //uuid