Tag: 重构

可以编写道具来覆盖react-redux中的connect()吗?

我负责重构使用ReactJS / Redux过度使用不需要的dependency injection。 依赖关系在JSX标记中使用道具注入,如下所示: <CardContainer addCountry={actions.addCountry} addDateRange={actions.addDateRangeFilter} addDistributor={actions.addDistributor} addListFilterItem={actions.addListFilterItem} addListFilterWithOneItem={actions.addListFilterWithOneItem} {/* …other props removed for brevity */} /> 这些道具在整个代码库(以及像这样的多个组件)的几个地方重复使用。 我正在经历并取消将这些函数作为道具传递给CardContainer类,并使用connect() (来自react-redux npm包)的地方,如下所示: export default connect(undefined, dispatch => ({ actions: bindActionCreators(MyActions, dispatch), }))(class DistributorFilterPaneCards extends Component { static propTypes = { addCountry: PropTypes.func, addDateRange: PropTypes.func, addDistributor: PropTypes.func, addListFilterItem: PropTypes.func, addListFilterWithOneItem: PropTypes.func, 我发现,虽然很less有一个道具,例如, addCountry ,它通过了一个不同于所有其他的function。 基本上,我想连接()像静态defaultProps对象工作。 […]

如果一个nodejs模块将一个对象导出到另外两个模块,那么对一个下游模块中的该对象所做的更改会传播给另一个模块吗?

我最初在nodejs中有一个工作的应用程序,它将所有的代码放在一个文件中,使用构造函数和IIFE分成不连续的块。 为了提供明智的解耦和分离,我一直在试图重构程序,使每个块存在于不同的文件中,但我遇到了一个问题。 该scheme分为三个核心块: 初始化连接到Redis并返回redis客户端和dataStore对象的数据存储区构造函数。 function CreateDataStore(storePort, storeUrl, passwd) { var client , datastore; //create the redis client //create the datastore //exports return { "redisClient": client, "dataObject": createSiteUpdater("") }; } var dataStore = CreateDataStore("xxxx","xxxx","xxxx"); var client = dataStore.redisClient; var testResults = dataStore.dataObject; 使用redis客户端并将数据存储在数据存储区对象中的Websearch器构造器。 function CreateWebCrawler(){ //do some stuff //initialise robots.txt parser return function() { //crawl a […]

在节点js中正确使用asynchronous

为了克服JavaScript中的callback地狱,我试图使用从SQLServer过程中编写的遗留代码asynchronous等待。 但是我不确定我的代码是否可以正确写入。 我的第一个令人困惑的地方是,asynchronous函数返回时,是否应该返回resolve()作为布尔值,或只是返回拒绝和try-catch处理? 这是我的代码片段。 请纠正我正确的方向。 apiRoutes.js app.route('/api/dansok/cancelDansok') .post(dansokCancelHandler.cancelDansok); dansokCancelController.js const sequelize = models.Sequelize; const jwt = require('jsonwebtoken'); async function jwtAccessAuthCheck(accessToken) { if (!accessToken) { return Promise.reject('Empty access token'); } jwt.verify(accessToken,"dipa",function(err){ if(err) { return Promise.reject('TokenExpiredError.'); } else { return Promise.resolve(); } }); } async function checkFeeHist(dansokSeqNo) { let feeHist = await models.FeeHist.findOne({ where: { DansokSeqNo: dansokSeqNo} […]

如何重构asynchronous重复代码

我有下面的代码片段,我想从重复的代码重构(做一个function)。 function add(logger, client, args, callback) { client.execute('some command', args, function (err, result) { if (err) { logger.error({err: err}); return callback(err); } // do more… logger.debug({result: result}); return callback(null, result); }); } 所有对client.execute的asynchronous调用都有重复的内部callback。 我想把它拉起来,并从中做出一个function。 所以需要带参数,logging器和callback函数。 我如何做一个function呢? 之后,function添加什么样子?

在Express中重构相似的路由,将callback提取到单独的模块中

我把我的路线分成了不同的模块。 但是,还是有相当数量的重复。 是否有一些良好的做法和约定正在形成如何从路线中提取代码? 我有许多路线,看起来像这样(Express 4.x): router.get('/:something', function(req, res, next) { manipulate(something); Model.findOne( …, function (err, model) { doSomethingInterestingWith(model, function(err, model) { res.render('template', { something: model} ); }); }); }); router.post('/:something', function(req, res, next) { manipulate(something); Model.new( {…}).save( function(err, model) { res.redirect('/:something'); }); }); 这是在一个名为例如routes/something.js 。 我摆弄的方法是将每个path的内容提取到一个可以提取到单独文件的函数中。 我试图尽可能简化这个例子,以保持这个可读性,但实际上,在调用渲染之前有相当多的代码。 嵌套的callback使我提取的函数非常难看。 我曾想过使用Q和诺言,但是我害怕用大锤来打苍蝇。

JavaScript的工具:现在有多复杂的重构是可能的?

从大多数IDE支持复杂的重构可以跨越更多的源代码文件和项目的Java来,我想知道是否有任何支持相同的Javascript编辑器? 我刚看了一些关于Cloud9 AST工具支持的演示 。 这个演示文稿已经有一年多了。 我想知道Cloud9是否有复杂的重构函数,例如: NodeJs需要()的说明? 当然,这个问题并不想缩小到Cloud9,我们有了brackets.io,Orion等。这只是我遇到的演示文稿,所以我给出了基于Cloud9的示例。 假设我有一个Node模块,它导出一个对象原型,而我有另外一个使用它的模块。 假设我喜欢在导出的原型中重命名一个函数,并且我正在寻找的是IDE将根据更改重构其他模块中的调用。 任何工具是否支持跨模块相关性进行重构重命名?

nodejs:节点模块vs单例类

PRE:我已经读过NodeJS模块vs类,但是这更具体。 作为Node中一些重构的一部分,我有几个应用服务(DDD术语),这些应用服务在技术上被实现为Node模块。 由于(在一个DDD世界,可能是任何其他的事情)应用程序服务应该是单身人士,并且由于节点模块保证是1“实例”只,在我看来,这是一个好的适合(模块trivially实施'singletonness') 除了纯粹的观点之外,我有什么理由重新考虑将这些应用服务重构为适当的单例类(只要在javascript中可以保证“singletonness”)呢?

mongoose – 创build文件,如果不存在,否则,更新 – 返回文件在任何情况下

我正在寻找一种方法来重构我的代码的一部分,以缩短和简化,但我不知道mongoose很好,我不知道如何继续。 我试图检查一个文档的存在集合,如果它不存在,创build它。 如果确实存在,我需要更新它。 无论哪种情况,我都需要访问文档的内容。 我迄今为止设法做的是查询特定文档的集合,如果找不到,则创build一个新文档。 如果发现,我更新它(目前使用date作为这个虚拟数据)。 从那里我可以访问从我最初的find操作find的文件或新保存的文件,这是可行的,但必须有更好的方式来完成我所追求的。 这是我的工作代码,无需分心。 var query = Model.find({ /* query */ }).lean().limit(1); // Find the document query.exec(function(error, result) { if (error) { throw error; } // If the document doesn't exist if (!result.length) { // Create a new one var model = new Model(); //use the defaults in the schema model.save(function(error) […]