问题标签 [dynamic-compilation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
350 浏览

angular - 如何在不使用模板的情况下评估 Angular 4 表达式

我有一个将文档模板存储在数据库中的应用程序。文档模板包含 Angular 插值表达式,并针对适当的模型进行动态编译,以在应用程序视图中提供文档预览。这部分工作正常。

现在我需要将相同的内容传递给将生成 Word 文档的 API 方法。为此,我将检索模板,将其绑定到相关数据,并将结果传递给 API。不需要涉及任何视图或 Angular 模板。

粗略地说,我正在寻找与 Angular 1.x 方法等效的$scope.eval()方法。我如何在 Angular 4 中做到这一点?

0 投票
0 回答
159 浏览

java - JavaCompiler 接口使用及其默认实现

我试图了解默认JavaCompiler实现是如何实现的,你可以通过调用ToolProvider.getSystemJavaCompiler().

你如何使用它JavaFileManager

我知道编译器使用它给出的文件管理器(通过getTask方法的参数之一)来搜索源文件,并决定将编译后的输出放在哪里 - 但是如何?

例如,对于来源,它使用getJavaFileForInput()方法还是getFileForInput()

我该如何使用DiagnosticListener?我将一个DiagnosticListener对象传递给该getTask方法,即使编译失败,也没有向该对象写入任何内容。

如何调试我做错了什么?

是否有任何地方详细说明默认编译器如何使用getTask参数?不是用 JavaDoc 写的。

0 投票
1 回答
199 浏览

c# - asp.net 编译 - 临时文件命名约定

在沉重的压力和负载下,我们使用虚拟路径提供程序的缓存实现存在 ASP.NET 未清除临时文件(编译文件)的问题,即;缓存已更新,但有时 ASP .NET 编译会保存较旧的编译文件,因此永远不会显示更新的内容。

我将临时文件位置移动到另一个目录,并尝试在我的缓存项删除回调委托中手动删除此文件,而不使用 REGEX。目前,这些文件正在编译为

文件名.aspx.#HashCode#.compiled

HashCode 基于文件可用的文件夹,即;如果我在 2 个目录下有相同的文件,我会得到类似的临时文件。具有不同哈希码的文件。我们知道这个 HashCode 是如何根据目录生成的吗?

我试图从虚拟目录、虚拟目录的名称、虚拟路径、已解析的文件系统路径中获取哈希码,但它们都不适用于正在创建的内容。

0 投票
1 回答
151 浏览

javascript - 使用 ComponentFactoryResolver 渲染 Angular Material 组件

我想使用 ComponentFactoryResolver 来动态创建一个组件,我已经阅读了有关如何实现这一点的教程(例如this),但看不到它与 Material 组件的关系。

示例 - 动态呈现 md-select

我可以看到如何获取 MdSelectModule,但看不到从该模块提供的组件。我需要这样的东西:

const factory = this.resolver.resolveComponentFactory(MdSelectComponent);

我该怎么做?我可以创建一个包装组件,它只包含一个<md-select>并使用它,但我很想知道是否有更好的方法。

0 投票
1 回答
206 浏览

c# - 在 UWP 中,我们可以使用动态编译和使用 C# 反射的成员调用在 UWP 中动态编译和调用新页面吗?

使用System.CodeDom.Compiler.CodeDomProvider我可以编译代码直到 .Net 4+。因此,我可以在运行时动态编译代码并以编程方式使用C# Reflection调用任何 WinFrom 表单。

同样,我们可以在 UWP 平台上做到这一点吗?我用 UWP 尝试了相同的流程,但 UWP 不支持这些编译器程序集。

0 投票
0 回答
70 浏览

c# - AppDomains之间的动态编译和共享类

我在我的程序中使用简单的 C# 脚本来动态操作一些数据。目前它们被编译并加载到程序的 AppDomain 中,这很简单,但缺点是无法卸载动态程序集。

假设我的可执行文件有一个类来操作主程序中的数据:

动态代码是这样的:

有没有办法让我的类 Dummy 对另一个 AppDomain 可见?

编译脚本时,我已将可执行文件添加到引用的程序集中,但出现以下错误:编译错误:找不到元数据文件“C:\Develop\Master.exe”

exe在那里,但它不会加载它。当使用相同的 AppDomain 时,一切都很好......

编辑:这是我用来在 exe 中编译和加载程序集的代码:

DynamicAssembly.dll 中的实际代码:

0 投票
1 回答
71 浏览

javascript - 验证和检查用户代码

如果有人在 Code.org 上看过游戏,用户可以输入代码并提交他们的代码。服务器验证代码并将代码发送到 javascript 游戏,该游戏似乎在游戏中运行代码以执行某些操作。

您如何验证/检查用户在 html 文本框中提交的代码,然后让您的 javascript 游戏执行代码?

我需要什么来实现这一目标?是否需要在服务器端运行 javascript 编译器?游戏如何运行代码?

0 投票
1 回答
427 浏览

compiler-construction - 即时编译和动态编译有什么区别?

具体来说,维基百科指出“JIT 编译是动态编译的一种形式,[...]” [1]。但这两个词不就是同义词吗?两者有什么区别?

是否有任何不是 JIT 编译的动态编译示例?或者如果做不到这一点,是否存在动态编译这个术语比 JIT 编译更合适的情况?

这两个术语似乎都是指在运行时执行编译。这两个术语似乎都描述了源代码编译和字节码编译。这两个术语似乎都涵盖了运行时优化。

我自己的印象是,JIT 编译是一个变得流行的术语,因为这就是 Java VM 中的动态编译的名称。这个概念越来越流行,其他程序运行时开始复制它,并用相同的名称称它为 JIT 编译。动态编译似乎是早于该开发的术语,并且主要出现在较旧的科学出版物中。

0 投票
0 回答
154 浏览

c# - 动态创建类型:Emit vs Compilation 性能

编辑(TLDR),我的问题是:为什么两种方法之间存在巨大差距(10 倍)

(我认为)有两种动态创建类型的方法:使用 Emit 和在运行时从源代码创建。我想对两者进行基准测试,我发现从源代码编译要快 10 倍。那是正常的吗?我觉得我做错了什么。

在这里,我定义了我正在创建的类型数量(4000)。

这是允许我使用 CSharpCodeProvider 创建 4000 种类型的代码

这是允许我使用 Emit 创建 4000 种类型的代码

CreateAutoImplementedProperty 的源代码:

以下是结果:

  • 编译:00:00:00.8716579
  • 发出:00:00:09.6288015

如何解释性能差距?

0 投票
1 回答
1920 浏览

angular - 使用 AoT 的 Angular 5 动态模板

由于 这篇非常有见地的帖子,我能够使用从端点获取的动态模板动态创建组件,但是这些组件是在运行时使用 RuntimeCompiler 编译的,在使用 AoT 编译时禁用,在生产中也称为 AKA。

有人知道与 AoT 一起使用的类似解决方案吗?

我的要求是:

  • 在运行时获取组件的模板
  • 将来自端点的一些数据存储到组件的属性中
  • 让 Angular 解析模板,尤其是在包含来自端点的数据的属性上工作的包含绑定