前端之魂,触碰后端的手——Node.js学习之路(三)

express的基础应用

基础结构解释

通过之前的代码已经可以窥看到一丝端倪,实例出来的 app 对象调用get()方法,而get()方法中的两个参数:请求路径 '/' 和回调函数 function(){} ,两者分别代表了 请求的方向和接受到请求后服务器将要做的事情。 请求的方向通常被称为 route(路由)

我用地球语言来解释之前这段代码————

1
2
3
4
5
6
7
8
9
var express = require('express');
var app = express();
app.get('/',function(req,res){
res.send('hello world');
})

app.listen(3000,function(){
console.log('server is running at 3000');
});

那就应该是:开启服务器,创建app实例并通过其监听服务器的3000端口,当端口中获取到向 / 发送的 get 请求时,将服务器的操作过程转入到 app.get('/',function(req,res){}) 的回调函数中。

请求的方式

对于接触过ajax的前端开发者来说肯定知道http中的GET请求和POST请求,不太常见的其实还包括PUT和DELETE请求,它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源

看到这里就很自然可以想到有 app.get()/app.post()/app.put()/app.delete() 这四种方法。

赶紧开始干货吧

很多看我文章的人都在声讨:明明从第一更的最后就说不再做 hello world 了,为什么第三更都要结束了看到的仍旧是 hello world ?

所以这次我保证一定要在第三更结束之前让你们看到不是 hello world 的内容。

增加渲染引擎

express可以和一些著名的js模板引擎配合来实现服务器端的动态页面渲染,官方默认的渲染引擎是 jade ,不过考虑到各位看我文章的应该都是前端出身,搞个缩进语法的恐怕看不懂,所以还是用最熟悉的 HTML 语法最实际,这里安装 ejs 模板引擎。回到命令行里,在当前工程目录中输入

1
$ npm install ejs --save-dev

在工程目录下新建 views 文件夹用来存放模板。

1
2
3
4
5
.
├── app.js
├── node_modules/
├── package.json
└── views/

在app.js文件中的第3行加入内容,并且设置渲染内容:

1
2
3
4
5
6
7
8
9
10
11
12
var express = require('express');
var app = express();
app.set('views', './views');//为express设置模板路径
app.set('view engine', 'ejs');//为express设置模板引擎

app.get('/',function(req,res){
res.render('index',{title:'这次真的不是hello world'});//第一参数为选择的模板,根据之前的设置这里指向了./views/index.ejs
});

app.listen(3000,function(){
console.log('server is running at 3000');
});

views 文件夹中新建 index.ejs 文件,并写入如下内容保存

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>我的第一个网页</title>
</head>
<body>
<h1><%= title %></h1>
</body>
</html>

继续使用node app.js 命令来启动服务器程序,访问localhost:3000/ 这次打开的真的不是「hello world」了。从这段代码我们可以分析出来,页面模板引擎会使用传入函数中的对象来替换HTML 页面中 <% %> 的内容,实际上模板引擎的语法还可以做更多的事情,比如进行循环和分支判断,具体方法可以参考这篇EJS模版的使用摘要中的语法部分。

(未完待续)