小编Kon*_*n K的帖子

Meteor模板事件处理程序中的"this"上下文(使用Handlebars进行模板化)

关于Meteor中模板事件处理程序(带Handlebars)的上下文的快速问题.

  • 在关于模板实例的文档部分(http://docs.meteor.com/#template_inst)中,提到" 在创建,呈现和销毁的模板回调中找到模板实例对象作为其值,并作为事件处理程序的参数 "
  • 在"模板"部分(http://docs.meteor.com/#templates)中,它说" 最后,您可以在模板函数上使用事件声明来设置事件处理程序表.格式在事件映射中记录.事件处理程序的this参数将是触发事件的元素的数据上下文. "

嗯,这只是部分正确.让我们使用文档中的示例:

<template name="scores">
  {{#each player}}
    {{> playerScore}}
  {{/each}}
</template>

<template name="playerScore">
  <div>{{name}}: {{score}}
    <span class="givePoints">Give points</span>
  </div>
</template
Template.playerScore.events({
  'click .givePoints': function () {
    Users.update({_id: this._id}, {$inc: {score: 2}});
  });
Run Code Online (Sandbox Code Playgroud)

这里'click .givePoints'事件处理程序的"this"上下文确实是playerScore的模板实例.我们来修改html:

<template name="scores">
  <span class="click-me">Y U NO click me?<span>
  {{#each player}}
    {{> playerScore}}
  {{/each}}
</template>

<template name="playerScore">
  <div>{{name}}: {{score}}
    <span class="givePoints">Give points</span>
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

...并在分数模板上为.click-me添加事件处理程序:

Template.scores.events({
  'click .click-me': function () {
    console.log(this);
  } …
Run Code Online (Sandbox Code Playgroud)

javascript handlebars.js meteor

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

未使用的CSS - 你如何清理它?

也许任何有经验的Web开发人员应该熟悉这个问题:随着时间的推移你的CSS文件可以增长非常巨大的,丑陋的,因为所有的不再使用的选择,这可能是相当棘手找到.我正在研究一个我们倾向于经常重新设计东西的轨道项目,这导致了一吨无谓的CSS.查找和删除它的最佳方法是什么?

现在,我知道有一个专门为此目的而构建的称为deadweight的rails插件.但是,这是我的载重量问题:首先,它完全忽略了javascript中使用的选择器.接下来,它仅扫描您将其配置为扫描的页面,这意味着存在删除由于某种原因您未扫描的页面上使用的内容的风险.最后,它只在编译的css中找到未使用的选择器(我们使用LESS) - 将这些与实际代码相匹配有点过于复杂.

我也尝试过http://unused-css.com/ - 它们很棒,但无法访问localhost,而且只能扫描已编译的CSS.

我真的认为必须有更好的方法来做到这一点.实际上,前段时间我决定通过在整个项目目录中点击每个选择器来优化一个特定的css文件(emacs + rinari模式使它超级简单和超快),每次我都没有看到任何html或css在结果中我删除了样式.零问题,就像一个魅力.显然,我不打算在整个网站上这样做.但是,我真的不相信这不能自动化.现在,在我启动我的python并编写代码之前,任何人都可以告诉我,如果我要重新发明轮子吗?

javascript css optimization frontend ruby-on-rails

22
推荐指数
1
解决办法
7764
查看次数

Heroku NODE_ENV环境变量

我正在运行一个Node项目,Heroku作为我的主要部署目标.在开发环境中我使用grunt来启动Web服务器,但是在生产中我更喜欢直接启动应用程序node app

这是我的Procfile:

web: bin/web
Run Code Online (Sandbox Code Playgroud)

和bin/web:

#!/bin/sh                                                                       
echo "NODE_ENV=" $NODE_ENV
if [ "$NODE_ENV" == "production" ]; then
    echo "Starting the server with node app"
    node app
else
    echo "Starting the server using grunt"
    grunt
fi
Run Code Online (Sandbox Code Playgroud)

第一个echo是调试.heroku日志显示:

app[web.1]: NODE_ENV=
Run Code Online (Sandbox Code Playgroud)

基本上,意思是没有设置NODE_ENV.(并且应用程序以grunt开头而不是node app)

文件说,"该NODE_ENV环境变量默认为生产,但如果你愿意,你可以重写它"

我错过了什么?

heroku node.js

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