express的使用(七)

编程入门 行业动态 更新时间:2024-10-07 00:27:31

<a href=https://www.elefans.com/category/jswz/34/1771445.html style=express的使用(七)"/>

express的使用(七)

1. express是什么?

Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。

2. 如何安装express。

  1. 使用epress框架,需先安装nodejs,此处省略这一步
  2. 全局安装express-generator
npm install express --save -g
npm install express-generator --save -g
express --version  //检测express 版本号

3.express如何快速构建项目

  1. 在要创建项目的文件夹中开启 终端 窗口输入:
express -e firstProject

以上指令 -e 意为 创建的项目使用ejs模板
firstProject 为项目名
2. 进入项目目录,安装依赖

cd firstProject 
pm install
  1. 启动运行项目
 npm start 

这里需要注意 express 4.x 无法以 node app.js 为启动方式,而是用指令 npm start 作为启动)

  1. 访问
    浏览器访问:http://localhost:3000/ 出现熟悉的Welcome to Express,证明安装成功。

3. 项目目录结构分析

app.js 是主文件

packetage.json 是配置信息文件

bin 用于应用启动,可在里面设置启动的端口号等。

public 静态资源目录,放置js css img等文件

routes是项目的路由信息文件,控制地址路由

views是视图文件,放置模板文件ejs或jade,swig等(其实就相当于html形式文件啦~)

node_modules 是项目依赖的各种插件

app.js

var express=require("express");  //http var app=express();// 创建app服务器  === http.createServer()var RouterA=require('./routes/a.js');
var RouterHome=require('./routes/home')var path=require("path");var port=3000; //端口var ejs=require("ejs");//设置 视图文件路径
app.set("views",path.join(__dirname,"views"));//设置解析 视图文件的引擎
app.set('view engine','ejs')//设置静态资源的路径
app.use('/public',express.static(path.join(__dirname,'public')))var ip='127.0.0.1';//ipapp.listen(port,ip,function(){  //app服务器监听端口console.log("服务器运行在http://"+ip+":"+port)
});app.use('/',RouterHome)
app.use('/a',RouterA)function fn(req,res){ // app添加 get请求根路径的路由// res.send("hello world");// 向前台输出console.log(req.url)res.write("hello express123");res.end()
}
// module.exports=app;

bodyParser中间件的使用

执行指令: cnpm install body-parser -D

var bodyParser=require('body-parser');app.use(bodyParser.urlencoded({extended:true,limit:100}))app.post('/api',function(req,res,next){console.log(req.body)
})

ejs语法

变量的声明<% title='hello world' %>
变量的使用<%= title %>
循环语句  arr:['张三','李四',"王五","小明"]<% for(var item in arr){ %><li> 姓名:<%= arr[item] %></li><% } %>
循环语句 list=[{title:'昌平马池口大雨',authour:'于成龙',times:'2019-4-9'},{title:'吉利大学阅兵准备',authour:'蒋伟',times:'2019-4-1'},{title:'积云教育就业喜报',authour:'耿丽娜',times:'2019-3-8'},{title:'昌平马池口大雨',authour:'于成龙',times:'2019-4-9'},]<% for(var item in list){ %><div style="border:1px solid black"><h3><%= list[item].title %></h3><p>作者:<%= list[item].authour %> </p><p>时间:<%= list[item].times %> </p></div><% } %>条件判断语句<% on=true %><% if(!on){ %><button>开/注册</button><% }else{ %><button>关/登录</button><% } %><!-- 导入外部 模块 --><% include ./footer.ejs %>

Express.Router用法

从Express 4.0开始,路由器功能成了一个单独的组件Express.Router。它好像小型的express应用程序一样,有自己的use、get、param和route方法。

基本用法
首先,Express.Router是一个构造函数,调用后返回一个路由器实例。然后,使用该实例的HTTP动词方法,为不同的访问路径,指定回调函数;最后,挂载到某个路径。

var router = express.Router();router.get('/', function(req, res) {res.send('首页');
});router.get('/about', function(req, res) {res.send('关于');
});app.use('/', router);

上面代码先定义了两个访问路径,然后将它们挂载到根目录。如果最后一行改为app.use(‘/app’, router),则相当于为/app和/app/about这两个路径,指定了回调函数。

这种路由器可以自由挂载的做法,为程序带来了更大的灵活性,既可以定义多个路由器实例,也可以为将同一个路由器实例挂载到多个路径。

router.route方法
router实例对象的route方法,可以接受访问路径作为参数。

var router = express.Router();router.route('/api').post(function(req, res) {// ...}).get(function(req, res) {Bear.find(function(err, bears) {if (err) res.send(err);res.json(bears);});});app.use('/', router);

router中间件
use方法为router对象指定中间件,即在数据正式发给用户之前,对数据进行处理。下面就是一个中间件的例子。

router.use(function(req, res, next) {console.log(req.method, req.url);next();	
});

上面代码中,回调函数的next参数,表示接受其他中间件的调用。函数体中的next(),表示将数据传递给下一个中间件。

注意,中间件的放置顺序很重要,等同于执行顺序。而且,中间件必须放在HTTP动词方法之前,否则不会执行。

对路径参数的处理
router对象的param方法用于路径参数的处理,可以

router.param('name', function(req, res, next, name) {// 对name进行验证或其他处理……console.log(name);req.name = name;next();	
});router.get('/hello/:name', function(req, res) {res.send('hello ' + req.name + '!');
});

上面代码中,get方法为访问路径指定了name参数,param方法则是对name参数进行处理。注意,param方法必须放在HTTP动词方法之前。

app.route
假定app是Express的实例对象,Express 4.0为该对象提供了一个route属性。app.route实际上是express.Router()的缩写形式,除了直接挂载到根路径。因此,对同一个路径指定get和post方法的回调函数,可以写成链式形式。

app.route('/login').get(function(req, res) {res.send('this is the login form');}).post(function(req, res) {console.log('processing');res.send('processing the login form!');});

上面代码的这种写法,显然非常简洁清晰。

更多推荐

express的使用(七)

本文发布于:2024-02-28 08:45:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1769142.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:express

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!