mnl.js —— JavaScript 函数仿生命名法

GitHub: https://github.com/YuanSa/mnl.js


你是否为函数参数过多、顺序混乱头疼过?

想解决这个问题,在python中可以为指定参数赋值,在JavaScript中则可以传递参数对象。

本文提出另一种解决方法:仿生命名法 (Mock Natrual Language)。

仿生命名法是一种给函数命名的方法,让你可以用接近自然语言的语法给函数命名。

仿生命名法很简单,即在函数名内部任意位置插入括号。如:

function deleteThe(i)ItemFrom(arr) {
  return arr.splice(i, 1)
}

由于与现有JavaScript语法不兼容,我们需要一个编译器进行转换。

目前的策略是将括号替换为__x__,参数列表依次添加到函数名末尾。
而出于兼容性考虑,函数名末尾的__x__会被删除。

示例

mnl语法

let myHeart = ['kind', 'evil', 'happy'];
console.log(`I born with ${myHeart.join(', ')}.`);

remove('evil')from(myHeart);
console.log(`Now, I have only ${myHeart.join(', ')} in my heart.`);

function remove(item)from(array) {
    array.splice(array.indexOf(item), 1);
    console.log(`Now I removed the ${item} in it.`);
}

编译后(js语法)

let myHeart = ["kind", "evil", "happy"];
console.log(`I born with ${myHeart.join(", ")}.`);

remove__x__from("evil", myHeart);
console.log(`Now, I have only ${myHeart.join(", ")} in my heart.`);

function remove__x__from(item, array) {
    array.splice(array.indexOf(item), 1);
    console.log(`Now I removed the ${item} in it.`);
}

运行结果

I born with kind, evil, happy.
Now I removed the evil in it.
Now, I have only kind, happy in my heart.

编译器

为实现功能,我用js写了一个编译器,可用node运行。

由于笔者能力有限,目前的demo编译器不能完美编译。目前已知有如下bugs:

  1. 字符串内的代码也会被编译

详情请见mnl.js的GitHub页面:https://github.com/YuanSa/mnl.js

欢迎指教与合作。

原文链接:segmentfault.com

上一篇:Promise 实现详解
下一篇:鸿蒙系统中的 JS 开发框架

相关推荐

  • 🙋Hanjst汉吉斯特改进+enSafeExpression安全表达式等

    Hanjst汉吉斯特模版语言及模版引擎,近期持续改进升级。 这次改进主要是增加了对安全输出表达式兼容,由于涉及到对软件开发过程中的效率和软件运行效率的平衡和取舍,所以多写了几句,以描述这个权衡利弊对...

    4 个月前
  • 🙋Hanjst汉吉斯特升级:+showImageAsync及性能改进等

    自2019年元旦🙋Hanjst汉吉斯特 模板语言及其编译引擎发布,已经过去一年多了。 这期间随着 🙋Hanjst汉吉斯特 的推广应用,我们也陆续发布了如下一些更新内容: 🛠️Hanjst/汉吉...

    5 个月前
  • 🙋Hanjst汉吉斯特优化+JsonDataFromScript等

    近日继续对 🙋Hanjst汉吉斯特优化改进。这次的改进思考是从服务器端返回的 HanjstJsonData的容器设计问题。目前的做法是服务器端的HanjstJsonData放入终端页面的一个Div元...

    4 个月前
  • 😉我用 Nuxt.js 仿了个掘金

    前言 首先肯定是要夸夸掘金啦,最开始从 CSDN 到 博客园 再到 掘金,个人感觉掘金的技术氛围非常的nice,真是个宝藏社区👏。技术文章大多以前端为主,对前端开发者非常友好,质量也是歪瑞古的。

    5 个月前
  • 😀一个原生js弹幕库

    danmujs 😀一个原生js弹幕库,基于 CSS3 Animation 地址、核心代码 本项目基于 rc-bullets,项目约70%的代码基于rc-bullets,首先要感谢这个项目的作者...

    8 个月前
  • 🕵️‍♀️由原型到JS中的“模拟类”

    讲述了有关 JavaScript 中原型相关知识,又引出了 JavaScript 中的**“类“**究竟是什么?,以及一系列相关问题。 一、前置知识 1、JavaScript 的面向对象(OOP) ​...

    6 个月前
  • 🔥《吊打面试官》系列 Node.js 必知必会必问!

    前言 codeing 应当是一生的事业,而不仅仅是 30 岁的青春🍚 本文已收录 Github,欢迎 Star,一起接水💧 作为一个在互联网公司面一次拿一次 Offer 的面霸,打败了无...

    6 个月前
  • 🔥 2020年从基础到进阶,测试你有多了解 JavaScript,刷新你的知识!🚀

    【译】JavaScript 进阶问题列表 从基础到进阶,测试你有多了解 JavaScript,刷新你的知识! 答案在问题下方的折叠部分,点击即可展开问题。 1. 输出是什么? function ...

    9 个月前
  • 💖CSS + JS 送学妹满屏幕小爱心

    故事开始 午饭时间,暗恋已久的学妹拉着我的衣袖:“学长学长,你能不能让这些爱心变成五颜六色的吗~”。 我在旁边笑开了花~~~ 诶呀,口水流出来了。

    5 个月前
  • ()JavaScript的使用有什么用呢?

    ()JavaScript的使用有什么用呢? ...

    2 年前

官方社区

扫码加入 JavaScript 社区