上下文
我正在尝试使用restify(2.6.2)构建一个动态服务器,其中服务器启动后将安装和卸载服务.我意识到这可以被视为奇怪的东西,但它在DSL面向项目的背景下有意义.为实现这一目标,我实现了以下功能:
var install = function (path, method, handler) {
var id = server[method](path, function (request, response) { // [1]
handler (request, response);
});
return id;
}
var uninstall = function (id) {
delete server.routes[id]; // [2]
}
Run Code Online (Sandbox Code Playgroud)
install函数,在路径和方法名[1]指定的路由中安装处理程序.卸载功能,通过从路由[2]中删除处理程序来卸载处理程序.此功能通过以下代码公开为服务:
var db = ...
var server = restify.createServer ()
.use (restify.bodyParser ({ mapParams: false }))
.use (restify.queryParser ())
.use (restify.fullResponse ());
service.post ('/services', function (request, response) {
var path = request.body.path;
var method = request.body.method;
var handler …Run Code Online (Sandbox Code Playgroud) 题:
在Web组件规范中,当您想要Light-DOM从模板中读取元素时,<content select></content>可以使用该元素.但是,如何从组件的javascript代码中检索此信息?
例:
<wc-timer>
<wc-timer-title>I want to read this from JS</wc-timer-title>
</wc-timer>
Run Code Online (Sandbox Code Playgroud)
谢谢你,哈维尔.
语境:
我正在不同的环境中进行有关Web组件组成的测试.特别是我试图通过在所涉及的组件内DOM/ 通过搜索过程从另一个访问其中一个组件来关联多个web Shadow DOM组件.
问题:
假设我们有一个名为x-foo要求访问另一个的Web组件x-randgen.后一个组件公开了前者使用的业务方法.为了避免两个组件之间紧密耦合的通信,我想使用发现机制x-foo来x-randgen通过搜索过程DOM和Shadow DOM模型进行访问.特别是我确定了两种可能的情况.要么都有x-foo和x-randgen实例都在全球范围内(index.html的),或者他们都出现另一个模板内,说x-bar.问题是搜索过程应该在每种情况下以不同的方式实现.接下来,我用我的方法总结了一个伪代码,实质上是我的问题.(全球范例可以在这里找到:http://jsbin.com/qokif/1/)
Polymer('x-foo', {
...
getRandGen: function () {
if (<<x-foo & x-randgen are in the global context>>)
return document.querySelector('x-randgen');
else if (<<x-foo & x-randgen are in a template>>)
return <<the x-randgen tag within the template>>;
}
});
Run Code Online (Sandbox Code Playgroud)
题:
如果有人可以根据聚合物技术以适当的方式重新制作上面的片段,我将不胜感激.
语境.
Memoization是一种在递归函数上运行的函数技术,具有重叠调用,旨在通过使用内部缓存来优化时间性能,该内部缓存会记住先前已使用参数的结果.典型的用例是斐波那契函数.下面显示了该功能的非记忆和记忆版本以及用于计时目的的辅助功能:
function time (fn) {
return function () {
var before = Date.now();
var result = fn.apply(this, arguments);
var after = Date.now();
return {
value : result,
time : after - before
};
};
}
var fib = function (n) {
if (n < 2) return n;
else return fib(n-1) + fib(n-2);
};
var mfib = function (n) {
var cache = {};
var memoizefib = function (n) {
if (n < 2) return n;
else {
var k1 …Run Code Online (Sandbox Code Playgroud)