问题标签 [chakra]
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.
c# - 克服 1 使用 Chakra 对 Javascript 的投影类的接口限制?
我对仅将第一个界面投射到 Javascript 的限制有疑问。我想知道是否有任何解决方法/解决方法。
我有大约 20 个我想用 Javascript 访问的课程。这 20 个类继承自 BaseModel,其中包含所有 20 个类都使用的重要代码。下面是一个简单的例子:
如果我想用 Javascript 访问它,我必须为所有 20 个类创建 BaseModel。这是因为 Javascript 只能看到第一个接口的属性/方法。那么我的代码就变成了这样:
这变得难以维护,特别是因为我有大约 20 种方法。
我正在寻找是否可以覆盖 Javascript 的设置器,但不知道该怎么做。这个想法是这样的:
然后我可以像这样定义我的类更简单:
有没有这样的方法?
谢谢
javascript - 如何通过 ms chakracore JavaScript 引擎调用 C++ 函数或方法?
ChakraCore 是一个不错的 JavaScript 引擎!
它现代且易于使用干净的 API。
但我不知道如何从 ChakraCore 引擎调用 c++ 函数或方法。
谷歌 V8 和 Mozilas SpiderMonkey 有一个用于此目的的内置系统。
ChakraCore 支持吗?
javascript - Chakracore - 我做错了什么还是我发现了一个错误?
我正在使用来自 C++ 的 Microsoft 的 Chakracore,并且我编写了一个基本的评估器,我可以从 read-eval-print 循环中重复调用它,如下所示:
这似乎适用于大多数情况,但是当我输入 javascript 函数声明时,虽然我可以调用该函数并且它会产生正确的结果,但如果我只是尝试按名称检查函数以查看它的主体,就像我期望的那样对于任何通过调用其 toString() 方法的 javascript 函数,结果显然是垃圾。如果我检查其他函数(例如内置函数),我会看到预期的结果(即,'function function-name() { [native code] }',如果我创建一个匿名函数,例如,var a = function foo ().... 并尝试显示 a 的值,我看到了完整的匿名函数定义。但是,我似乎无法弄清楚如何显示我在 JsRun() 的先前迭代中定义的命名函数。我想我要么做错了什么,要么误解了一些预期的行为,或者我发现了一个错误。然而,我还不够流利地使用 Jsrt API 来确定它是哪一个。
javascript - 考虑到 V8/spidermonkey/chakra 的内部工作原理,在 JavaScript 中显式初始化未定义的对象成员是否是一种优化?
在 JavaScript 中,一个普遍吹捧的良好性能原则是避免改变对象的形状。
这让我想知道,这是
一个有价值的最佳实践,它将提供比这更好的性能
这是真假?为什么?在一个 JS 引擎中是否或多或少是真实的?
ecmascript-6 - ES6 Maps and Sets:如何有效地索引对象键?
在 ES6 中,Maps 和 Sets 可以使用 Objects 作为键。然而,由于 ES6 规范没有规定这些数据结构的底层实现,我想知道现代 JS 引擎如何存储密钥以保证 O(1) 或至少亚线性 检索?
在像 Java 这样的语言中,程序员可以显式地提供一个(好的)hashCode 方法,该方法将在键空间中均匀地散列键以保证性能。然而,由于 JS 没有这样的特性,仍然假设它们在 Maps 和 Sets 实现中使用某种散列仍然公平吗?
任何信息将不胜感激!
javascript - 基于脉轮和 IDispatch 的索引属性
我正在使用本机 Windows API 和 chakrart JavaScript 引擎创建一个可编写脚本的应用程序。我的 IDL 中有如下接口:
我已经能够毫无问题地将本机对象添加到 chakrart 引擎(通过使用 JsVariantToValue 然后在当前上下文的全局对象上设置一个属性)。但是,当我尝试设置事件处理程序时,我收到异常消息“对象不支持此属性或方法”。
我尝试了以下语法变体:
最后一个接近于如何使用 vbscript 完成此操作:
如果我在 IDL 中使用方法语法,如下所示,我只想尽可能使用属性赋值。
还要注意,简单的属性分配确实有效,只有当我尝试索引属性时它才会中断。我确实理解 JavaScript 在 object[prop] 语法上做了一些非常不同的事情,至少对于原生 JavaScript 对象。这可能只是 chakrart 互操作层中的不兼容吗?
reactjs - .NET Core 2.2 Web API、React 和 Google V8
团队,我们决定在 NET CORE 中使用 React 进行 UI 工作。
根据 React URL:https : //reactjs.net/getting-started/aspnetcore.html,我们“还需要安装 JS 引擎才能使用(推荐 V8 或 ChakraCore)”
我们决定使用 Google V8(因为我们使用 Chrome 束而不是 Edge),但我们很难弄清楚需要安装什么 - NUGET 存储库中有许多“V8”图像可用。
问题 #1:需要安装哪些 V8 组件才能让 React 工作?
问题 #2:使用 Google V8 或 ChakraCore 真的很重要吗?根据 URL,提供的示例代码使用 Chakra ...
xmlhttprequest - 如何在 JScript 中使用最新可用的 XMLHttpRequest
我使用以下命令来启动一个 JS 脚本:C:\Windows\System32\cscript.exe /nologo //E:{16d51579-a30b-4c8b-a276-0ff4dc41e755}
为了使用最新的 Chakra 引擎。
在我的脚本中,命令WScript.Echo( ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion() + "." + ScriptEngineBuildVersion());
输出11.0.19326
.
我知道这会提高性能,我想我也可以使用最新的XMLHttpRequest
而不是旧的Microsoft.XMLHTTP
(我需要responseURL),但看起来我不是。
有解决办法吗?
windows - 如何将 void 指针传递给 Golang 中的 Windows DLL (void**)
我正在尝试让 ChakraCore.dll 使用 Golang 在 Windows 上加载,但我无法确定需要作为第三个参数传入的参数类型。
我从阅读库代码并松散地遵循Embedding ChakraCore的假设是,第三个参数需要是一个 void 指针指针(void**),因为头文件将 JsRuntimeHandle 定义为typedef void *JsRuntimeHandle;
如果可能的话,我希望避免使用 CGo。
控制台输出:
恐慌:JsCreateRuntime 失败:在不允许 null 的上下文中,托管 API 的参数为 null。(JsErrorNullArgument)
代码:
javascript - 在 Windows 上静态构建 Chakra-Core (C++)
我想静态构建脉轮核心。目前,在 Visual Studio 中,我必须ChakraCore.lib
在编译时和ChakraCore.dll
运行时链接。DLL
我尝试通过将配置类型从更改为来通过 Visual Studio 构建解决方案,LIB (static library)
但这会导致错误。所以我只想在编译时与 Chakra-Core 链接,不想将其DLL
与我的可执行文件一起分发。
如果我使用 LIB(静态库)配置构建项目,我会收到此错误:
ChakraCore-master\Build\VcBuild\obj\x64_release\ChakraCore\ChakraCore.def : fatal error LNK1107: invalid or corrupt file: cannot read at 0x18B5 2>Done building project "ChakraCore.vcxproj" -- FAILED. ========== Build: 0 succeeded, 1 failed, 25 up-to-date, 1 skipped ==========