LiteLDev / LegacyScriptEngine

A plugin engine for running LLSE plugins on LeviLamina
GNU General Public License v3.0
48 stars 8 forks source link

Typescript support #175

Closed yqs112358 closed 2 months ago

yqs112358 commented 2 years ago

基于NodeJs可以提供对TS的支持 目前有两种方案:

  1. 使用ts-node。优点是实时转译,缺点是在embedding环境下不知如何运行,可能需要手写一些对接代码(类似npm?)
  2. 使用tsc。优点是简单方便,embedding环境也可以无脑处理(照抄npm方式加载即可),缺点是需要在每次插件加载前就执行转译,会生成一些额外的js文件导致占用空间增大

有对接需求的需要尽快对接

ts环境搭建参考:https://juejin.cn/post/6844904022365700103

lgc2333 commented 2 years ago

要不让开发者手动编译算了

RimuruChan commented 2 years ago

我建议是编译成js

yqs112358 commented 2 years ago

我建议是编译成js

本来就是编译到js,node不支持直接运行ts 这边todo是提供ts编译编译工具(tsc等)使插件包中的ts代码在加载插件时自动编译并加载

futrime commented 2 years ago

@yqs112358 我的建议是不需要提供现场构建工具,正如C++插件没必要现场构建。

yqs112358 commented 2 years ago

@yqs112358 我的建议是不需要提供现场构建工具,正如C++插件没必要现场构建。

ts和cpp不一样,ts编译器很小,而且运行很快,很多提供ts支持的平台都直接内置了ts翻译器(见bdsx) ts只是在js基础上增加了少量标注,翻译过程非常简单,只是去除标注然后转换为标准js的过程,翻译的文件是一一对应的 不像cpp源码有一大堆源码,先要汇编成二进制机器码再链接成可执行文件,ts只是纯粹的翻译

RimuruChan commented 2 years ago

@yqs112358 我的建议是不需要提供现场构建工具,正如C++插件没必要现场构建。

ts和cpp不一样,ts编译器很小,而且运行很快,很多提供ts支持的平台都直接内置了ts翻译器(见bdsx) ts只是在js基础上增加了少量标注,翻译过程非常简单,只是去除标注然后转换为标准js的过程,翻译的文件是一一对应的 不像cpp源码有一大堆源码,先要汇编成二进制机器码再链接成可执行文件,ts只是纯粹的翻译

提前编译成单文件js更便于分发

lgc2333 commented 1 year ago

直接润ts文件属实是没什么必要,还是直接编译成js用会更好