【问题标题】:How does one control how Handlebars generates newline characters?如何控制 Handlebars 如何生成换行符?
【发布时间】:2013-11-22 00:03:09
【问题描述】:

我正在 Mac 和 Windows 上开发一个项目。如果我在 Mac 上构建项目,Handlebars 模板会将换行符转换为包含 LF(换行符)字符的字符串。如果我在 Windows 上执行相同的步骤,它会将换行符转换为包含 CRLF(回车和换行)字符串的字符串。

目前尚不清楚问题的根源是 Handlebars、Node、Cygwin、Cake 还是 Git。直觉上,我可能认为 Handlebars 是基于模板的精确性质,Git 会根据我在哪台机器上自动将模板的新行转换为 CRLF 或 LF。

例如两台机器上Handlebars输出的差异:

Mac (LF):

function program1(depth0,data) 
{
   var buffer = "", stack1;
   buffer += "\n  ";
   stack1 = helpers.each.call(depth0, depth0.produces, {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
   if(stack1 || stack1 === 0) { buffer += stack1; }
   buffer += "\n";
   return buffer;
}

Windows (CRLF):

function program1(depth0,data) 
{
   var buffer = "", stack1;
   buffer += "\r\n  ";
   stack1 = helpers.each.call(depth0, depth0.produces, {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
   if(stack1 || stack1 === 0) { buffer += stack1; }
   buffer += "\r\n";
   return buffer;
}

如何控制这种行为,使其保持一致而不依赖于平台?

【问题讨论】:

  • 您找到解决方法了吗?我也有类似的问题。

标签: git cakephp cygwin newline handlebars.js


【解决方案1】:

试试这个,自己没有测试过:

document.write(String.fromCharCode(11));

http://nemesis.lonestar.org/reference/telecom/codes/ascii.html

CR 是 13,LF 是 10。

【讨论】:

    【解决方案2】:

    我在使用 Windows 时与使用 Mac 的前端开发人员合作时遇到了同样的问题。 Handlebars 尊重模板中的 CR LF 并将其传递,这导致节点模块(例如 highlight.js)无法正确处理 CR 字符。

    问题是 git 上的默认设置是在 Windows 上执行 git 操作时将 LF 行尾转换为 CR LF 行尾。当我从我的 Mac 朋友那里提取代码时,会发生转换并搞砸我。

    解决方案是使用以下命令更改 git config 设置:

    git config --global core.autocrlf input
    

    因此不再发生转换(有关更多信息,请参阅https://stackoverflow.com/a/5834094/117797)。

    我还必须通过清除和重新建立 git 索引来修复我当前的回购状态:

    //clear git index
    git rm --cached -r .
    
    //re-write git index
    git reset --hard
    

    请参阅https://stackoverflow.com/a/29888735/117797 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-11
      • 2014-08-10
      • 2011-02-06
      • 2017-04-22
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多