新建项目
npx express-generator
或者安装脚手架
npm install -g express-generator
再用express
新建项目,参数用-h查看,个人暂不需要
PS:
- 如果遇到powerShell无法运行express脚本,用管理员运行powerShell,输入
set-ExecutionPolicy RemoteSigned
即可修改执行策略。 - 建议安装nodemon,可以热更新,启动命令同node
- 启动时打印域名,方便ctrl点击打开页面
改端口:
- package.json 脚本里设置
set PORT 8080
- www文件里15行
var port = normalizePort(process.env.PORT || '8080');
路由
就是requestUrl,get请求可以在浏览器上输入,post只能用工具或者代码。
- 最简单的
// app.METHOD
app.get('/', function (req, res) {
res.send('GET request to the homepage')
})
app.post('/', function (req, res) {
res.send('POST request to the homepage')
})
其中有个匹配路径文件返回的,没测试成功。
- 所有类型
// 所有类型的请求,一般不会这么用
app.all('/secret', function (req, res, next) {
console.log('Accessing the secret section ...')
next()
})
// 分别处理
app.route('/book')
.get(function (req, res) {
res.send('Get a random book')
})
.post(function (req, res) {
res.send('Add a book')
})
.put(function (req, res) {
res.send('Update the book')
})
中间件
以前看过一张洋葱模型图,以为中间件很复杂,其实想多了,中间件就是一个固定格式的函数,形似:
const middleware = function (req, res, next) {
doSomething...
next()
}
越看越像拦截器,可以对请求和返回做处理,目前通过官网了解的就是日志、请求校验。
中间件还可以和路由结合,比如:
app.use('/user/:id', function (req, res, next) {
console.log('Request Type:', req.method)
next()
})
如果use的第一个参数不是路由,直接是中间件,那么该中间件作用于所有路由。
其他
代理那个看官网没整明白,看了其他代理中间件的,大概懂一些。
前段时间听了公司大佬(原阿里哥伦布团队)分享的NodeJs实践,用的是egg,总结一下:
目前Node还是做轻量的后端处理,一般只做controller,涉及到具体业务会调用java等后端服务(不确定service层在哪,持久层肯定是不做的),也就是BFF —— Backend For Frontend,这个名词也是第一次接触,相对来说node跟数据库的交互能力还是不强,没有myBatis那样的框架。
最后大佬还鼓励我们造轮子,说写业务没什么进步。
有些知识点穿插在别的文章里了,比如Web Worker、Service Worker。
补充一下连接数据库的,不是express的内容,是mongodb这个包的,比较简单,以MongoDB为例:
npm i mongodb
- 连接、查看数据
mongoClient.connect('mongodb://127.0.0.1:27017', (e, db) => {
db.db(db_name)
.collection(collection_name)
.find()
.toArray((err, res) => {
console.log(res);
});
});
操作的就不展开了,命名还是比较清楚的

不行就到类型声明文件里看详细内容。
热更新问题,nodemon启动时会监听不到www文件的变动
解决方案:加后缀名.js,默认监听的文件扩展类型有js,mjs,json,启动参数-e可指定扩展后缀。
网友评论