Tag: devise模式

在node.js中过度使用require(),mongoose

我是Node.js的新手,但非常喜欢模块系统和require() 。 这就是说,来自C背景,这让我不安地看到相同的模块被require()在任何地方。 总而言之,这会导致我在某些deviseselect上偏离了在C中完成的事情。例如: 我应该在每个定义mongoose模型的文件中require()mongoose吗? 或者将mongoose实例注入到定义模型的每个文件中。 我应该在每个需要它们的模块中需要require()我的mongoose模型吗? 或者有一个模型提供者被传递并用于提供这些模型。 等。 对于使用dependency injection的人来说 – 我的直觉C感觉告诉我只require()一个模块一次,并根据需要传递它。 但是,在看了一些开源的东西之后,这似乎并不是Node的事情。 require()确实让事情变得非常简单 过度使用这个机制会伤害吗?

在哪里存储我的节点时间表

我对Node / Express很陌生,我正在预约系统。 我希望我的用户预约他们想要的一天,我的系统会在准确的时间向他们发送通知。 我发现“node-schedule”模块对于这个任务非常有用,但是我不知道在哪里实现。 有没有办法将所有任务存储在我的app.js中,或者每当我点击某个终点时创build节点调度任务就足够了,例如: router.get('/', function(req, res, next) { var j = schedule.scheduleJob(date, function(){ send notification(); }); res.send(200); } 注意:我不想在我的sql表上运行一个常量来检查date

节点中许多asynchronous任务的devise模式

我正在学习节点并编写一个API。 我的一个API调用需要一个名为Tags的参数,这个参数将包含逗号分隔的标签,每个标签都要保存到磁盘(我正在使用MongoDB + Mongoose)。 通常当我保存到我的API中的数据库时,我传递一个callback,并保存在callback的内部进行,但在这里我有一个可变数量的对象保存到磁盘,我不知道最简单的方法来保存所有把这些标签保存到磁盘,然后保存后面引用它们的对象。 任何人都可以build议一个干净的asynchronous模式使用? 谢谢!

在多个文件中需要相同的模块

我在我的项目中使用Underscore.js。 几乎所有的文件都有这一行代码: var _ = require('underscore') 。 require函数是同步的,所以每次使用时都会加载同一个文件。 这是正确的吗? 这不会影响性能吗? 相反,可以在app.js文件中定义一个全局variables吗? _ = require('underscore') 我读过,你不应该使用全局variables,但这似乎是一个有效的用例。

Express 4.0内容协商和应用程序结构

我使用节点Express 4.0为我的Web服务器和restAPI。 我正在使用内容协商来处理多种types的数据,并处理其余API的版本控制。 但是,我的界面开始变得非常混乱。 下面我有一个非常简单的例子来说明我如何使用内容协商(但是我在每个accept头中有更多的代码行。 我的问题是,是否有经验的大型Expressrest应用程序,以及如何构build代码来分离HTTP部分和实际数据处理之间的关注,以避免非常混乱的app.get() , app.post()等function以及如何保持整个应用程序的良好的概述? 'use strict'; var express = require('express'); var bodyParser = require('body-parser'); var app = express(); app.use(bodyParser.json()); var data = [ { id: 0, title: 'This is content 0'}, { id: 1, title: 'This is content 1'}, { id: 2, title: 'This is content 2'}, { id: 3, title: […]

WebSockets加RESTful接口,如何编写Node.js中的DRY代码?

我的Node.js应用程序提供了WebSockets和RESTful接口。 我写了一个替代Backbone.synch与Socket.IO一起使用的传输。 DRY问题 :在客户端事件上执行的callback包含与RESTulpath的callback几乎相同的逻辑。 客户端发出的事件和数据之间的映射示例以及相应的操作: +—————-+———————————+——————–+ | event emitted | data emitted | RESTful URL | +—————-+———————————+——————–+ | read:users | empty string | GET /users | | read:users | id of the model | GET /users/:id | | create:users | full model as JSON | POST /users | | destroy:users | id of the model […]

React.js与Node.js Rest API

是否应该将我的Reactjs应用程序包含在与我的REST API相同的应用程序中? 我是Reactjs的新手。 我已经构build了一些独立的Node REST API。 我正在构build一个React应用程序,一个Android应用程序和一个iOS应用程序(所以REST API需要为所有这三个应用程序提供服务)。 我想知道在构buildNode API时会遵循什么约定。 有2个选项,我看到它… 1)我可以构build一个包含REST API和React App的大型应用程序。 这个应用程序将服务于移动应用程序的所有API调用和反应/ Web应用程序。 它也将服务于所有的意见,即HTML,CSS等。 要么 2)我可以build立两个更小的应用程序。 人们可以使用独立的(更轻的)节点服务器为视图模板提供React应用程序。 第二个应用程序不会持有任何意见。 它只是作为一个JSON API来服务所有三个应用程序。

参数types“X”不能分配给参数types“Y”

我有一个webstorm IDE的问题。 似乎webstorm总是在IDE中显示无效参数的错误,但打字稿编译器不显示这样的错误; 我开始相信这个问题是与IDE。 我有以下的存储库: https : //github.com/danielmahadi/modular-typescript 有4个打字稿: customerModel.ts =>客户模型文件 export class User{ constructor(public id: string, public name: string){} } converter.ts =>将json数据转换为客户模型 import model = require('./customerModel') export function convertToUser(data: any) : model.User { return new model.User(data.id, data.name); } printer.ts =>将客户模型打印到控制台 import model = require('./customerModel') export function print(data : model.User) : void { console.log('PRINTING…'); console.log(data); […]

为什么Node.js中的事件不是常量?

我是新来的节点,但我来自广泛的编程背景。 我看到的每一个地方(无论是在教程还是在我看到的产品代码中),人们绝大多数使用硬编码的string而不是常量来识别事件。 我从npm 最依赖于软件包列表中select了一个随机的例子来说明我的意思: “请求”库 – 为什么他们每次都inputstring'data'来发出和使用 «data»事件,而不是定义图书馆的常量? 在我意识到的任何编程语言中,使用常量都被认为是一个好习惯,然而节点开发人员似乎完全满足于硬编码的方法。 为什么?

devise模式build议,用于实时同步在线游戏中的多用户数据

我正在开发一个项目来学习node.js,并且正在寻找一些关于如何处理实时同步用户数据的build议。 假设你有一个二维的矩形地图(大概600×400),有多个玩家在该地图上占据x,y的位置。 每个用户都可以使用箭头键进行导航,并以某种基本方式与其他用户交互。 鉴于这将通过HTTP播放,在处理和同步用户数据方面最好的devise模式是什么,以提供最stream畅,最快速的体验? 我可以考虑几个选项,但是会希望得到更多的想法/澄清: 客户端将位置数据发送给服务器,服务器将所有位置分配给所有客户端,屏幕呈现结果。 重复。 不利的一面是,客户端的数据往返时间滞后,但好处是它们与所有用户同步。 客户端在经常性地呈现它,将位置数据发送到服务器,服务器将所有位置分发给所有客户端,然后使用服务器数据更正来自客户端数据的屏幕呈现。 上行是一个快速反应,下行是同步轻微损失。 两者的混合,但不是使用(x,y)坐标,而是使用[先前的x / y和时间,当前的x / y和时间,在时间间隔build议的x / y]的vector,然后可以用于绘制不断变化的抛射path。 看来这将是棘手的实施。 任何指针?