TypeScript 小感

今天在一个Windows Phone的论坛看到微软出了个TypeScript, 瞬间想到高中时期自己构想的InviScript和Prever 2… 不过后来因为种种原因, InviScript只是停留在了构想上, 而Prever 2也在开发初期流产. 不过后来取代InviScript的, 则是VEJIS.

很高兴的是, 自己, 当然也一定是很多当时和我面临同样问题的人的设想, 最后被很好的实现. 其实Google也有一个叫Dart的语言, 不过与和InviScript的相似度赶TypeScript和InviScript的相似度就差太多了… 而且我个人也不喜欢Dart的语法, 感觉抛弃了很多JavaScript的精髓.

TypeScript和InviScript应该说都是JavaScript的超集, 并且相同的, 最终都会编译成JavaScript. 这也是我为什么取名为InviScript的原因. 意为INVIsible SCRIPT. 只在开发过程中存在.

不过同样高兴的是, 我选择了一个对于我个人而言, 更现实的实现, 即VEJIS. 虽然独立开发完InviScript也并非不可能, 但成本显然太过高昂…

VEJIS通过各种各样的函数, 从语法层面加强了JavaScript的功能, 提供了可以媲美甚至超过TypeScript的类/类型/模块工具, 当然因为VEJIS是运行时的脚本库, 代价就是一定的性能损耗. 这也限制了VEJIS的运用场景. 但就目前的实践经验来看, 在正确使用VEJIS的情况下, 这种影响是可以忽略不计的.

现在正在开发VEJIS 0.5, 重写了核心代码, 并提供了更多, 更具扩展性的功能. 甚至是delegate_, 虽然还没有决定是否会最终使用. 不论最终是中间语言形式的TypeScript更容易被接受, 还是运行时的VEJIS, 都一定程度反应了Web开发的趋势. 这点上, 我觉得Franky或许不会永远是对的. 😛

网页应用的未来与对InviScript的憧憬

自己弄JS的两年来,因为AIVOS和Prever Start的开发,也算有过密集JS的开发经验了,自然,在这中间,也有自己的体验与憧憬。

随着JS在前端中运用的不断延伸,它在网页中的地位越来越高,并且,更多几乎完全承载于JS的网页或网页程序出现了。由于JS以浏览器作为平台,它被赋予了跨平台的能力,成为了未来轻量级应用的一个优势选择。

我相信在未来若干年,网页应用程序会逐步发展,并最终与桌面应用并肩。当然,或许那个时候会有一个专门运行网页应用的软件,而不是像现在那么突兀地放在浏览器里。但是受限于脚本语言的效率,网页应用的范围仍然会有较大的限制。

即使如此,如之前所说,在“轻量级”的应用中,JS网页应用仍然具有不可替代的优势——随时随地随心情。不过我这里所说的“轻量级”可并不是指功能简单,而是指对效率、图形处理等要求不高。并且,网页应用的体积限制也随着本地储存的发展渐渐放宽,加上可以随用随加载,功能将会越来越丰富。

这时候,我想JS将会难以胜任更大规模的网页应用开发。JS的下一个版本或许能赋予它更强的功能,但如众多前端开发人员所恼火的,浏览器的更替是一个缓慢的过程,这时,兼容问题便无法避免了。

于是我想到了C++。

听说在C++诞生之初,还没有专门的编译器,要编译C++,就必须先把C++翻译为C语言。那同样的,我们是否能将一个强大的语言翻译为JS呢?

我把这个想象中的语言称为InviScript,除了更强大与完善的语法结构外,它还可以提供一些JS难以具备的东西,比如源代码保护。当然,尽管我看到了这样一个语言的众多优势,却对它的开发难度有些恐惧——这已经远非我一个人所能完成的了。到现在,所有的向往也仅仅是向往,但希望不久的将来,我能用InviScript开发出自己的第一款大型JS应用——Prever 2。