小编sup*_*kas的帖子

静态站点生成器,它生成JSON而不是HTML

我是像MiddlemanJekyll这样的静态站点生成器的忠实粉丝.从平面文件生成完整的博客并将其放在Amazon S3上而不必担心与数据库相关的性能和/或安全问题感觉非常棒.

花了一些时间用AngularJS,Ember和Backbone开发Web应用程序后,我觉得生成JSON文件而不是HTML至少值得一试.

我已经使用Jekyll,Liquid Templates和shell脚本实现了这个想法,但它不仅仅是一个概念证明.也许你们其中一个人想出了同样的想法,知道一个更适合这样的任务的静态站点生成器还是还有其他什么可以共享?

markdown json jekyll backbone.js middleman

6
推荐指数
0
解决办法
619
查看次数

Go 的链接器可以覆盖初始化的变量吗

来自ld 的文档

-X 符号值

设置未初始化的字符串变量的值。符号名称应采用 importpath.name 的形式,如“go tool nm”打印的符号表中所示。

所以这很酷。它允许你做这样的事情:

package main

import "fmt"

var version string

func main() {
    fmt.Println(version)
}
Run Code Online (Sandbox Code Playgroud)

编译:go build -ldflags '-X main.version 42' ...

我对他的功能有两个问题。首先,它也适用于初始化的字符串(例如var version = "bad build"),即使文档明确指出“否则未初始化的字符串变量”。

第二题是关于空格的。我的Makefile包含以下几行:

GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null)
GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null)

LDFLAGS := '-X main.version "$(GIT_BRANCH) $(GIT_COMMIT)"'
Run Code Online (Sandbox Code Playgroud)

命令的文档go说:

-ldflags 'flag list'

因此他们对所有链接器标志使用单引号。但是包含空格作为标志符号的字符串又如何呢-X?双引号工作得很好,顺便说一句,转义单引号也是如此,我只是不确定我是否可以依靠所有这些来一致地工作,因为文档没有提及任何内容。

第一个问题的澄清:

对所有变量进行零初始化。

文档说: …

go

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

不能要求本地CoffeeScript模块

我正在运行Node.js 0.10.21.我尝试了两种CoffeeScript 1.6.3,无论是否使用require('coffee-script/extensions').将这两个文件编译为JavaScript并直接在Node中运行它们当然可以正常工作.

# ./folder/a.coffee
require('../b').test()

# ./b.coffee
exports.test = -> console.log 'yay'

# $ coffee folder/a.coffee
#
# Error: Cannot find module '../b'
#   at Function.Module._resolveFilename (module.js:338:15)
#   at Function.Module._load (module.js:280:25)
#   at Module.require (module.js:364:17)
#   at require (module.js:380:17)
#   at Object.<anonymous> (/Users/test/folder/a.coffee:1:1)
#   at Module._compile (module.js:456:26)
Run Code Online (Sandbox Code Playgroud)

node.js coffeescript

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

JavaScript构造函数模式

我正在寻找一个理智的解决JavaScript只有一个构造函数的问题.所以假设我们有一个类Point,我们希望允许从坐标创建对象.

我会在所有这些例子中忽略类型检查.

function Point(x, y) {
  this.x = x;
  this.y = y;
}
Run Code Online (Sandbox Code Playgroud)

简单.如何从其他点创建积分?

function Point(x, y) {
   if (!y /* && x instanceof Point */) {
     y = x.y;
     x = x.x;
   }
   this.x = x;
   this.y = y;
}
Run Code Online (Sandbox Code Playgroud)

这很快变成了一场噩梦.所以我想要的是一个设计模式,它将这两个构造函数分离(或者将一个分成两个,而不是).Objective-C有一个很好的模式.ObjC人某物创造物体.

function Point(x, y) {
  this.x = x;
  this.y = y;
}

Point.withPoint = function(point) {
  return new Point(point.x, point.y);
};
Run Code Online (Sandbox Code Playgroud)

到目前为止,我非常喜欢这个.但现在我们有两种不同的语法.

var a = new Point(4, 2);
var b = Point.withPoint(a);
Run Code Online (Sandbox Code Playgroud)

好吧,这很容易,不是吗?只需添加Point.withCoordinates.但那么构造函数呢?把它藏起来?我不知道.我想这就是你进来的地方. …

javascript constructor design-patterns

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