gpt4 book ai didi

javascript - Meteor 中的重复代码

转载 作者:搜寻专家 更新时间:2023-11-01 05:05:47 24 4
gpt4 key购买 nike

我一直在用 Meteor 开发一个小应用程序。我注意到一种代码模式开始困扰我。

Template.userForm.helpers({
name: function(){
user = Meteor.users.findOne(Session.get('edit-user'));
return user && user.profile.name;
},

_user_id: function(){
user = Meteor.users.findOne(Session.get('edit-user'));
return user && user._id;
},
email: function(){
user = Meteor.users.findOne(Session.get('edit-user'));
return user && user.emails && user.emails[0].address;
},

});

问题是看到 variable && variable.attribute 代码重复。如果我不以这种方式编写代码,我会收到有关 undefined variable 的错误。

有更好的方法吗?我错过了什么?

最佳答案

return variable && variable.attribute 等价于 more elaborate

if(variable) return variable.attrubite;

return false;

这是必要的,因为如果 variablenull - 这在页面加载和集合膨胀之间一直发生 - 调用 variable.attribute引发异常:null 没有属性。

所以不,无法逃避该检查。如果这个口味困扰您,您可以选择另一种口味 - 就个人而言,我将实际返回留给最后一行并提前检查正确性:

if(! variable) return null;

return variable.attribute;

可以避免的是这一行——它也在你所有的助手中重复:

user = Meteor.users.findOne(Session.get('edit-user'));


然而,在上述情况下,所有属性都属于一个对象。那么为什么不传递这个单个对象呢?

用户表单.js:

Template.userForm.user = function() {
return Meteor.users.findOne(Session.get('edit-user'));
}

用户表单.html:

<template name="userForm">
<span data-id="{{user._id}}">
Name: {{user.name}}, email: {{user.email}}
</span>
</template>

甚至:

<template name="userForm">
{{#with user}}
<span data-id="{{_id}}">
Name: {{name}}, email: {{email}}
</span>
{{/with}}
</template>

关于javascript - Meteor 中的重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17574543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com