小编dcs*_*san的帖子

流星定位/ i18n libs比较

我正在尝试评估哪一个使用,所以会感谢做出这个决定的其他人的任何反馈.似乎有两个大的翻译项目:

的MessageFormat

http://messageformat.meteor.com/

PROS

  • 基于MessageFormat.js的实体库
  • 包括提取工具
  • 如果在应用程序中更新字符串,则处理模糊字符串和版本
  • javascript和把手方法
  • 用于字符串翻译的预建翻译工具/ webUI http://messageformat.meteor.com/translate/af
  • 由流星大师活跃的社区人Gadi撰写

TAP i18n

https://github.com/TAPevents/

笔记:

  • 基于i18next引擎
  • 使用AJAX加载语言

PROS

利弊? - 只有JSON格式,没有yaml,编辑非常繁琐 - 没有用于管理字符串的webUI

还有一些其他项目,如https://github.com/Nemo64/meteor-translator, 但上面两个似乎是最彻底的.我错过了其他人吗?

选择合适的工具时人们会使用哪些其他标准?messageFormat与i18next的基础技术似乎是一个因素.

问题:

1)页面中有多种语言

我正在尝试做一个双语应用程序但是:

点击:"只通过网络发送当前客户端语言所需的翻译"

这是否意味着语言只能是A或B,而不是混合,基于会话自动切换?

即如何在页面中提供助手以进行多次翻译

  EN: {{tr "string", 'en'}}
  FR: {{tr "string", 'fr'}}
Run Code Online (Sandbox Code Playgroud)

2)提取动态数据

至少messageFormat项目将捕获/提取静态页面中的字符串,但如果我已经在复杂的mongo集合中有很多内容,有没有办法捕获它?

感谢包装创作者或该领域其他人的任何见解.

javascript internationalization messageformat meteor i18next

5
推荐指数
1
解决办法
4160
查看次数

如何声明与 ESLint 一起使用的 mongoose 静态方法

使用 Mongoose ORM 进行 MongoDB

我声明了一个猫鼬静态方法,如下所示:

ConvoDataSchema.statics.randomItem = async function () { ... }
Run Code Online (Sandbox Code Playgroud)

然后用它创建一个模型

const ConvoData = mongoose.model('ConvoData', ConvoDataSchema)
Run Code Online (Sandbox Code Playgroud)

但后来当我想调用该方法时:

let convoData = await ConvoData.randomItem()
Run Code Online (Sandbox Code Playgroud)

我的 linter 不知道ConvoDataMongoose 已经修补了这个神奇的方法。

我如何声明这些方法,以便 Linter (TSLint / VSCode Intellisense) 可以正确发现这些方法?

mongoose node.js eslint mongoose-schema

5
推荐指数
1
解决办法
814
查看次数

如何让 Jest --watch 在 JSON/YAML 文件的更改上运行?

我正在运行一些--watch依赖于数据固定装置的笑话测试。我希望在编辑数据文件时触发手表运行,而不仅仅是代码。我已将以下内容添加到我的package.json专门添加yamlmoduleFileExtensions,但仍然没有任何运气。基于: https: //jestjs.io/docs/en/configuration#modulefileextensions-arraystring

我是否可以进行设置来查看package.json它是否被拾取?我想下一步是尝试使用.js配置,抛出一些错误,看看我是否找错了树!

yaml 文件不是“导入”的一部分,否则它们只是由我的代码加载。所以我希望有一种方法可以“触摸”文件来重新触发手表运行。

也许 watch 命令还需要指定要监视哪些数据文件?

  "jest": {
    "verbose": true,
    "modulePaths": [
      "cdn",
      "src"
    ],
    "moduleFileExtensions": [
      "js",
      "json",
      "jsx",
      "ts",
      "tsx",
      "yaml"
    ]
Run Code Online (Sandbox Code Playgroud)

testing yaml node.js jestjs

5
推荐指数
1
解决办法
949
查看次数

Material-UI 表单标签位置

Material-ui用+制作表格react。有没有办法将标签布局到输入字段的一侧?它更具可读性。

像这样:

name   [input]
title  [input]
Run Code Online (Sandbox Code Playgroud)

而不是

name  
[input]
title 
[input]
Run Code Online (Sandbox Code Playgroud)

我只能找到将标签和输入区域混合在一起的字段。我可以构建自己的组件或网格,但似乎这是一个应该存在的明显布局。

文档页面 https://material-ui.com/components/text-fields/

在此输入图像描述

在此输入图像描述

css forms reactjs material-ui formik-material-ui

5
推荐指数
1
解决办法
6519
查看次数

prisma - 快速模型更新和保存?

只是想知道我是否在棱镜中遗漏了一些东西。如果我有一个工作对象并选择修改它,我可以像大多数 ORM 中那样“保存”该对象吗?

否则我必须复制所有代码,包括所有字段更改。


// findOrCreate:
const user = await prisma.user.upsert({ ...

user.balance += 1

await user.save() // doesn't work

// so i have to do all this?
await prisma.user.update({ 
  where: { id: user.id }, 
  data: { balance: user.balance } })

Run Code Online (Sandbox Code Playgroud)

我认为有一个更简洁的语法可以做到这一点,但无法用谷歌搜索它。

orm prisma

5
推荐指数
0
解决办法
1749
查看次数

使用 prisma 创建 1:n 关系的对象

我有两个模型,Fish 和 BoardFish\n具有 1:1 关系 - BoardFish 是 Fish 的一种类型\n我创建了一些具有命名类型的种子 Fish。

\n

我怎样才能在 Prisma 中做到这一点?我认为我已经有了模式设置,但是除了花哨/嵌套类型之外,插入数据并没有真正记录下来。

\n

架构:

\n
model Fish {\n    name      String      @id\n    boardFish BoardFish[]\n}\n\nmodel BoardFish {\n    id       Int    @id @default(autoincrement())\n    name     String\n    fishType Fish   @relation(fields: [name], references: [name])\n}\n
Run Code Online (Sandbox Code Playgroud)\n

尝试创建:

\n
        let fishes = []\n        for (let c = 0; c < fishCount; c++) {\n            const fishType = await prisma.fish.findFirst({ where: { name: 'salmon' } })\n            const fishData = {\n                fishType: fishType!.name,\n                // name: 'salmon',\n                px: 0,\n                py: …
Run Code Online (Sandbox Code Playgroud)

orm typescript prisma

5
推荐指数
1
解决办法
4527
查看次数

Tracker.autorun如何选择计算?

看看Tracker.autorun,这主要是神奇地工作......但我想知道它是如何决定哪些变量将形成计算的依赖.它只挑选出"反应性"变量,例如:

  window.bar = 1
  Tracker.autorun (c) =>
    bar = window.bar
    foo = Session.get('foo')
    console.log('autorun', foo, bar)
Run Code Online (Sandbox Code Playgroud)

如果我更改此值Session.set('foo')将导致计算再次运行.而只是改变window.bar不会导致重新运行.如果我使用订阅结果(不是集合),这也有效,所以我猜也是反应性的.

是否有任何指南可以更好地理解这种行为?

编辑:

感谢下面的评论,澄清计算是可以推断的,因为访问器用于反应变量,因此流星可以跟踪deps.

但是我需要更清楚一点来理解var被标记的时间.例如,在下面的这个例子中,subscribe调用在外面autorun,但它将结果放入一个数组中.这意味着Tracker不仅跟踪对(reactive var)访问器方法的调用,而且还跟踪块中引用的任何变量 - 即使设置这些方法的调用都在autorun()块之外.

  subList = [
    Meteor.subscribe("Players"),
    Meteor.subscribe("Stuff" )
  ]

  Tracker.autorun (c) =>
    subReady = _.filter subList, (item) ->
      return item.ready()
    allDone = (subList.length == subReady.length)
    # this code will rerun when the subs ready() are true
Run Code Online (Sandbox Code Playgroud)

也许我应该把它添加为一个新问题......它与这个问题有关.

meteor

4
推荐指数
1
解决办法
2791
查看次数

如何使用TypeScript和mocha进行异步/等待测试

我有一个简单的异步mocha测试,但done()似乎永远不会调用回调.

describe("RiBot", function() {
  it("should start with a random topic", async (done) => {
    await RiBot.init();
    let topic = RiBot.getTopic("testuser")
    assert.equal(topic, "FAILHERE");
    done()
  })
})
Run Code Online (Sandbox Code Playgroud)

在这种情况下,断言应该失败,但我只是暂停.

  RiBot
  RibotTest topic +0ms undefined
    1) should start with a random topic


  0 passing (2s)
  1 failing

  1) RiBot should start with a random topic:
     Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
Run Code Online (Sandbox Code Playgroud)

编辑:当我使用断言运行标准JS代码时:

async function testRiBot() {
  try {
    await RiBot.init()
    let topic = …
Run Code Online (Sandbox Code Playgroud)

mocha.js async-await typescript

4
推荐指数
1
解决办法
4336
查看次数

如何在提交时处理 q-input / preventDefault 中的“输入”?

我有一个文本输入字段,例如:

        <q-input
          @blur="checkTextAnswer"
          @keyup.enter="submit"
          @keydown="checkEnterKey"
          v-model.trim="textInput"
Run Code Online (Sandbox Code Playgroud)

当用户点击输入时,我想把它当作提交,即处理输入而不是在文本中添加额外的换行符。

这有点像preventDefaultJQuery 时代。我确实找到了这个:https : //quasar-framework.org/components/other-utils.html 但似乎更一般的 DOM 事件

我也尝试过只修改字符串(str.replace 换行符),但即使是这种 hack 也有一个丑陋的延迟。

javascript forms preventdefault quasar-framework

4
推荐指数
1
解决办法
5516
查看次数

如何在famo.us scrollview上添加滚动条?

有关这个问题,关于滚动型我感兴趣的是相反的-如何控制从代码中滚动,并添加滚动条.只是想知道famo.us是否有任何预设方法来执行此操作,或者我们是否必须手动编码所有内容.

当前的滚动视图在移动设备上很棒,但对于PC用户来说,例如在没有鼠标滚轮的笔记本电脑上,它们是不可用的......

famo.us

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