初中生开源被疑仿 Vue,新手开源该不该重复造轮子?

·  阅读 70
初中生开源被疑仿 Vue,新手开源该不该重复造轮子?

大家好,我是马建仓。

八月将尽,暑期结束。这个暑假,Gitee 又涌现许多中小学生维护开源项目的身影。其中,有个项目让人印象深刻。

初中生立志为中国开源作贡献

这是一群由 17 位初中生组成的开源组织,名叫 BugDuck,他们立志做出最好的开源项目,立志为中国开源事业作贡献。目前,他们所维护的开源项目 tntjs 获得了 Gitee 官方推荐。

当前市面上优秀的前端框架有很多,譬如 React 框架、Bootstrap 框架、 Vue 框架、Angular 框架等等,他们不仅是主流的前端框架,还已被应用于众多全球顶尖科技企业的系统中。

而一群初中生称自己正在维护的开源项目是一个全新的前端框架,自然让人想要一探究竟,事实果真如项目作者所说吗?

我们或许可以从项目本身窥得端倪。

tntjs 是什么?

tntjs 是一个 Web 开发的 JavaScript 开发框架,作者称这是一个全新的前端框架,能令编写 JavaScript 像编写后端代码一样,帮助开发者实现高效本地开发。同时,他们期望能够做出可拆可拼的面向原生开发的前端框架,做到一次编写多文件引入,让开发经验不太丰富的人也能快速接管依靠 tntjs 开发的项目。今年 8 月 4 日,tntjs 正式推出 alpha 0.2 版本。

开源许可证:MIT 项目作者:BugDuck 项目地址gitee.com/BugDucker/t…

如何安装

  • 新建 MyFirstTNTJsProject
$ mkdir MFTJP #这里是缩写啦
$ cd MFTJP
$ code ./
复制代码
  • 安装
$ npm install tntjs #npm
$ yarn add tntjs #yarn
$ pnpm install tntjs #pnpm
复制代码
  • 使用 cdn 上的文件
https://cdn.jsdelivr.net/npm/tntjs@latest/dist/src/index.js
复制代码

成功安装后,你可以开始控制多个页面

新手编程第一课:Hello World

项目作者在文档中以「Hello world」举例说明 tntjs 是如何使用 来实现响应式变量与页面的双向绑定的,即页面绑定的值会随着变量的改变而变化。

1.在data属性里面填写表达式,首先需要实例化一个 tntjs 的 APP 对象

<v data="variableName"/>


export const app = new TNTApp();
复制代码

2.使用 page 预置页面

// App.js
export const app = new TNTApp();

app.page({
  data: {
    x: "Hello world!"
  },
  mount: document.getElementById("app")
}, "page")
复制代码

3.每一个 html 文件都有一个单独的 pageid,你可以使用 来在 中设置它,这是 tntjs 多页面编程的页面标识符

<page-id>page1</page-id>
复制代码

注意:

  • 第一项参数中使用 data 来设置响应式变量的初始值
  • 第一项参数使用 mount 指定 tntjs 应用的作用域的 Element 对象(指定的节点只能有一个子节点)

4.导入到 html 文件中

<!DOCTYPE html>
<html lang="en">
<head>
  <script src="./App.js" type="module"></script>
  <title>tntjs demo</title>
  <page-id>id1</page-id>
</head>
<body>
  <div id="root">
    <div>
      <v data="x"></v>
    </div>
  </div>
</body>
</html>
复制代码

在浏览器中打开它,你就可以看到

Hello world!
复制代码

除此之外,tnt.js 文档中还介绍了如何创建计数器,判断数是奇数还是偶数为例。在此就不赘述,更多操作细节,可前往 项目地址 查看。 项目地址gitee.com/BugDucker/t…

作者表示目前该项目还在不断完善当中,也呼吁更多感兴趣的开发者参与贡献,共同维护。如果有感兴趣的同学也可以前往上述项目地址与团队进一步沟通。

一些争议

看到这里,经验丰富的开发者或许产生了质疑,一是没能看出 tntjs 的亮眼之处及称得上创新的优势,二是某些熟悉 Vue 的开发者则感到项目 Vue 味儿太浓,tntjs 强调的自身特性在 Vue 和 blazor 中都已出现,这充其量算得上前端模板解析;更甚者有人表示这个项目就是「照猫画虎、浪费时间」,「重复造轮子」......

这样的争议之前也曾出现过。几个月前,Gitee 星球曾分享过由一群平均年龄 13 岁的初中生开源自创的可视化编程编辑器,文章一经发布便引发热议。一方面许多人感慨现在程序员的年龄越来越卷了,另一方面有人说这个项目太简单了,不仅还在教人提 PR ,而且项目称基于 Blocky 却没有修改底层源代码,这就是个重复造轮子的活,甚至还有人三连问质疑「这还是编程吗?」。

新手到底该不该重复造轮子?

评论犀利,但也不无道理。毕竟从目前项目建设上看这不能称得上全新,且操作文档也有待完善。不过马建仓认为对于新手开发者/开源爱好者而言,比起一味否定与嘲讽,我更支持鼓励及提出可行性的建议与批评。

或许在成年人及成熟开发者看来是「重复造轮子」「玩具框架」的方式,对他们来说是正常不过的兴趣使然。尤其是今天的信息时代、数字时代、云原生时代,我们的生活已然被信息技术及其背后的算法深刻改变,而他们作为数字世界真正的原住民,从小就能触达各式各样的高科技产品。正是在这种先天环境成长,他们的认知与实践更可能帮助我们找到进入新一代数字世界的入口。而且他们仅是初中生,就能依靠兴趣驱动去规划一件事,并靠实际行动要把这事做好做大,已经超越很多人了。

更重要的是,时至今日国内的软件行业不同于过往空白期,为了加快前进的步伐,我们需要快速学习造轮子的套路。换句话说,‍站在巨人的肩膀上会让你事半功倍。做事之前可以尝试这样一个角度:不要只想着自己从头搞定,先去看看有没有前人经验,看看是否有什么人在什么地方遇到过类似的问题,找到这个人,和对方建立联系获取相关信息,能够帮助你节约时间来做更重要的事情。

正如 BugDuck B 站项目宣传视频底下的评论所说的:

所以我认为重复造轮子不是个坏事,也并非浪费时间。这个过程不仅需要你学习新技术、新框架,更要学习这些技术、框架是怎么用的,知其然,还要知其所以然。如果想要开发一套稳定的,容易维护的系统,使用「轮子」的时候,需要对轮子有足够的了解,知道这个「轮子」适用于什么样的场景,有什么样的特点、优点,会有什么样缺点,这样才能做到扬长避短,更好地使用轮子。

不过,这并非否定创新。无论是否选择重新造轮子,创新力始终是成为优秀项目的关键要素,也是项目长期发展的护城河。那么你又是如何看待造轮子这事呢?如果你对这个项目有更好的建议与想法,也可以在点击此处,前往仓库和作者深度交流噢~

关于Gitee

微信底部宣传banner-5.jpg

分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改