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

使用Express

时间:2023-04-03 16:59:50 Node.js

ExpressFrameworkWebApplicationExpress构建一个简单的服务器Express是一个灵活的Node.jsWeb应用程序开发框架,保持最小化,为Web和移动应用程序提供一组强大的功能。API使用您选择的各种HTTP实用程序和中间件快速轻松地创建强大的API。PerformanceExpress提供精简的基本Web应用程序功能,而不会隐藏您熟悉和喜爱的Node.js功能。Express-routing基本都是用来下载的:npminstallexpress--saveHelloworld新建一个server.js文件,然后输入:constexpress=require('express');constapp=express();app.get('/',(req,res)=>{req.send('Helloworld');});app.listen(8083,()=>{console.log('服务器运行在http://localhost:8083')})然后运行:nodeserver.js打开:http://localhost:8083/会出现:requestandresponseExpress应用使用回调函数的参数:request和response对象来处理请求和响应数据。app.get('/',function(request,response){//--})请求和响应对象的具体介绍:Request对象request对象表示HTTP请求,包括请求查询字符串、参数、内容,以及HTTPheader系等属性。常用属性有:req.app:当回调为外部文件时,使用req.app访问express实例req.baseUrl:获取当前安装在路由中的URL路径req.body/req.cookies:获取“request身体”/Cookiesreq。fresh/req.stale:判断请求是否还是“新鲜的”req.hostname/req.ip:获取主机名和IP地址req.originalUrl:获取原始请求URLreq.params:获取路由参数req.path:获取请求路径req.protocol:获取协议类型req.query:获取URL的查询参数字符串req.route:获取当前匹配的路由req.subdomains:获取子域名req.accepts():检查可接受的请求文档类型req.acceptsCharsets/req.acceptEncodings/req.acceptsLanguages:返回指定字符集的第一个可接受的字符编码req.get():获取指定的HTTP请求头req.is():确定请求头的MIME类型Content-TypeResponseobjectResponseobjectrepresentationHTTPresponse,即收到请求时发送给客户端的HTTP响应数据。常用属性有:res.app:同req.appres.append():追加指定的HTTPheaderres.set()会在res.append()之后重置之前设置的headerres.cookie(name,value[,option]):setCookieopition:domain/expires/httpOnly/maxAge/path/secure/signedres.clearCookie():clearCookieres.download():传输指定路径的文件res.get():返回指定的HTTP头res.json():发送JSON响应res.jsonp():发送JSONP响应res.location():只设置响应的LocationHTTP头,不设置状态码或关闭response.redirect():设置Location响应的HTTP头,并设置状态码302res.render(view,[locals],callback):渲染一个视图,同时将渲染后的字符串传递给回调。如果在渲染过程中出现错误,next(err)将被自动调用。回调将传递一个可能的错误和呈现的页面,因此它不会自动输出。res.send():发送HTTP响应res.sendFile(path[,options][,fn]):发送具有指定路径的文件-Content-Type将根据文件扩展名自动设置。set():设置HTTPheader,send输入一个对象可以一次设置多个headersres.status():设置HTTP状态码res.type():设置Content-TypeExpress-routing的MIME类型我们已经了解HTTP请求的基本应用,路由决定谁(指定脚本)响应客户端请求。在HTTP请求中,我们可以通过路由提取请求的URL和GET/POST参数。路由的基本形式:app.METHOD(PATH,HANDLER)app代表Express的一个实例METHOD是http请求的方法(get,psot..)PATH服务器上的路径HANDLER请求后的执行函数下面的例子说明如何定义路由://向/news页面发出获取请求app.get('news',(req,res)=>{res.send('Hellonews');});//发出一个发布到/about页面Requestapp.post('about',(req,res)=>{res.send('Helloabout');});//for/list*可以匹配/list+任意字符应用。get('/list*',(req,res)=>{res.send('Hellolistpages');})然后运行:nodeserver.js打开:http://localhost:8083/Express-buildstatic资源库Express提供了内置的中间件express.static用于设置图片、CSS、JavaScript等静态文件,可以使用express.static中间件设置静态文件路径。比如你把图片、CSS、JavaScript文件放在public目录下,你可以这样写:app.use(express.static('public'));现在,你可以访问public目录下的所有文件:public/index.htmlpublic/imagespublic/images/bg.jpegpublic/css...如果你想使用多个静态资源目录,请多次调用express.static中间件函数:app.use(express.static('public'))app.use(express.static('files'))Express在静态目录下查找文件,所以静态文件存放的目录名不会出现在URL中。但是可以给静态目录添加路由:app.use('/static',express.static(path.join(__dirname,'public')))设置/static为/public目录的路由。现在,您可以通过在文件前加上/static来访问公共目录中的文件。http://localhost:8083/static/csshttp://localhost:8083/static/css/index.csshttp://localhost:8083/static/imagehttp://localhost:8083/static/images/bg.jpeghttp://localhost:8083/static/index.html为了安全,最好使用绝对路由:app.use('/static',express.static(path.join(__dirname,'public')))然后运行:nodeserver打开.js:http://localhost:8083/static访问public下的所有文件,如图:Express-TemplateEngine的EJSEJS是一种简单的模板语言,帮助你用普通的JavaScript代码生成HTML页面.下载Ejs:npminstallejs--save在同一目录下新建一个myejs.js:constexpress=require('express');constapp=express();//设置模板文件的目录,新建viwes目录app.set('views','./views');//注册模板引擎app.set('viewengine','ejs');//使用res.render()渲染一个视图,渲染HTML字符字符串发送给客户端;app.get('/',function(req,res,){res.render('index',{title:'Test'});});//监听8083端口app.listen(8083,()=>{console.log('Serverisrunningathttp://localhost:8083')})在新的views目录下新建index.ejs:

<%=title%>

然后运行:nodemyejs.js打开:http://localhost:8083可以看到:当然也可以返回一个json文件来渲染视图:在同级目录下新建data.json:{"list":[{"name":"小明","age":"6","sex":"男"},{"name":"小红","age":"4","sex":"女"},{"name":"小亮","age":"5","sex":"男"}],"source":"魔法二班"}然后改myejs.js:constexpress=require('express');constfs=require('fs');constapp=express();//设置模板文件所在目录,新建viwes目录app.set('views','./views');//注册模板引擎app.set('viewengine','ejs');//使用res.render()渲染一个视图,并将渲染后的HTML字符串发送给客户端;应用程序。get('/',function(req,res,){getDataJson((dataJson)=>{console.log(dataJson);res.render('index',dataJson);})});//访问数据。json获取数据解析后返回constgetDataJson=(callBack)=>{fs.readFile('./data.json',(err,data)=>{if(!err){letjsonData=JSON.parse(data);callBack(jsonData);}else{throwerr;}})}//监听8083端口app.listen(8083,()=>{console.log('服务器运行在http://localhost:8083')})然后改变index.ejs:

<%=source%>

    <%for(vari=0;i
  • <%=列表[i].name%>|<%=列表[i].age%>|<%=list[i].sex%>
  • <%}%>
然后运行:然后运行:nodemyejs.js打开:http://localhost:8083参考:GitHubSourceExpress官方文档EJS模板引擎