我正在尝试评估哪一个使用,所以会感谢做出这个决定的其他人的任何反馈.似乎有两个大的翻译项目:
http://messageformat.meteor.com/
PROS
笔记:
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
使用 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 不知道ConvoData
Mongoose 已经修补了这个神奇的方法。
我如何声明这些方法,以便 Linter (TSLint / VSCode Intellisense) 可以正确发现这些方法?
我正在运行一些--watch
依赖于数据固定装置的笑话测试。我希望在编辑数据文件时触发手表运行,而不仅仅是代码。我已将以下内容添加到我的package.json
专门添加yaml
中moduleFileExtensions
,但仍然没有任何运气。基于:
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) Material-ui
用+制作表格react
。有没有办法将标签布局到输入字段的一侧?它更具可读性。
像这样:
name [input]
title [input]
Run Code Online (Sandbox Code Playgroud)
而不是
name
[input]
title
[input]
Run Code Online (Sandbox Code Playgroud)
我只能找到将标签和输入区域混合在一起的字段。我可以构建自己的组件或网格,但似乎这是一个应该存在的明显布局。
只是想知道我是否在棱镜中遗漏了一些东西。如果我有一个工作对象并选择修改它,我可以像大多数 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)
我认为有一个更简洁的语法可以做到这一点,但无法用谷歌搜索它。
我有两个模型,Fish 和 BoardFish\n具有 1:1 关系 - BoardFish 是 Fish 的一种类型\n我创建了一些具有命名类型的种子 Fish。
\n我怎样才能在 Prisma 中做到这一点?我认为我已经有了模式设置,但是除了花哨/嵌套类型之外,插入数据并没有真正记录下来。
\n架构:
\nmodel 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) 看看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)
也许我应该把它添加为一个新问题......它与这个问题有关.
我有一个简单的异步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) 我有一个文本输入字段,例如:
<q-input
@blur="checkTextAnswer"
@keyup.enter="submit"
@keydown="checkEnterKey"
v-model.trim="textInput"
Run Code Online (Sandbox Code Playgroud)
当用户点击输入时,我想把它当作提交,即处理输入而不是在文本中添加额外的换行符。
这有点像preventDefault
JQuery 时代。我确实找到了这个:https :
//quasar-framework.org/components/other-utils.html
但似乎更一般的 DOM 事件
我也尝试过只修改字符串(str.replace 换行符),但即使是这种 hack 也有一个丑陋的延迟。
有关这个问题,关于滚动型我感兴趣的是相反的-如何控制从代码中滚动,并添加滚动条.只是想知道famo.us是否有任何预设方法来执行此操作,或者我们是否必须手动编码所有内容.
当前的滚动视图在移动设备上很棒,但对于PC用户来说,例如在没有鼠标滚轮的笔记本电脑上,它们是不可用的......
forms ×2
javascript ×2
meteor ×2
node.js ×2
orm ×2
prisma ×2
typescript ×2
async-await ×1
css ×1
eslint ×1
famo.us ×1
i18next ×1
jestjs ×1
material-ui ×1
mocha.js ×1
mongoose ×1
reactjs ×1
testing ×1
yaml ×1