Node.js + Express:路由与控制器

新的Node.js和Express,我想了解两个似乎重叠的概念,路线vs控制器。 我见过简单的例子app.js + routes / *,这似乎足以路由所需的各种请求。 不过,我也看到有人在讨论使用控制器,而有些则暗示更为正式的MVC模型(???)。 如果有人能够帮助我清除这个谜团,那将是非常棒的,如果你有一个在Node.js + Express框架中设置控制器的好例子,那将是非常棒的! 谢谢,

用Node.js中的promise来replacecallback

我有一个简单的节点模块连接到一个数据库,并有几个function来接收数据,例如这个function: dbConnection.js: import mysql from 'mysql'; const connection = mysql.createConnection({ host: 'localhost', user: 'user', password: 'password', database: 'db' }); export default { getUsers(callback) { connection.connect(() => { connection.query('SELECT * FROM Users', (err, result) => { if (!err){ callback(result); } }); }); } }; 该模块将从另一个节点模块中被调用: app.js: import dbCon from './dbConnection.js'; dbCon.getUsers(console.log); 我想用promise来代替callback来返回数据。 到目前为止,我已经阅读了以下线程中的嵌套承诺: 使用嵌套承诺编写干净的代码 ,但是我找不到任何对此用例来说足够简单的解决scheme。 使用承诺返回result的正确方法是什么?

如何通过browserify获得缩小的输出?

刚刚开始使用browserify ,但我找不到文档如何让它溢出缩小输出。 所以我看起来像这样: $> browserify main.js > bundle.js –minified

咕噜(minimatch / glob)文件夹排除

我有一个情况,我试图用grunt来删除一个代码库,不包括特定的文件夹。 咕噜使用minimatch(类似于bsdglob)在引擎盖下匹配文件,但我似乎无法弄清楚如何做一个.gitignore风格排除一个文件夹。 我想要摄取这个: ignoreme 并匹配这些: /folder/path/here/to/something/ok.js /another/folder/path.js /test.js 但不匹配这些: /folder/ignoreme/something.js /folder/path/here/to/ignoreme/metoo/file.js 这将匹配一切,包括忽略: /**/*.js 所以我想我可以做一些事情: /**/!(ignoreme)/**/*.js 但是匹配ignoreme文件夹中的文件。 我习惯了正则expression式,但似乎无法弄清楚如何在这里重复模式或东西 – 我也尝试过这样的东西: /(!(ignoreme)|*)*/*.js 希望容器可以重复,但是这不起作用,它只是没有匹配所有的东西。 任何方式来传递一个正则expression式grunt文件path,或使这对我工作? 更新: 以下是我目前正在处理的问题: var pattern = /\/ignoreme\// var files = grunt.file.expandFiles(arrayOfFilesPassedToMinimatch).filter(function(f){ return !pattern.test(f) }) 我仍然有兴趣,如果文件夹排除可能在minimatch。

meteor:如何列出已安装的软件包

我从Meteor开始,我想知道如何列出已安装的软件包。 meteor list只会列出registry中的可用软件包。 编辑:由于meteor0.9.0.1 meteor list列出了项目中的可用软件包。

如何用nvm更新节点

我已经使用nvm安装了node.js版本5.0,但现在我想将其更新到5.4。 有没有办法升级node权利,而不是安装最新的稳定版本? 我不想失去所有这些全局包,并说npm install grunt-cli bower yo yoman-angular-generator blablablablablabla…

Node.js – 从EventEmitterinheritance

我在相当多的Node.js库中看到这种模式: Master.prototype.__proto__ = EventEmitter.prototype; (来源于此 ) 有人可以给我解释一下,为什么这是一个普遍的模式,什么时候方便?

使用Gulp.js和globbing模式修改文件(相同的目标)

我有一个尝试将.scss文件转换成.css文件(使用gulp-ruby-sass)的gulp任务,然后将得到的.css文件放到find原始文件的相同位置。 问题是,因为我正在使用globbing模式,所以我不一定知道原始文件的存储位置。 在下面的代码中,我试图用gulp-tap来进入stream,并找出当前文件stream的读取文件path: gulp.task('convertSass', function() { var fileLocation = ""; gulp.src("sass/**/*.scss") .pipe(sass()) .pipe(tap(function(file,t){ fileLocation = path.dirname(file.path); console.log(fileLocation); })) .pipe(gulp.dest(fileLocation)); }); 基于console.log(fileLocation)的输出,这段代码看起来应该可以正常工作。 但是,由此产生的CSS文件似乎被放在比我预期的更高的目录。 它应该是project/sass/partials ,结果文件path只是project/partials 。 如果有这样一个更简单的方法,我一定会更加欣赏这个解决scheme。 谢谢!

rest与Express.js嵌套路由器

假设我想让REST端点看起来像这样: /user/ /user/user_id /user/user_id/items/ /user/user_id/items/item_id 每个CRUD都是有道理的。 例如,/ user POST创build一个新用户,GET获取所有用户。 / user / user_id GET只提取一个用户。 项目是用户特定的,所以我把它们放在user_id下,这是一个特定的用户。 现在要使Express路由模块化,我做了几个路由器实例。 有一个用户的路由器,并为该项目的路由器。 var userRouter = require('express').Router(); userRouter.route('/') .get(function() {}) .post(function() {}) userRouter.route('/:user_id') .get(function() {}) var itemRouter = require('express').Router(); itemRouter.route('/') .get(function() {}) .post(function() {}) itemRouter.route('/:item_id') .get(function() {}) app.use('/users', userRouter); // Now how to add the next router? // app.use('/users/', itemRouter); item的URL是user的URL分层结构的后代。 […]

nodeJscallback简单的例子

任何人都可以给我一个简单的nodeJscallback的例子,我已经在很多网站上search过相同的东西,但是不能正确理解,请举个简单的例子。 getDbFiles(store, function(files){ getCdnFiles(store, function(files){ }) }) 我想要做那样的事情