技术解析

最近前端又新出了一款框架 vanillajs,当你打开他的官网时会发现大小是 0kb,因为他其实就是让你用原生 JS 写代码,至于他为什么能引起关注,这就涉及到前端的生态了;
0
2021-08-11 04:49:49
idczone

npm 拥有所有语言中最多的包;每隔两周打开 hackernews 就会有一个新的框架出来; JS 每隔一年语法就让人不认识了;前端众多的框架不知道从何下手,很多框架是有功能上的重叠的和学习成本的;

而 vanillajs 框架就是推荐你用原生,框架里面没有任何代码只有一行注释。而 JS 通过多年的进化也已经成为了功能强大的语言了,确实也没必要在其上再覆盖一层框架和学习成本去完成项目。

框架的使用反而会增加项目的维护难度,原生提供更好代码体验,甚者如果你一定要使用框架,原生对所有框架更友好。


重新定义最近

村通网

这个 6 啊

JS 每年加几个 api 就不认识了?原生写的代码好维护?是没参加过工作吗?

“The Vanilla JS team maintains every byte of code in the framework and works hard each day to make sure it is small and intuitive.”
哈哈,行为艺术啊。

想笑

然而只不过是因为它被使用的比较多,成为了事实标准,然后所有浏览器都内置了。

5 年前的老玩意

前端 js 代码又不跑在服务器上,效率低下关我什么事 /doge

村通网

老哥搞笑的?

vanilla 不就是原生的意思吗?

no code

这个网站存在 10 年了吧 lz 的最近定义有点长啊

8 年前

这个不是六七年前就有了?

所以是哪个框架呢?

吾之蜜糖 汝之砒霜
我了解并理解目前 web 前端庞大臃肿的架构和设计逻辑现状。
但我负责的产品中我选择了 JQuery+我自己实现的页面栈来做单页面应用。这是我结合产品和公司条件的决策。
无脑上当前流行架构 or 死守原生 js,都是不负责任的行为。

如果一个前端开发人员这样说的话,我会称之为“低能”

前端上框架叫不好维护,后端上框架叫生态丰富。
前端加新的 api 叫瞎折腾,看不明白,后端加新的 api 叫 feature 。
老双标了

这框架是搞笑的吗

框架更多的是约束代码组织结构吧,用原生的写,最后也会形成自己的一套框架

不仔细看还真以为是框架了

同意,Vue 和 React 最多再流行 5 年。等到新的 HTML 标准以及 Web Components 普及, 原生会重新夺回它的地位

3g 网速是真的快

很多组件如果不用框架我写不出来。。

JS 每隔一年语法就让人不认识了
-------------
楼主能举个例子吗?一个就行。

不用框架?完成同样的项目,你的工作时间大概需要增加 N 倍。

原生 JS 现在确实很强大了,手撸页面已经不像以前那么难了,很多以前主要由框架和库提供的功能,现在 JS 也有类似的原生 API 可以直接用了。
不过框架也是在发展的,一些原生 JS 具备的功能会逐渐被从框架中移除,而框架也会增加其他特性来增强原生特性的高效运用。比如之前各个框架都有自己的组件机制,后来 WebComponent 出来之后各个框架都开始对 WebComponent 进行支持,从完全自己实现组件机制到底层复用 WebComponent,然后表层再根据框架架构思想封装成更易用的特性。
原生特性是分散的,而框架往往是提供了一种现成的解决方案,让大部分需求场景可以直接套用,让开发者把精力更多放在业务上。

5 年后,10 年后你的项目中的框架还能招到人维护?

项目坚持十年都在使用维护,不重构的吗

一看就是没写过复杂 App 的,现在的普通 react 单向数据流架构能使复杂度线性增长,而 jquery 时代是指数增长,代码很容易乱得一 B


const proto = new Proxy({}, {
get(target, propertyKey, receiver) {
console.log('GET '+propertyKey);
return target[propertyKey];
}
});
const obj = Object.create(proto);
obj.weight;
只看代码,这个在终端输出什么?

话说,这个看字眼都能猜到。。。

vanilla 本身就是原生无修改的意思。。

这尼玛不就是原生 js 吗

实际工作中用这样的写法可能会被人打死

我是老实人
Vanilia JS 意思就是原生 JS

我一直觉得把 Web API 或 DOM API 叫做“原生 JS”就跟外行把“硬盘”误叫作“内存”一样。这就是典型的语言和 API 分不清的结果。
“vanilla”这个称呼倒是比“原生 JS”好十倍。
所谓的“原生 JS”这种称呼,应该拿来跟 TS 、coffee 相比才对。

框架是一种解决复杂问题的抽象,比如现代前端框架主要解决的问题是如何同步 UI 和 state 。你当然可以不用任何框架,但当代码量增长,你所做的对 UI 和 state 同步代码的抽象最终还是会变成一个低配版的 Vue/React 。还大概率没有他们封装的好,或者说根本不可能。

可以跑在服务器上,nextjs

这是在搞笑?还是认真的

再说亿遍,vanilla 是香草的意思(


名字就能看出 玩你了

钓鱼贴?有种贴吧的感觉


vanilla
adjective
UK /vəˈnɪl.ə/ US /vəˈnɪl.ə/

used to describe a product or service that is basic and has no special features:
sample: I just want a vanilla bank account with low charges.

前排那些喷的 这是钓鱼贴啊 vanillajs 翻译过来就是原生 JS 这个东西起初就是为了调侃现在的人框架用多了,连最基础的原生写法都不知道是啥了

哈哈哈哈,这可真最近了

披头士

当业务发展到一定规模就有可能受制于框架

我只是想发图罢了(

不用框架的结果,就是自己造了一个更蹩脚的框架。

js 已经是相当抽象的高级语言了,你说的一些页面当然用框架完成没有问题,可是如何要写大型应用就不行了,例如 d3js, chartjs, videojs..., 至于你说的相似页面的状态管理,这个就见仁见智,像 sveltejs 就把状态全部交给 js 来做了。

大多数企业生产来说,没有啥是一成不变的,业务会变,技术会变,体量会变,所以技术上所有决策都是针对于当前情况权衡评估的结果,过一阵子发生了各种变数,可能就要有新的结论了。
比如产品发展初期需要大量 MVP 试错,那么不管用不用框架,能最大速率迭代就能加速产品试错,从而尽早找到一个可靠的发展方向。
但到了成熟期,已经产生了大量的代码,就不能像初期那样为快不破,而是要有有效的方案在保障开发效率的同时减少新的技术债的产生。
之后随着市场、业务、组织结构等变化,每隔一段时间就需要对项目进行重构,同时引入新的技术和淘汰旧的技术。
所以如果说抱着始终用一种方案的想法去使用或不使用框架,都是肯定靠不住的;得对未来一段时间的需求走势做预测,然后从现在设计的时候就选择一种能满足未来一段时间需求的方案就好,时限到了就拥抱变化,重新设计方案。

不知道 webcomponent 你们用过没。那是真的难用。。

vanilla 表示原味,来源于冰淇淋的口味,因为最基础的冰淇淋味道就是香草味,后来才被其他行业引申用来指基本款。因此对于英文母语的人来说,看到 vanillajs 就能猜到大概,减轻了恶作剧成分,变成一个很轻的开玩笑。

好吧,没有什么是多加几次班不能解决的

我理解你的意思,但现实就是这样,现在大多行业发展都是不断推陈出新的过程,只不过互联网行业这个速度很快而已。
作为一个面试官来说,如果一个前端开发人员有能力用原生 JS 写出复杂交互的页面,意味着这个人基本功足够扎实,框架学起来很快,但解决问题还是要回归基础。
另外加班其实通常属于管理问题,只要不是故意压榨的话,又加班显现通常都是因为管理无能,没法控制项目风险,也没法发挥团队的最大产能。

你用着原生代码天天加班,我用着框架每天改完业务逻辑就能回家,我们都有美好的未来。

从来不用 php 框架 影响我速度。

为啥还要配个图
数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服