编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

使用express.js构建Node.js运行环境的Server

wxchong 2024-10-22 17:54:04 开源技术 8 ℃ 0 评论

请确保已安装Node.js运行环境,Node.js安装教程《Linux使用源码安装Node.js》

使用npm安装express快速生成器

npm install -g express-generator

检测express是否安装成功

express --version

输出:当前express.js的版本号

使用express快速生成器创建一个项目

express express-demo

期间会提示请追加--view参数,--view为视图解析引擎,也就是将某种模板解析为Html,默认为jade。这不会有太大影响,我个人用的是ejs。

进入项目目录,并查看项目结构

Linux || MacOS

cd express-demo && ls

Windows

cd express-demo && dir

项目目录下分别有 bin/、public/、routes/、views/ 四个文件夹以及app.js、package.json两个文件。

初始化项目

npm install

启动Server

npm start 或 node bin/www

访问Server

http://localhost:3000

修改Server端口

编辑bin/www文件

找到var port = normalizePort(process.env.PORT || '3000')这一行并修改'3000'为您的目标端口号。

维护静态资源

public/文件夹中包含images/、javascripts/、stylesheets/三个文件夹;

images/一般用来存放图片类静态资源;

javascripts/一般用来存放js静态资源;

stylesheets/一般用来存放css静态资源;

如果以上三个文件夹不满足您的要求,您可额外添加其它文件夹;

访问静态资源

ip:port/{public文件夹下的相对路径}

例子:localhost:3000/images/logo.jpg

维护视图模板

views/文件夹用于存放视图模板,根据express设置的视图解析引擎,用的视图模板也不一样。项目初始化时,会自动生成2~3个默认模板用于参考,这个不作详述,自行探究。

Server路由

routes/文件夹存放的是运维中用到的路由。项目初始化时,会自动生成index.js、users.js两个路由用于参考。

添加路由

在routes/文件夹中创建一个文件demo.js,并打开编辑:

var router = require('express').Router();

router.get('/', function(req, res, next) {

res.json({

message: 'changeden.net'

});

});

module.exports = router;

保存并退出

打开并编辑项目根目录中的app.js文件:

在app.use('/', index)行的下方新增一行,内容为app.use('/demo', require('./routes/demo'));

保存并退出

重启Server

添加路由文件

在app.js中添加路由

浏览该路由

express.js的进阶

  • 添加常用请求类型的路由:

    GET:router.get('/', function(req, res, next) {});

    POST:router.post('/', function(req, res, next) {});

    PUT:router.put('/', function(req, res, next) {});

    DELETE:router.delete('/', function(req, res, next) {});

  • 添加restful路由(注:一个路由只能有一个动态字段):

    router.get('/:id', function(req, res, next) {

    res.json({

    id: req.params.id

    })

    })

  • 获取restful中的字段:

    req.params[对应字段]

  • 获取请求body:

    req.body[对应字段]

  • 获取Url中的参数:

    req.query[对应字段]

  • 获取Header:

    req.header(对应字段);

常用的响应方式:

  • 以Json形式响应:

    res.json(); 或 res.jsonp();

  • 以Text形式相应:

    res.send();

  • 以视图模板生成页面:

    res.render(模板名字, {传入的模板所需动态参数});

  • 重定向:

    res.redirect(某个Url);

  • 发送一个文件:

    res.sendFile();

解决跨域问题

打开并编辑项目根目录中的app.js文件:

在app.use('/', index)行的上方新增以下内容,

app.all('*', function (req, res, next) {

res.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');

res.header('Access-Control-Allow-Headers', 'X-Requested-With');

res.header('Access-Control-Allow-Headers', 'Content-Type');

res.header('Access-Control-Allow-Origin', '*');

next();

});

保存并退出

重启Server

使用pm2启动Server

使用集群模式启动,将别名设为express-demo,并开启热更新(如有文件被修改,则自动重启项目)

pm2 start bin/www -i 0 --name "express-demo" --watch

如需了解更多,可留言或私聊。

注意

要了解更多互联网技术,请关注我的头条号!

兔子人网:

https://www.changeden.net

我的Github:

https://github.com/ChangedenCZD

动态数据库使用教程:

https://bunnydb.changeden.net

联系我:

changeden520@gmail.com

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表