小编Shi*_*sad的帖子

在覆盖期间组合 ESLint 规则

我正在开发一个混合了 TypeScript 和 JavaScript 文件的项目,并且我正在尝试为它们设置 linting 规则。我使用 ESLint 来 lint JS 文件,并使用typescript eslint 插件来 lint typescript 文件。由于我要添加 linting 的代码库相当大,我不得不关闭 JS 和 TS 的一些规则。当我尝试为 ESLint 创建配置文件时,这被证明是有点问题。在我的配置文件中。我有 JS 文件的主要规则集,然后为 *.ts 文件创建了一个覆盖部分,我可以在其中使用 typescript lint 规则。我的配置文件如下所示(规则部分只是代表性的)。

{
    "extends": "eslint:recommended",
    "rules": {
        "no-unused-vars": "off",
        "no-undef": "error",
        "max-classes-per-file": "off"
    },
    "env": {
        "es6": true,
        "browser": true
    },
    "parserOptions": {
        "ecmaVersion": 10
    },
    "overrides": [
        {
            "files": [
                "*.ts"
            ],
            "extends": [
                "eslint:recommended",
                "plugin:@typescript-eslint/recommended"
            ],
            "rules": {
                "@typescript-eslint/no-unsafe-argument": "off",
                "@typescript-eslint/no-unsafe-member-access": "off"
            },
            "parserOptions": {
                "project": …
Run Code Online (Sandbox Code Playgroud)

javascript typescript eslint typescript-eslint

11
推荐指数
1
解决办法
2万
查看次数

将LCID转换为语言字符串

在我的应用程序中,我必须查询系统和用户区域设置并将它们作为字符串返回(如en-US而不是语言代码).我可以从GetSystemDefaultLCID()和GetUserDefaultLCID()函数中获取这些语言的LCID,但我正在努力的是从LCID到语言字符串的转换.

我的应用程序也必须在Windows XP上运行,所以我不能使用LCIDToLocaleName()Win API.到目前为止我唯一能够获取语言环境名称的方法是使用GetLocaleInfo()Win API,方法是将LOCALE_SYSTEM_DEFAULT和LOCALE_USER_DEFAULT作为LCID和LOCALE_SISO639LANGNAME传递为LCType.我的代码看起来像查询系统区域设置

int localeBufferSize = GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SISO639LANGNAME, NULL, 0);
char *sysLocale = new char[localeBufferSize];
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SISO639LANGNAME, sysLocale,localeBufferSize);
Run Code Online (Sandbox Code Playgroud)

但我得到的价值只是语言名称(仅限en-US).要获得完整的语言环境,我必须两次调用GetLocaleInfo()将LOCALE_SISO3166CTRYNAME作为LCType传递,然后附加两个值.有没有更好的方法来做到这一点?

c++ locale

6
推荐指数
1
解决办法
6489
查看次数

在Mono for Mac上为DllImport设置本机库的路径

我移植到Mono for Mac的代码调用了一个非托管的C++库.在Mac上,我已将非托管库移植到框架中(不幸的是,我们的构建过程只允许将其编译为框架而不是作为dylib).在Mono中,我在项目中设置了一个构建后步骤,以复制构建应用程序旁边的Framework文件.

但是当一个P/Invoke进入这个DLL时,我得到一个DllNotFound异常.我通读了Mono Interop Wiki,看起来Mono上的P/Invoke只会查看DYLD_*环境变量指向的位置,而当前目录不在搜索路径中.当我将Framework复制到/ Library/Frameworks时,我的P/Invoke调用工作正常,但我更喜欢我的Framework文件出现在App旁边而不是/ Library/Frameworks中.

在我执行任何P/Invoke调用之前,我尝试将当前工作目录添加到我的代码中的DYLD_FRAMEWORK_PATH环境变量,但System.Environment命名空间在Mono for Mac上具有有限的功能,并且不支持获取或设置环境变量.

无论如何,我可以将我的框架文件保留在应用程序旁边,仍然可以使用P/Invoke吗?

pinvoke environment-variables monomac

6
推荐指数
1
解决办法
3557
查看次数

等待 JavaScript 中的动态导入

在尝试移植我们的一些 JS 代码以使用模块时,我遇到了这个我无法解释的特殊情况。我正在设置我的主要 JS 文件,以便为我的主要入口点进行动态导入,然后他们又为他们需要的所有文件进行导入。设置如下所示:

索引.js

(async function () {
    await import('./firstLevel1.js');
    await import('./firstLevel2.js');
 })()
Run Code Online (Sandbox Code Playgroud)

第一层1.js

(async function () {
    await import('./secondLevel1.js');
    await import('./secondLevel2.js');
})()
Run Code Online (Sandbox Code Playgroud)

第一层2.js

(async function () {
    await import('./secondLevel3.js');
    await import('./secondLevel4.js');
})()
Run Code Online (Sandbox Code Playgroud)

由于我导入的某些代码是遗留代码,因此我将 index.js 的脚本标记设置为 async="false" 以确保所有文件都以正确的顺序加载。在这个特定的例子中,我希望加载顺序是 index.js、firstLevel1.js、secondLevel1.js、secondLevel2.js、firstLevel2.js。secondLevel3.js 最后是 secondLevel4.js。但是当我查看 chrome 中的加载顺序时,这就是我所看到的。

在此处输入图片说明

这对我来说变得有问题,因为 JS 加载的顺序不是我想要正确设置旧文件的顺序。

为什么我看到的加载顺序与我预期的不同?有没有办法让它们同步加载?

javascript dynamic-import es6-module-loader es6-modules

3
推荐指数
1
解决办法
8424
查看次数