这有点长,但我需要代码示例来说明我的困惑.之后我对以下内容的答案感兴趣:
require('module')
,而不是require('../../src/module')
或require('./module')
?./index.js
在spec/specs.js
不重复工作的情况下重复使用?(并且src/app.js
因为它是一个入口模块而阻止运行).我已经开始了几个基于浏览器的项目,并喜欢browserify和grunt.但是每个项目在我的开发/学习曲线中都处于同一点.一旦我添加测试混合并且必须管理两个browserify捆绑包(app.js
和spec/specs.js
),整个系统就会崩溃.我会解释一下:
我使用grunt-browserify并设置我的初始目录:
.
??? Gruntfile.js
??? index.js (generated via grunt-browserify) [1]
??? lib
? ??? jquery
? ? ??? jquery.js [2]
? ??? jquery-ui
? ??? jquery-ui.js [3]
??? spec
? ??? specs.js (generated via grunt-browserify) [4]
? ??? src
? ??? spec_helper.js (entry)
? ??? module_spec.js (entry)
??? src
??? app.js (entry)
??? module.js …
Run Code Online (Sandbox Code Playgroud) 在我的Jekyll博客中,我使用include标记将文件的内容放入文档中.但是,如果我尝试使用基于HAML的文档执行此操作,则包含的文本的缩进是错误的.:preserve
不起作用,因为它需要缩进.有没有办法在不依赖缩进的情况下指定文本块?
%html
%body
- preserve do
<strong>included text from file</strong>
- end
Run Code Online (Sandbox Code Playgroud) 我正在学习 Node.js 并认为我有一个非常简单的脚本,但是任何调整都不会让我的脚本永远挂起。
假设我有一个愚蠢的服务器正在运行:
$ nc -l 32001 <<EOF
HTTP/1.1 200 OK
Content-Type: text/plain
Works
EOF
Run Code Online (Sandbox Code Playgroud)
我运行以下脚本:
var http = require('http');
var options = {
hostname: 'localhost',
port: 32001,
method: 'POST',
headers: {'Content-Type': 'text/plain'}
};
var req = http.request(options, res => {
var exitCode = res.statusCode >= 200 && res.statusCode < 300 ? 0 : 1;
res.pipe(process.stdout).on('end', () => process.exit(exitCode));
});
req.on('error', error => console.error(error));
process.stdin.pipe(req)
.on('end', () => console.log('this does trigger'));
Run Code Online (Sandbox Code Playgroud)
但是当我执行以下操作时:
$ echo foobar | node my-script.js
Run Code Online (Sandbox Code Playgroud)
它只是挂起,永远不会到达请求回调。我希望 …
我观看了以下Google Apps Office视频,并了解了如何使用browserify将JS封装到一个文件中,使用节点CommonJS打包系统.我喜欢这个想法,因为它还添加了许多移植到浏览器的节点库,它可以处理CoffeeScript.
视频没有涉及的一件事是如何制作一个有多个视图的Chrome应用程序仍然以干燥的方式使用browserify .让我解释.通常,您的browserify命令会获取一系列JS文件(设计为模块),并将其连接到一个带有一些包装糖的JS文件中.您很高兴从您的内容页面,背景页面或弹出页面引用该JS文件.但是,如果您的应用程序同时具有后台页面和弹出页面,那么您是否会在每个页面中包含相同的已编译JS文件?这会不会导致chrome加载脚本两次(在两个实例中)?如果是这样,似乎很多浪费只是为了得到你想要的零件而解释一切.或者require()/ exports模式是否可以防止对特定上下文可能不需要的模块进行不必要的解释?
如果这不是最佳实践,那么如何以一种方式打包模块,使每个页面以干燥的方式获得所需的模块,而不必重复自己或每页都有单独的浏览器捆绑包?其他人如何接触这个话题?
我有一个构建到dist/
目录的ember-cli项目.我已将应用程序配置为处理dist/
目录中的资产,并将历史记录设置为使用哈希而不是pushState.这允许我将sym链接index.html
到根.理由是将项目推送到gh-pages
GitHub上需要root index.html
和ember应用程序要求路由绝对不是相对的(AFAIK).但是,GitHub不会遵循sym-links并需要输出的副本index.html
.这有效,现在我有2个构建步骤(ember build
和cp dist/index.html ./index.html
).
如何在完成构建后告诉我Brocfile.js
复制输出的index.html
文件?
一点回溯历史:我正在开发一个ember-cli插件.我在GitHub上托管它.我需要提供一个演示站点.gh-pages
是举办演示网站的正确位置.所以我在gh-pages
分支中创建了一个ember-cli应用程序.我无法设置输出文件夹,./
因为ember构建将rm -rf
输出目录销毁源.所以必须如此dist/
.我无法使用,<meta http-equiv="Refresh"...
因为Ember在开始时陷入了路径和崩溃.所以我的解决方案是将sym-link/copy更新index.html
到更高级别并更改ember的配置以将dist/
目录添加到资源并将路由设置为hash而不是pushState.
我目前有一个deply.sh
脚本可以做到这一点,但我想知道是否有一种方法使用西兰花这个?
也许这有点深奥,但我需要一些帮助.
我的用例是时钟自动收报机.我想要一个init()
可以启动计时器的服务.(例如AJAX轮询服务).我希望这可以从app启动开始,但我不希望将它注入到每个对象类型中.
我尝试过的:
Ember.inject.service()
在应用程序控制器中使用.app.register(…, MyService.create(), {instantiate: false})
而不调用app.inject(…)
.init()
,而不是Ember.inject.service()
它到应用程序的路由/控制器和其init()
通话this.get('myService').startTimer()
.以下是我遇到的一些绊脚石:
this.get('myService')
.我可以在控制器中做到这一点init()
但感觉就像代码味道.services/my-service.js
文件并自动注册它.执行一个app.register()
似乎注册两个实例,这两个混淆.init()
这个解决方案也感觉像代码味道.但是我尝试过的所有解决方案都是有效的,并且是三者中最不臭的.还有其他选择吗?
我正在研究的项目使用Handlebars.js模板系统.它读取内容,编译模板时在适当的位置注入内容:
<div class="content">
<p>lorem ipsum</p>
{{{ content }}}
</div>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,把手是用JS对象编译的,JS对象的content
属性是一串文本或HTML(因此是三个括号).
但是,内容值(文本或HTML)完全有可能还包括把手插值代码:
var contentPassedToHandlebars = {
content: '<p>{{ foobar }}</p>',
foobar: 'foo'
};
Run Code Online (Sandbox Code Playgroud)
目前哪些产出<p>{{ foobar }}</p>
但我打算得到的是<p>foo</p>
.
把手是否具有此嵌套内容的工具或是否需要自定义助手?({{{custom_parse content}}}
)?
这种情况来自构建系统(metalsmith),它将文件作为markdown读入,将它们转换为HTML,将结果附加到对象的content
属性file
,然后解析注入file.content
其输出的把手模板.所有这些和我希望有一个解决方案将把手或字符串插值放入降价处,这样markdown文件就可以访问模板可以访问的相同变量(显然更多的全局值config.json
不是与文件对象关联的值正在建造).
我在UITableView.tableHeaderView中放置了一个UISearchBar.但是它通过将可查看的顶部放在第一个节头上来覆盖searchBar.当我将tableView向下拖动时,我只能看到searchBar.它被覆盖了一半,然后无法选择,因为释放tableView滚动将橡皮筋带回到视野之外.请帮忙.
以下内容放在我的UITableViewController viewDidLoad方法中:
UISearchBar *theSearchBar = [[UISearchBar alloc] init];
theSearchBar.delegate = self;
self.searchBar = theSearchBar;
[theSearchBar release];
self.tableView.tableHeaderView = self.searchBar;
Run Code Online (Sandbox Code Playgroud)
结果是以下屏幕截图:http://imagebin.ca/view/6qNiwHR.html
我有一个bash脚本,希望从文件中读取它以设置其参数。基本上我的脚本读取参数位置上($1
,$2
,$3
等)
while test $# -gt 0; do
case $1 in
-h | --help)
echo "Help cruft"
exit 0
;;
esac
shift
done
Run Code Online (Sandbox Code Playgroud)
我希望的选项之一可能是一个读取自变量的配置文件(用于简单和简单的config),因此我希望该set --
命令可以工作(--
超越自变量)。但是,由于它们是在文件中定义的,因此我必须读入文件并使用xargs
它们来传递它们:
-c | --config)
cat $2 | xargs set --
continue
;;
Run Code Online (Sandbox Code Playgroud)
麻烦的是xargs困扰了--
我,所以我不知道该怎么做。
注意:我意识到我可以使用source config_file
并将其设置为变量;可能是最终的选择。我想知道是否可以像上面那样做并简化文档。
简化的示例脚本:
# foo.sh
echo "x y z" | xargs set --
echo $*
# Command line
$ bash foo.sh a b c …
Run Code Online (Sandbox Code Playgroud) browserify ×2
ember.js ×2
bash ×1
broccolijs ×1
ember-cli ×1
gruntjs ×1
haml ×1
javascript ×1
jekyll ×1
markup ×1
metalsmith ×1
node-streams ×1
node.js ×1
ruby ×1
syntax ×1
uisearchbar ×1
uitableview ×1