关于express模块use()方法参数问题?
发布于 8 年前 作者 mawenge 6888 次浏览 来自 问答

最近看到node,了解之后发现挺厉害的,搭建后台非常方便,就照着nswbmw大神的https://github.com/nswbmw/N-blog的教程自己写了一遍(感谢大神的无私分享,微信打赏虽不多,也是一点心意)。前端时间用js写了一点简单的页面,对js有个大概的了解,但是从java到js总是有点不适应,到了node的应用,首先我遇到了一个问题: 在使用express模块通过use()方法添加中间件的时候,我发现use()方法的参数类型多种多样,参数个数也可以不一样例如 1) app.use(express.static(path.join(__dirname, ‘public’))); 2)app.use(require(‘express-formidable’)({ uploadDir:path.join(__dirname, ‘public/img’),//上传文件目录 keepExtensions:true//保留后缀 })); 3)app.use(flash()); 4)app.use(function (req, res, next) { res.locals.user = req.session.user; res.locals.success = req.flash(‘success’).toString(); res.locals.error = req.flash(‘error’).toString(); next(); }); 5)app.use(’/signin’, require(’./signin’));//第二个参数应该时 express.Router对象 . . . 这些都是什么啊,这些参数都是哪里定义的啊,我用ctrl+鼠标左键进入use方法只是进入到了application.js下面的一个use方法里面,这个方法也只有一个参数啊,这里怎么就有这么多的用法,这些用法我都是同意的,可是我不知道这些方法的实现形式都是在哪里定义的?请问你们看源码都是怎么找到这些的,我目前的水平连在哪里都找不到了,求指点迷津啊!

以前写java的时候都有明确的对象,而且方法跟类型对应,参数也是确定的,基本上根据ide的提示就可以正确的填入参数类型了,可是现在觉得好困难啊,我用js框架的方法总不能老是看网上的教程来知道怎么用吧,总要一步步看到源码具体如何实现才是根本之道

求大神通过这个例子指导我看js源码的正确姿势?

6 回复

@i5ting 狼叔好,看了你的文章还是有点不懂,源码方面我准备以后再看,因为现在刚入门想先抛开原理,我就想知道如果单纯的想知道怎么用,例如上面的好几种用法,use里面的参数个数类型之类的,请问获取这方面的信息一般是通过什么渠道呢,是看官方文档吗,我觉得这个挺靠谱,但是可能稍稍有点慢?有没有能向java里面直接进入这个方法里面就看到方法的定义,可选参数类型,参数的意义。。。等等信息,能够很快速的知道这个方法怎么用。 因为我现在用js好不习惯,在webstorm下面写一个方法,后面的代码补全提供一大堆不相关模块的同名方法,传回调方法的时候都不知道回掉方法里面有几个参数(function(req, res, next) {} function(req, res, next, error) {}这两个回调方法),每个参数代表什么,请问初学者该怎么弄清楚这些呢,还是这就是js的编码习惯,必须从官方文档获取信息吗,这样学习成本会不会很高?

看文档呀~ 就是看文档 不看文档怎么学 另外我也是搞java的 我使用ide是webstrom 里面有代码参数提示,用起来和IntelliJ IDEA是一样的,慢慢来吧 就是多看 多练

@XingHaoxiang 哦哦,我昨天也看了官方文档,确实挺清楚地,还有一个,你能看看下面这种情况吗! 111.png

源码 222.png

上面的图片第一张ide代码提示显示use方法的参数个数好像是不固定的,但是我进入application.js方法里面看到的use方法好像只有一个参数,这是怎么回事呢,还是那个fn其实代表不定长的参数呢?

Q(6_XVLTOCVLRX@2KPPZX`3.png

我看到是express官方文档 你自己瞅瞅吧

真巧啊,我最近也在看express中间件部分。 建议你去看看 《node与express开发》中间件那一章, 看完整个就会觉得很清晰了。

回到顶部