node总结

1.一个应用使用两个模版引擎 ,需要注意的是,
i.express要求设置默认模版引擎,不然会报错
ii.使用的时候要加上模版后缀

var express = require('express')
var engines = require('consolidate')
...
app.set('view engine', 'pug')
app.engine('pug', engines.pug);
app.engine('ejs', engines.ejs);
...
res.render('login1.ejs', { message: req.flash('loginMessage') })

2.npm list 查看所安装的包以及相应的版本号
3.对一些全局的模块只有在特定的请求进行单独加载 写一个中间件 ,使用正则进行请求路径匹配,在res中加上对应的方法。

app.use('/youlun/:cityLetter', function(req, res, next){
         res.locals = {delimiter: '?'};
         next();
 })

4.看一个模块例如express,先看package.json找main找主入口,没有main字段就找index.js
5.有问题看不懂就去看源码。
6.http://stackoverflow.com/questions/7591240/what-does-dot-slash-refer-to-in-terms-of-an-html-file-path-location

/ means the root of the current drive;
./ means the current directory;
../ means the parent of the current directory

7.碰到一个奇怪的问题,就是express明明设置了app.use(express.static('../../public'));,但是node modules/ares/app.js启动后,访问不到相应的public文件。解决思路:

1.node_modules中找express模块包,在其中找package.json,没有main字段,找index.js
2.再找./lib/express,在其中找到了exports.static = require('serve-static')
3.在express模块包中 找到相应的node_modules文件夹下的 server-static模块
4.找到module.exports = serveStatic

node总结_第1张图片
tmp24f4db09.png

因为只传了一个路径参数,在这里找和 root参数相关的即可 ,找到了 opts.root = resolve(root)。 path.resolve
6.看到这里问题就明朗了,因为此时express会把静态路径转成相当于 modules目录下的../../public 而不是 app.js的。
总结 以后express传路径还是传绝对路径,多看源码: )

7.package.json中~和^的区别

8.babel-command not found

9.新建多层目录 一定要一层一层的建,同时注意权限问题,有权限的话加上sudo,

10.require() 当前目录引用当前目录或者当前文件夹的文件

require('config/config.js')   //提示找不到模块,
require('./config/config.js')  //正常 
//不用用html的引用思维去思考require的功能,html的引用是http请求 ,require是文件目录请求

你可能感兴趣的:(node总结)