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

ExpressBuildServer

时间:2023-04-03 18:56:12 Node.js

简介Node.js?是一个基于Chrome的V8JavaScript引擎构建的JavaScript运行时。Node.js使用事件驱动、非阻塞I/O模型,使其轻量级且高效。Node.js的包生态系统npm是世界上最大的开源库生态系统。试用场景适用于I/O密集型应用,适合前端开发人员快速搭建服务器,一般用于前后端分离。安装Nodejswindows打开node官网(https://nodejs.org)直接点击LTS版本下载安装包。当前版本为开发版,请勿下载。下载完成后,可以直接在ubuntu上安装,运行以下命令curl-sLhttps://deb.nodesource.com/setup_8。×|sudo-Ebash-sudoapt-getinstall-ynodejsmac和windows类似,下载安装包即可。安装完成后,运行如下命令查看是否安装成功。(以上方法在安装node的时候都会带上对应的npm,所以还需要检查npm是否安装成功。)node-v//检查节点版本npm-v//检查npm版本构建服务器安装expressExpress是一个最小且灵活的Node.jsWeb应用程序框架,它为Web和移动应用程序提供了一组强大的功能。npminstallexpress-g//全局安装expressnpminstallexpress-generator-g//全局安装express脚手架,安装后可以使用express命令express--version//查看express版本生成工程文件mkdirappcdapp/***生成项目文件*express默认使用ajs模板,加上-e指定更友好的ejs模板*/express-enpmintall//安装依赖npmstart//启动项目,然后用浏览器访问localhost:3000,最简单的服务器就可以了。Express进阶如何修改程序启动默认端口3000Express的启动目录是/bin/www,里面有一行代码:varport=normalizePort(process.env.PORT||'3000');程序不难看首先获取process.env.PORT(环境变量PORT)的值,如果没有则默认为3000,所以如果要改端口直接把3000改成想要的端口即可number或者修改环境变量PORT的值,操作如下:在启动程序之前,执行//ubuntuIOSexportPORT=4000;//窗口设置PORT=4000;然后执行npmstart,端口设置为4000。如何修改运行环境Express默认的运行环境是development,可以通过process.env.NODE_ENV来更改运行环境,设置系统环境为production,代码如下://ubuntuIOSexportNODE_ENV=production//wondowssetNODE_ENV=production如何在app.js中添加接口,app.use('/',routes);添加app.get('/status',function(req,res){res.send({status:'ok'});})启动服务器,访问localhost:3000/status,获取数据{status:'好的'};下面详细分析一下:app.get(),get是app对象的一个??方法,负责处理get方法,如果改为post,则只处理post请求,不处理其他请求,其余的类似于put和delete。如果写成use的话,这个路由的任何一个方法的请求都会被处理。/status,指定需要处理的路由回调函数,即请求该路由的处理函数,可以接收二参数、三参数、四参数。一旦参数为四,则被express识别为错误处理函数//这是app.js中的错误处理函数,用于处理路由抛出的所有错误,一般写在app.使用(函数(err,req,res,next){res.status(err.status||500);res.render('error',{message:err.message,error:err});});由reqExpress封装的http请求对象,包含headers、query、params等内置属性。用于获取http请求的各种数据。resExpress封装的http响应对象,包括send、json、jsonp等方法。next如果执行next,执行完这个处理函数后,会继续向后寻找下一个处理函数,app.get('/test-next',function(req,res,next){console.log('firsthandlerfn');next();});app.get('/test-next',function(req,res,next){res.send({status:'secondhandlerfn'});});浏览当服务器访问localhoat:3000/test-next时,会得到{status:'secondhandlerfn'},处理路由/test-next,第一个回调函数,当执行到next()时,继续找到下一个可以处理/test-next回调的。什么是中间件?中间件(middlewear)是Express中的一个重要概念。Express使用中间件来完成请求体的转换,或者进行一些中间操作。归根结底,中间件是满足两个条件的函数,有三个参数:req、res、next。最后执行next函数,把处理权交给写打印请求的中间件://定义中间件,打印请求方法和urlfunctionlogRequest(req,res,next){console.log(req.method,method.url);next();}//使用中间件app.use(logRequest);Express如何处理一个请求的路由,Express处理要经过一个流程,从第一次使用开始处理请求。如果是中间件,则处理完成后,继续向下处理。如果遇到指定静态文件的中间件,就会查询静态文件是否匹配。如果匹配,则直接返回。否,如果有匹配,则继续寻找合适的路由。如果匹配到自定义路由,则立即执行回调函数。如果处理函数中没有next(),则不会继续执行。如果执行了next(),就会继续向下匹配。如果没有匹配到,则进入404处理中间件,抛出错误,由错误处理中间件处理。理解静态资源处理中间件app.use(express.static(path.join(__dirname,'public')));,express.static(PATH)会将指定目录下的所有资源都当作静态资源。客户端可以输入指定资源的路径来访问这个资源。其实可以理解为将静态资源在app上的路径注册为路由。如果要将文件/public/stylesheets/style.css设置为静态资源,可以指定静态文件目录app.use(express.static(path.join(__dirname,'public')));或者不设置静态文件,自定义路由app.get('/stylesheets/style.css',function(req,res,next){res.sendFile(path.join(__dirname,'public/stylesheets/style.css'));})两种访问http://localhost:3000/stylesheets/style.css的方式都可以得到style.css文件。静态资源和用户自定义路由是等价的。所以一般静态资源处理中间件放在用户自定义中间件之前,避免路由冲突。模板的使用方法(默认使用ejs模板引擎)//path是.ejs模板的路径//data是传入模板的值,必须是对象类型res.render(,[数据]);例如应用程序。jsapp.get('/ejs',function(req,res,next){res.render('index',{title:'Express'});});index.ejs

<%=title%>

testejs

访问localhost:3000/ejs看结果。ejs的常用语法如下<%%>标签中可以写任何javascript代码,可以将javascript代码拆分或写在一起,也可以和html标签一起写:<%vara=1varb=2varc=a+b%>//varuser=[1,2,3]<%for(leti=0;i

html

<%}%><%=%>输出转义内容//ejs

<%=''%>

//转义

<%-%>输出未转义的内容//ejs

<%-'baidu'%>

//无转义输出

baidu

<%#%>commentinclude引入其他ejs文件,比如在同级引用当前ejs文件有一个文件目录下命名为test.ejs,代码如下://exp1<%vardata=1%><%include./test%>//exp2<%-include('test',{data:1})%>原文地址:https://webfem.com/post/express