当前位置: 首页 > 后端技术 > Node.js

后端服务基础环境搭建

时间:2023-04-03 12:58:20 Node.js

Node介绍Node是一个基于V8引擎的Javascript运行环境,可以让Javascript运行在服务端,直接与操作系统交互,与文件控制交互,网络交互,流程控制等。Chrome浏览器也是集成了V8引擎的Javascript运行环境。与Node的不同之处在于它们将不同的内容注入到Javascript中。Chrome将window对象注入到Javascript中,而Node注入的是global,这使得两者的应用场景完全不同。所有的ChromeJavascript指令都需要通过Chrome浏览器作为中介来实现。Express简介Express是一个轻量级的NodeWeb服务器框架,也是一个非常流行的项目,可以帮助我们快速构建基于Node的Web应用。项目初始创建项目?codemkdiradmin-cloud?codecdadmin-cloud?admin-cloudnpminit-yWroteto/Users/a1/Documents/code/admin-cloud/package.json:{"name":"admin-cloud","version":"1.0.0","description":"","main":"index.js","scripts":{"test":"echo\"Error:notestspecified\"&&exit1"},"keywords":[],"author":"","license":"ISC"}?admin-cloud安装依赖?admin-cloudnpmi-Sexpressnpmnoticecreatedalockfileaspackage-锁.json。你应该提交这个文件。npmWARNadmin-cloud@1.0.0没有描述npmWARNadmin-cloud@1.0.0没有存储库字段。+express@4.17.1在3.931s中添加了来自37个贡献者的50个包╭─────────────────────────────────────────────────────────────────╮│││npm的新次要版本可用!6.9.0→6.14.5││变更日志:https://github.com/npm/cli/releases/tag/v6.14.5││运行npminstall-gnpm更新!│││╰────────────────────────────────────────────────────────────────╯?admin-cloudcreateapp.jsconstexpress=require('express')//createexpressappconstapp=express()//监听/路径的get请求app.get('/',function(req,res){res.send('helloworldnode')})//让express监听http请求由端口8000启动constserver=app.listen(8000,function(){const{address,port}=server.address()console.log('HttpServerisrunningonhttp://%s:%s',address,port)})Express三大基本概念中间件中间件是在请求和响应周期中顺序调用的函数constmyLogger=function(req,res,next){console.log('myLogger')next()}app.use(myLogger)提示:中间件需要在响应结束前被调用。路由应用程序如何响应请求的规则。/路径的get请求响应:app.get('/',function(req,res){res.send('helloworldnode')})/路径的post请求响应:app.post('/',function(req,res){res.send('helloworldnode')})规则主要分为两部分:请求方式:get,post...请求路径:/,/servers,/.*net$/...异常处理通过自定义的异常处理中间件处理请求中产生的异常。app.get('/',function(req,res){thrownewError('somethinghaserror...')})consterrorHandler=function(err,req,res,next){console.log('errorHandler...')res.status(500)res.send('down...')}app.use(errorHandler)使用时要注意两点:第一,一个参数不能少,否则它将被视为普通中间件。第二,请求之后需要引用中间件。Projectframeworkbuildroutinginstallboomdependencies(帮助我们快速生成一些异常信息):?admin-cloudnpmi-SboomnpmWARNdeprecatedboom@7.3.0:这个模块已经移动,现在可以在@hapi/boom获得。请更新您的依赖项,因为此版本不再维护,可能包含错误和安全问题。npmWARNdeprecatedhoek@6.1.3:此模块已移动,现在可在@hapi/hoek获得。请更新您的依赖项,因为此版本不再维护,可能包含错误和安全问题。npmWARNadmin-cloud@1.0.0没有描述npmWARNadmin-cloud@1.0.0没有存储库字段。+boom@7.3.0添加了2个包在2.164s?admin-cloud创建router文件夹,创建router/index.js:constexpress=require('express')constboom=require('boom')constserverRouter=require('./server')const{CODE_ERROR}=require('../utils/constant')//注册路由constrouter=express.Router()router.get('/',function(req,res){res.send('欢迎使用云平台服务')})//通过serverRouter来处理/server路由,解耦路由处理router.use('/server',serverRouter)/***集中处理404请求的中间件*注意:此中间件必须放在正常处理流程之后*否则正常请求会被拦截*/router.use((req,res,next)=>{next(boom.notFound('Interfacedoesnotexist'))})/***自定义路由异常处理中间件*注意两点:*第一,方法的参数不能减少*第二,方法必须放在路由结束*/router.use((err,req,res,next)=>{constmsg=(err&&err.message)||'systemerror'conststatusCode=(err.output&&err.output.statusCode)||500;consterrorMsg=(err.output&&err.output.payload&&err.output.payload.error)||err.messageres.status(statusCode).json({code:CODE_ERROR,msg,错误:statusCode,errorMsg})})module.exports=routercreaterouter/server.js:constexpress=require('express')constrouter=express.Router()router.get('/info',function(req,res,next){res.json('serverinfo...')})module.exports=router创建utils/constant.js:module.exports={CODE_ERROR:-1}修改app.js,使用router作为中间件,提高代码灵活性,松耦合处理constexpress=require('express')constrouter=require('./router')//创建express应用constapp=express()//使用router作为中间件app.use('/',router)//让express监听8000端口发起的http请求constserver=app.listen(8000,function(){const{address,port}=server.address()console.log('HttpServerisrunningonhttp://%s:%s',address,port)})startservice?admin-cloudnodeapp.jsHttpServerisrunningonhttp://::8000浏览器输入:http://localhost:8000/浏览器输入:http://localhost:8000/server/info浏览器输入:http://localhost:8000/login至此,基本的服务环境已搭建!!!