我一直试图在Node.js上弄清楚这个"Hot Code Push".基本上,我的主文件(在您键入时运行node app.js)包含一些设置,配置和初始化.在那个文件中,我有一个文件观察者,使用chokidar.当我添加文件时,我只是require文件.如果文件已被更改或更新,我将删除缓存delete require.cache[path],然后重新要求它.所有这些模块都不会导出任何内容,它只适用于单个全局Storm对象.
Storm.watch = function() {
var chokidar, directories, self = this;
chokidar = require('chokidar');
directories = ['server/', 'app/server', 'app/server/config', 'public'];
clientPath = new RegExp(_.regexpEscape(path.join('app', 'client')));
watcher = chokidar.watch(directories, {
ignored: function(_path) {
if (_path.match(/\./)) {
!_path.match(/\.(js|coffee|iced|styl)$/);
} else {
!_path.match(/(app|config|public)/);
}
},
persistent: true
});
watcher.on('add', function(_path){
self.fileCreated(path.resolve(Storm.root, _path));
//Storm.logger.log(Storm.cliColor.green("File Added: ", _path));
//_console.info("File Updated");
console.log(Storm.css.compile(' {name}: {file}', "" +
"name" +
"{" +
"color: white;" +
"font-weight:bold;" …Run Code Online (Sandbox Code Playgroud) 我正在努力为这项工作找到合适的工具.我已经探索了一些不同的消息队列,如Kafka,Kestrel等......我正在寻找具有PULL功能的东西.
我有一个API(分布式)将传入的消息推送到队列中.然后我会有工作人员(单独的机器)从队列中提取消息.这可以确保工作人员不会被洪水淹没,也无法处理队列的负载.
我想知道Kafka或Kestrel是否支持这种功能
我正在尝试使用 Harmony Proxies (Node.js) 获取用 JavaScript 编写的动态服务定位器。基本上你会创建一个新容器:
var container = new Container();
Run Code Online (Sandbox Code Playgroud)
然后,您将能够像传统服务定位器一样设置和获取值:
container.set('FM', {});
container.get('FM');
container.get('FM', function(FM) {
});
Run Code Online (Sandbox Code Playgroud)
您甚至可以拥有充当子对象的名称空间:
container.set('FM.Object', {});
Run Code Online (Sandbox Code Playgroud)
问题出在动态别名上。
var App = container.alias('App');
Run Code Online (Sandbox Code Playgroud)
创建别名时,它会创建一个新的代理对象,您可以在其中像传统对象一样操作它,但它是 和get()方法的别名set()。
代替:
container.get('App.Hello');
Run Code Online (Sandbox Code Playgroud)
使用别名,您可以使用:
App.Hello
Run Code Online (Sandbox Code Playgroud)
问题在于深层命名空间。假设您正在尝试访问App.Hello.World.Controller,因为它一次通过代理一个命名空间,而不是一次全部通过(就像完整的命名空间一样)。我如何知道用户是否正在调用App.Hello以检索服务定位器中存储的值,或者用户是否想要继续访问更深的命名空间?你不能(根据我的尝试)。
还有什么其他方法可以实现这一目标?
App.Hello.World如果要访问更深的命名空间,则具有返回代理或存储在服务定位器中的值的语法。
var App = container.alias('App');
App.Controller.Home.Method.Index
// It would go through:
App -> Proxy
App.Controller -> Proxy or Value?
App.Controller.Home -> Proxy or Value?
App.Controller.Home.Method -> Proxy or Value?
App.Controller.Home.Method.Index -> Proxy or Value?
Run Code Online (Sandbox Code Playgroud)
现在,我已经制定了一个处理这两个选项的约定。您可以使用单数名称来检索值,使用复数名称来返回代理。这只是一个快速的“黑客”,因为它不是很有效。 …
javascript service-locator proxies node.js ecmascript-harmony