序言:即便是在做前端,但是还是对路由以及数据层面的操作抱有极大的热情。或许我总觉得这些事情本身就是前端可以做的。后台做的应该是更复杂的数据操作。
项目的安装和搭建
首先得配置node环境,安装express包。在这个地方我直接进行了全局安装,毕竟以后反正都可以使用嘛。
ps:用的公司的windows 这个命令行是真的丑。
然后使用express <your_file_name>来生成模板项目了。
脚手架搭建的项目就完成了,接下来我们就来一一分析各个文件夹和文件的作用吧
项目的具体分析
我们先来看npm包配置,设置了scripts的start,就可以知道项目的入口文件是.bin/www。这样,我们就有了开始分析的地方。
可以看到,具体的操作并不是在这个地方实现的,在这里引入了路由的配置。
var app = requier('.../app')
并且设置了路由的端口,初始化了服务,并且在端口上进行了监听。
然后我们就进入app.js文件
可以看到,在这个地方就对express进行了实例化了.var app = express();
生成了express的实例。app.set(‘view’)就是在对模板引擎做的设置。
此外,用到的最多的就是app.ues()
在官网上的app.ues() 的解释就是把中间件挂载到相应的路由上。
根据挂载的位置,也就分了不同的中间件,有:
应用级中间件,路由级中间件,错误级中间件,第三方中间件。
官网解释地址
我的理解:应用级是挂载在app上面的,就是直接是express的实例上面的。
而路由级的是挂载在router上的,所以具体的路由是由相应的对照的。不是针对每一个路由的。
上述这些都是对于没有指定path的情况,如果指定了path和method的话,就是在上面覆盖的意思了
然后在这里又看到了具体的路由指定,就进去app.js一看究竟
看到在这里实例的就不再是直接的express了,而是express.Router()
可使用 express.Router 类创建模块化、可挂载的路由句柄。Router 实例是一个完整的中间件和路由系统,因此常称其为一个 “mini-app”。
这个地方实例的router就是用来在app.js中引用和使用的,他就是一个模块化、可挂载的路由句柄。
这个路由句柄是必须在app.js中加载和使用的。
app.use('/', indexRouter);
app.use('/users', usersRouter);
还会在使用的时候指定相应的路径作为起始路径。
路由差不多就是这样了,然后就是对转到相应路由的方法做一个了解了。
界面渲染
res是一个响应对象,使用render方法进行模板渲染。
//有三种方法的渲染
// send the rendered view to the client
res.render('index');
// if a callback is specified, the rendered HTML string has to be sent explicitly
res.render('index', function(err, html) {
res.send(html);
});
// pass a local variable to the view
res.render('user', { name: 'Tobi' }, function(err, html) {
// ...
});
三个参数分别是模板的名称、传的参数和回调方法。
一般现在在express推荐的模板好像是pug格式的,就是之前Jade的新名字。
差不多这就是我对express项目的一个初步的了解。纯新手,若有错误,造成误解,以官网为准。
ps:存在一点疑惑,不知道这个生成的模板是否支持es6语法。因为没有找到对应的打包文件,但是在试验中好像支持箭头函数。
pps:刚来公司,正好遇到才给我们做了培训的前辈离职,有点唏嘘。