zoukankan      html  css  js  c++  java
  • node.js 11 Web框架Express 介绍,安装,静态页面,路由

    本文参考原文-http://bjbsair.com/2020-03-22/tech-info/2815.html
    前面介绍了node.js的文件模块,http server以及静态网站的创建。有了这些知识作为基础,我们可以了解一下node.js的Web框架了。

    从Java一路过来的朋友可能觉得Web框架还是比较重量级的,比如最初的Struts到后来的Spring,中间Apache组织也有过一些其他的模板框架,总体而言无论是从使用还是学习来讲,都是需要花费较多时间的。对于大型应用而言,这个投入是值得的。如果需要在较短的时间开发小型web应用,就值得商榷了。

    好在有了node.js的出现,出现了像Express这样的轻量级,灵活的web框架,中小型web应用的开发速度就有了飞速的提升。

    node.js 10 Web框架Express 介绍,安装,静态页面,路由

    express.js

    node.js Web框架

    Java的世界里,Spring的使用目前处于绝对优势。但是其他语言就不一样了,无论node.js还是python,都有多个web应用框架。尤其是node.js,web框架较多,业界甚至评出了10大node.js web框架。不过不要惊慌,万变不离其宗,很多node.js web框架都是在Express的基础上开发的。这也是为什么在我的node.js系列里一定会出现node.js。最近炙手可热的框架koa也是之前Express的一帮开发人员后来做的,后面我也会专门写一篇介绍Koa。

    之所以介绍Express,一是因为很多node.js框架都是在Express基础上的,另一个原因是Express非常轻便,上手很快,快到做一个CRUD的时间可以缩短到几个小时或者更短。这让我想起若干年前,我在使用Java Blueprint EJB做一个CRUD用了大约2天时间,包括了服务器的配置,在不同的web server上调试。然而node.js不需要这些,因为http server 以及Application server都是程序员自己用node.js代码写的。从另一个层面来讲,真正的大型企业级应用,我个人不推荐node.js。小型轻量级应用,node.js是首选。

    Express JS

    Github上收获了47.7k个星,目前来看是下载量最多的node.js框架。我之前介绍的node.js博客系统Ghost使用的web框架就是Express。

    通过Express可以提供静态网站服务,路由,中间件,以及与模板引擎配合使用。

    Express JS安装运行

    安装通过npm进行。

    1. 安装express "npm install express --save"
    D:Projects
    odejsNodeDemoforms>npm install express --save  
    npm WARN forms@1.0.0 No description  
    npm WARN forms@1.0.0 No repository field.  
      
    + express@4.17.1  
    added 50 packages from 37 contributors and audited 127 packages in 11.149s  
    found 0 vulnerabilities
    
    1. 在第一步完成后,express就已经在本地安装完成。但是没办法像create-react-app那样创建程序框架。好在express有一个程序生成器,express-generator。通过命令"npm install express-generator -g"即可安装。
    D:Projects
    odejsNodeDemoforms>npm install -g express-generator  
    D:Program Files
    odejs
    ode_globalexpress -> D:Program Files
    odejs
    ode_global
    ode_modulesexpress-generatorinexpress-cli.js  
    + express-generator@4.16.1  
    added 10 packages from 13 contributors in 6.346s
    
    1. 运行"express"命令创建项目文件

    由于我们已经建好了forms项目目录,所以直接运行express就可以在目录下创建项目文件和子目录。如果项目目录没有创建号,可以运行"express "。该命令会自动创建目录,并在目录下创建相关子目录和文件。

    D:Projects
    odejsNodeDemoforms>express  
      
      warning: the default view engine will not be jade in future releases  
      warning: use `--view=jade' or `--help' for additional options  
      
    destination is not empty, continue? [y/N] y  
      
       create : public  
       create : publicjavascripts  
       create : publicimages  
       create : publicstylesheets  
       create : publicstylesheetsstyle.css  
       create : routes  
       create : routesindex.js  
       create : routes\users.js  
       create : views  
       create : viewserror.jade  
       create : viewsindex.jade  
       create : viewslayout.jade  
       create : app.js  
       create : package.json  
       create : bin  
       create : binwww  
      
       install dependencies:  
         > npm install  
      
       run the app:  
         > SET DEBUG=node10:* & npm start
    

    注意我们在运行时,系统有提示“destination is not empty, continue? [y/N]”,直接输入"y"就好。这是因为我们在forms目录下创建,并且该目录下已有部分通过"npm -i"创建的项目文件。

    1. 运行"npm install"安装express相关依赖包
    D:Projects
    odejsNodeDemoforms>npm install  
    added 4 packages from 3 contributors, removed 2 packages, updated 16 packages and audited 141 packages in 12.091s  
    found 0 vulnerabilities
    
    1. 运行项目"npm start"
    D:Projects
    odejsNodeDemoforms>npm start  
      
    > forms@0.0.0 start D:Projects
    odejsNodeDemoforms  
    > node ./bin/www  
      
    GET / 200 17.703 ms - 207  
    GET /stylesheets/style.css 200 5.473 ms - 111
    

    此时,打开自己的浏览器,访问http://localhos:3000/即可显示express创建的项目的主页。

    node.js 10 Web框架Express 介绍,安装,静态页面,路由

    expressjs homepage

    ExpressJS 静态页面处理

    使用框架有一个好处,那就是很多底层的处理不需要自己通过代码一行一行敲,框架的价值在于可以提供很多封装好的接口。

    在静态页面的处理上,我们不需要在通过fs模块读取文件,通过response返回给客户端。在express中,只需要调用response.render()方法,传入模板文件名称即可。

    示例代码:/routes/index.js

    //引入express  
    var express = require('express');  
    var router = express.Router();  
      
    /* 获取静态页面 */  
    router.get('/', function(req, res, next) {  
      res.render('index', { title: 'Express' });  
    });  
    //导出抹开  
    module.exports = router;
    

    上面的代码从express创建的项目的代码中抽取,可以看到返回静态页面只需要引入express模块,调用路由Router,然后通过get方法,调用response.render()读取到index模板文件,将该静态模板文件返回客户端即可。注意,在这里有一个{title:'Express'}是模板中的参数,我们后面会介绍。

    短短数行代码,没有绕人的逻辑,静态页面处理就完成了。

    ExpressJS 路由

    在上面的静态页面处理过程中,我们已经使用了路由Router。路由的具体使用方法如下:

    1. 在入口文件app.js中引入实际处理的路由。比如我们实际处理静态页面index的路由是/routes/index.js, 那么在app.js中我们可以通过下列代码引入index 路由router
    var indexRouter = require('./routes/index');
    
    1. 设定静态页面/模板目录
    app.set('views', path.join(__dirname, 'views'));  
    ......  
    //中间省略数行代码  
    ......  
    app.use(express.static(path.join(__dirname, 'public')));
    

    这里的__dirname表示当前目录,这行代码指定了静态页面/模板的目录。

    3.通过app.use指定相关路径的处理路由

    app.use('/', indexRouter);
    

    这里表示,当访问网站时,系统会使用index路由处理,即/routes/index.js。

    而前面我们讲到过在index.js中,系统调用了res.render()方法传入模板文件,即返回浏览器静态页面。

    ExpressJS 动态页面处理

    通过res.send()方法进行。

    router.get('/', function(req, res, next) {  
      res.send('respond with a resource');  
    });
    

    示例代码可以查看/routes/users.js

    这就是处理路径/users的路由,将路由信息在app.js中写入即可。

    var usersRouter = require('./routes/users');  
    app.use('/users', usersRouter);
    

    当用户通过浏览器访问http://localhost:3000/users时,系统会调用/routes/users.js中的response.get()方法返回信息给客户端。

    node.js 10 Web框架Express 介绍,安装,静态页面,路由

    users路由本文参考原文-http://bjbsair.com/2020-03-22/tech-info/2815/
    前面介绍了node.js的文件模块,http server以及静态网站的创建。有了这些知识作为基础,我们可以了解一下node.js的Web框架了。

    从Java一路过来的朋友可能觉得Web框架还是比较重量级的,比如最初的Struts到后来的Spring,中间Apache组织也有过一些其他的模板框架,总体而言无论是从使用还是学习来讲,都是需要花费较多时间的。对于大型应用而言,这个投入是值得的。如果需要在较短的时间开发小型web应用,就值得商榷了。

    好在有了node.js的出现,出现了像Express这样的轻量级,灵活的web框架,中小型web应用的开发速度就有了飞速的提升。

    node.js 10 Web框架Express 介绍,安装,静态页面,路由

    express.js

    node.js Web框架

    Java的世界里,Spring的使用目前处于绝对优势。但是其他语言就不一样了,无论node.js还是python,都有多个web应用框架。尤其是node.js,web框架较多,业界甚至评出了10大node.js web框架。不过不要惊慌,万变不离其宗,很多node.js web框架都是在Express的基础上开发的。这也是为什么在我的node.js系列里一定会出现node.js。最近炙手可热的框架koa也是之前Express的一帮开发人员后来做的,后面我也会专门写一篇介绍Koa。

    之所以介绍Express,一是因为很多node.js框架都是在Express基础上的,另一个原因是Express非常轻便,上手很快,快到做一个CRUD的时间可以缩短到几个小时或者更短。这让我想起若干年前,我在使用Java Blueprint EJB做一个CRUD用了大约2天时间,包括了服务器的配置,在不同的web server上调试。然而node.js不需要这些,因为http server 以及Application server都是程序员自己用node.js代码写的。从另一个层面来讲,真正的大型企业级应用,我个人不推荐node.js。小型轻量级应用,node.js是首选。

    Express JS

    Github上收获了47.7k个星,目前来看是下载量最多的node.js框架。我之前介绍的node.js博客系统Ghost使用的web框架就是Express。

    通过Express可以提供静态网站服务,路由,中间件,以及与模板引擎配合使用。

    Express JS安装运行

    安装通过npm进行。

    1. 安装express "npm install express --save"
    D:Projects
    odejsNodeDemoforms>npm install express --save  
    npm WARN forms@1.0.0 No description  
    npm WARN forms@1.0.0 No repository field.  
      
    + express@4.17.1  
    added 50 packages from 37 contributors and audited 127 packages in 11.149s  
    found 0 vulnerabilities
    
    1. 在第一步完成后,express就已经在本地安装完成。但是没办法像create-react-app那样创建程序框架。好在express有一个程序生成器,express-generator。通过命令"npm install express-generator -g"即可安装。
    D:Projects
    odejsNodeDemoforms>npm install -g express-generator  
    D:Program Files
    odejs
    ode_globalexpress -> D:Program Files
    odejs
    ode_global
    ode_modulesexpress-generatorinexpress-cli.js  
    + express-generator@4.16.1  
    added 10 packages from 13 contributors in 6.346s
    
    1. 运行"express"命令创建项目文件

    由于我们已经建好了forms项目目录,所以直接运行express就可以在目录下创建项目文件和子目录。如果项目目录没有创建号,可以运行"express "。该命令会自动创建目录,并在目录下创建相关子目录和文件。

    D:Projects
    odejsNodeDemoforms>express  
      
      warning: the default view engine will not be jade in future releases  
      warning: use `--view=jade' or `--help' for additional options  
      
    destination is not empty, continue? [y/N] y  
      
       create : public  
       create : publicjavascripts  
       create : publicimages  
       create : publicstylesheets  
       create : publicstylesheetsstyle.css  
       create : routes  
       create : routesindex.js  
       create : routes\users.js  
       create : views  
       create : viewserror.jade  
       create : viewsindex.jade  
       create : viewslayout.jade  
       create : app.js  
       create : package.json  
       create : bin  
       create : binwww  
      
       install dependencies:  
         > npm install  
      
       run the app:  
         > SET DEBUG=node10:* & npm start
    

    注意我们在运行时,系统有提示“destination is not empty, continue? [y/N]”,直接输入"y"就好。这是因为我们在forms目录下创建,并且该目录下已有部分通过"npm -i"创建的项目文件。

    1. 运行"npm install"安装express相关依赖包
    D:Projects
    odejsNodeDemoforms>npm install  
    added 4 packages from 3 contributors, removed 2 packages, updated 16 packages and audited 141 packages in 12.091s  
    found 0 vulnerabilities
    
    1. 运行项目"npm start"
    D:Projects
    odejsNodeDemoforms>npm start  
      
    > forms@0.0.0 start D:Projects
    odejsNodeDemoforms  
    > node ./bin/www  
      
    GET / 200 17.703 ms - 207  
    GET /stylesheets/style.css 200 5.473 ms - 111
    

    此时,打开自己的浏览器,访问http://localhos:3000/即可显示express创建的项目的主页。

    node.js 10 Web框架Express 介绍,安装,静态页面,路由

    expressjs homepage

    ExpressJS 静态页面处理

    使用框架有一个好处,那就是很多底层的处理不需要自己通过代码一行一行敲,框架的价值在于可以提供很多封装好的接口。

    在静态页面的处理上,我们不需要在通过fs模块读取文件,通过response返回给客户端。在express中,只需要调用response.render()方法,传入模板文件名称即可。

    示例代码:/routes/index.js

    //引入express  
    var express = require('express');  
    var router = express.Router();  
      
    /* 获取静态页面 */  
    router.get('/', function(req, res, next) {  
      res.render('index', { title: 'Express' });  
    });  
    //导出抹开  
    module.exports = router;
    

    上面的代码从express创建的项目的代码中抽取,可以看到返回静态页面只需要引入express模块,调用路由Router,然后通过get方法,调用response.render()读取到index模板文件,将该静态模板文件返回客户端即可。注意,在这里有一个{title:'Express'}是模板中的参数,我们后面会介绍。

    短短数行代码,没有绕人的逻辑,静态页面处理就完成了。

    ExpressJS 路由

    在上面的静态页面处理过程中,我们已经使用了路由Router。路由的具体使用方法如下:

    1. 在入口文件app.js中引入实际处理的路由。比如我们实际处理静态页面index的路由是/routes/index.js, 那么在app.js中我们可以通过下列代码引入index 路由router
    var indexRouter = require('./routes/index');
    
    1. 设定静态页面/模板目录
    app.set('views', path.join(__dirname, 'views'));  
    ......  
    //中间省略数行代码  
    ......  
    app.use(express.static(path.join(__dirname, 'public')));
    

    这里的__dirname表示当前目录,这行代码指定了静态页面/模板的目录。

    3.通过app.use指定相关路径的处理路由

    app.use('/', indexRouter);
    

    这里表示,当访问网站时,系统会使用index路由处理,即/routes/index.js。

    而前面我们讲到过在index.js中,系统调用了res.render()方法传入模板文件,即返回浏览器静态页面。

    ExpressJS 动态页面处理

    通过res.send()方法进行。

    router.get('/', function(req, res, next) {  
      res.send('respond with a resource');  
    });
    

    示例代码可以查看/routes/users.js

    这就是处理路径/users的路由,将路由信息在app.js中写入即可。

    var usersRouter = require('./routes/users');  
    app.use('/users', usersRouter);
    

    当用户通过浏览器访问http://localhost:3000/users时,系统会调用/routes/users.js中的response.get()方法返回信息给客户端。

    node.js 10 Web框架Express 介绍,安装,静态页面,路由

    users路由本文参考原文-http://bjbsair.com/2020-03-22/tech-info/2815/
    前面介绍了node.js的文件模块,http server以及静态网站的创建。有了这些知识作为基础,我们可以了解一下node.js的Web框架了。

    从Java一路过来的朋友可能觉得Web框架还是比较重量级的,比如最初的Struts到后来的Spring,中间Apache组织也有过一些其他的模板框架,总体而言无论是从使用还是学习来讲,都是需要花费较多时间的。对于大型应用而言,这个投入是值得的。如果需要在较短的时间开发小型web应用,就值得商榷了。

    好在有了node.js的出现,出现了像Express这样的轻量级,灵活的web框架,中小型web应用的开发速度就有了飞速的提升。

    node.js 10 Web框架Express 介绍,安装,静态页面,路由

    express.js

    node.js Web框架

    Java的世界里,Spring的使用目前处于绝对优势。但是其他语言就不一样了,无论node.js还是python,都有多个web应用框架。尤其是node.js,web框架较多,业界甚至评出了10大node.js web框架。不过不要惊慌,万变不离其宗,很多node.js web框架都是在Express的基础上开发的。这也是为什么在我的node.js系列里一定会出现node.js。最近炙手可热的框架koa也是之前Express的一帮开发人员后来做的,后面我也会专门写一篇介绍Koa。

    之所以介绍Express,一是因为很多node.js框架都是在Express基础上的,另一个原因是Express非常轻便,上手很快,快到做一个CRUD的时间可以缩短到几个小时或者更短。这让我想起若干年前,我在使用Java Blueprint EJB做一个CRUD用了大约2天时间,包括了服务器的配置,在不同的web server上调试。然而node.js不需要这些,因为http server 以及Application server都是程序员自己用node.js代码写的。从另一个层面来讲,真正的大型企业级应用,我个人不推荐node.js。小型轻量级应用,node.js是首选。

    Express JS

    Github上收获了47.7k个星,目前来看是下载量最多的node.js框架。我之前介绍的node.js博客系统Ghost使用的web框架就是Express。

    通过Express可以提供静态网站服务,路由,中间件,以及与模板引擎配合使用。

    Express JS安装运行

    安装通过npm进行。

    1. 安装express "npm install express --save"
    D:Projects
    odejsNodeDemoforms>npm install express --save  
    npm WARN forms@1.0.0 No description  
    npm WARN forms@1.0.0 No repository field.  
      
    + express@4.17.1  
    added 50 packages from 37 contributors and audited 127 packages in 11.149s  
    found 0 vulnerabilities
    
    1. 在第一步完成后,express就已经在本地安装完成。但是没办法像create-react-app那样创建程序框架。好在express有一个程序生成器,express-generator。通过命令"npm install express-generator -g"即可安装。
    D:Projects
    odejsNodeDemoforms>npm install -g express-generator  
    D:Program Files
    odejs
    ode_globalexpress -> D:Program Files
    odejs
    ode_global
    ode_modulesexpress-generatorinexpress-cli.js  
    + express-generator@4.16.1  
    added 10 packages from 13 contributors in 6.346s
    
    1. 运行"express"命令创建项目文件

    由于我们已经建好了forms项目目录,所以直接运行express就可以在目录下创建项目文件和子目录。如果项目目录没有创建号,可以运行"express "。该命令会自动创建目录,并在目录下创建相关子目录和文件。

    D:Projects
    odejsNodeDemoforms>express  
      
      warning: the default view engine will not be jade in future releases  
      warning: use `--view=jade' or `--help' for additional options  
      
    destination is not empty, continue? [y/N] y  
      
       create : public  
       create : publicjavascripts  
       create : publicimages  
       create : publicstylesheets  
       create : publicstylesheetsstyle.css  
       create : routes  
       create : routesindex.js  
       create : routes\users.js  
       create : views  
       create : viewserror.jade  
       create : viewsindex.jade  
       create : viewslayout.jade  
       create : app.js  
       create : package.json  
       create : bin  
       create : binwww  
      
       install dependencies:  
         > npm install  
      
       run the app:  
         > SET DEBUG=node10:* & npm start
    

    注意我们在运行时,系统有提示“destination is not empty, continue? [y/N]”,直接输入"y"就好。这是因为我们在forms目录下创建,并且该目录下已有部分通过"npm -i"创建的项目文件。

    1. 运行"npm install"安装express相关依赖包
    D:Projects
    odejsNodeDemoforms>npm install  
    added 4 packages from 3 contributors, removed 2 packages, updated 16 packages and audited 141 packages in 12.091s  
    found 0 vulnerabilities
    
    1. 运行项目"npm start"
    D:Projects
    odejsNodeDemoforms>npm start  
      
    > forms@0.0.0 start D:Projects
    odejsNodeDemoforms  
    > node ./bin/www  
      
    GET / 200 17.703 ms - 207  
    GET /stylesheets/style.css 200 5.473 ms - 111
    

    此时,打开自己的浏览器,访问http://localhos:3000/即可显示express创建的项目的主页。

    node.js 10 Web框架Express 介绍,安装,静态页面,路由

    expressjs homepage

    ExpressJS 静态页面处理

    使用框架有一个好处,那就是很多底层的处理不需要自己通过代码一行一行敲,框架的价值在于可以提供很多封装好的接口。

    在静态页面的处理上,我们不需要在通过fs模块读取文件,通过response返回给客户端。在express中,只需要调用response.render()方法,传入模板文件名称即可。

    示例代码:/routes/index.js

    //引入express  
    var express = require('express');  
    var router = express.Router();  
      
    /* 获取静态页面 */  
    router.get('/', function(req, res, next) {  
      res.render('index', { title: 'Express' });  
    });  
    //导出抹开  
    module.exports = router;
    

    上面的代码从express创建的项目的代码中抽取,可以看到返回静态页面只需要引入express模块,调用路由Router,然后通过get方法,调用response.render()读取到index模板文件,将该静态模板文件返回客户端即可。注意,在这里有一个{title:'Express'}是模板中的参数,我们后面会介绍。

    短短数行代码,没有绕人的逻辑,静态页面处理就完成了。

    ExpressJS 路由

    在上面的静态页面处理过程中,我们已经使用了路由Router。路由的具体使用方法如下:

    1. 在入口文件app.js中引入实际处理的路由。比如我们实际处理静态页面index的路由是/routes/index.js, 那么在app.js中我们可以通过下列代码引入index 路由router
    var indexRouter = require('./routes/index');
    
    1. 设定静态页面/模板目录
    app.set('views', path.join(__dirname, 'views'));  
    ......  
    //中间省略数行代码  
    ......  
    app.use(express.static(path.join(__dirname, 'public')));
    

    这里的__dirname表示当前目录,这行代码指定了静态页面/模板的目录。

    3.通过app.use指定相关路径的处理路由

    app.use('/', indexRouter);
    

    这里表示,当访问网站时,系统会使用index路由处理,即/routes/index.js。

    而前面我们讲到过在index.js中,系统调用了res.render()方法传入模板文件,即返回浏览器静态页面。

    ExpressJS 动态页面处理

    通过res.send()方法进行。

    router.get('/', function(req, res, next) {  
      res.send('respond with a resource');  
    });
    

    示例代码可以查看/routes/users.js

    这就是处理路径/users的路由,将路由信息在app.js中写入即可。

    var usersRouter = require('./routes/users');  
    app.use('/users', usersRouter);
    

    当用户通过浏览器访问http://localhost:3000/users时,系统会调用/routes/users.js中的response.get()方法返回信息给客户端。

    node.js 10 Web框架Express 介绍,安装,静态页面,路由

    users路由本文参考原文-http://bjbsair.com/2020-03-22/tech-info/2815/
    前面介绍了node.js的文件模块,http server以及静态网站的创建。有了这些知识作为基础,我们可以了解一下node.js的Web框架了。

    从Java一路过来的朋友可能觉得Web框架还是比较重量级的,比如最初的Struts到后来的Spring,中间Apache组织也有过一些其他的模板框架,总体而言无论是从使用还是学习来讲,都是需要花费较多时间的。对于大型应用而言,这个投入是值得的。如果需要在较短的时间开发小型web应用,就值得商榷了。

    好在有了node.js的出现,出现了像Express这样的轻量级,灵活的web框架,中小型web应用的开发速度就有了飞速的提升。

    node.js 10 Web框架Express 介绍,安装,静态页面,路由

    express.js

    node.js Web框架

    Java的世界里,Spring的使用目前处于绝对优势。但是其他语言就不一样了,无论node.js还是python,都有多个web应用框架。尤其是node.js,web框架较多,业界甚至评出了10大node.js web框架。不过不要惊慌,万变不离其宗,很多node.js web框架都是在Express的基础上开发的。这也是为什么在我的node.js系列里一定会出现node.js。最近炙手可热的框架koa也是之前Express的一帮开发人员后来做的,后面我也会专门写一篇介绍Koa。

    之所以介绍Express,一是因为很多node.js框架都是在Express基础上的,另一个原因是Express非常轻便,上手很快,快到做一个CRUD的时间可以缩短到几个小时或者更短。这让我想起若干年前,我在使用Java Blueprint EJB做一个CRUD用了大约2天时间,包括了服务器的配置,在不同的web server上调试。然而node.js不需要这些,因为http server 以及Application server都是程序员自己用node.js代码写的。从另一个层面来讲,真正的大型企业级应用,我个人不推荐node.js。小型轻量级应用,node.js是首选。

    Express JS

    Github上收获了47.7k个星,目前来看是下载量最多的node.js框架。我之前介绍的node.js博客系统Ghost使用的web框架就是Express。

    通过Express可以提供静态网站服务,路由,中间件,以及与模板引擎配合使用。

    Express JS安装运行

    安装通过npm进行。

    1. 安装express "npm install express --save"
    D:Projects
    odejsNodeDemoforms>npm install express --save  
    npm WARN forms@1.0.0 No description  
    npm WARN forms@1.0.0 No repository field.  
      
    + express@4.17.1  
    added 50 packages from 37 contributors and audited 127 packages in 11.149s  
    found 0 vulnerabilities
    
    1. 在第一步完成后,express就已经在本地安装完成。但是没办法像create-react-app那样创建程序框架。好在express有一个程序生成器,express-generator。通过命令"npm install express-generator -g"即可安装。
    D:Projects
    odejsNodeDemoforms>npm install -g express-generator  
    D:Program Files
    odejs
    ode_globalexpress -> D:Program Files
    odejs
    ode_global
    ode_modulesexpress-generatorinexpress-cli.js  
    + express-generator@4.16.1  
    added 10 packages from 13 contributors in 6.346s
    
    1. 运行"express"命令创建项目文件

    由于我们已经建好了forms项目目录,所以直接运行express就可以在目录下创建项目文件和子目录。如果项目目录没有创建号,可以运行"express "。该命令会自动创建目录,并在目录下创建相关子目录和文件。

    D:Projects
    odejsNodeDemoforms>express  
      
      warning: the default view engine will not be jade in future releases  
      warning: use `--view=jade' or `--help' for additional options  
      
    destination is not empty, continue? [y/N] y  
      
       create : public  
       create : publicjavascripts  
       create : publicimages  
       create : publicstylesheets  
       create : publicstylesheetsstyle.css  
       create : routes  
       create : routesindex.js  
       create : routes\users.js  
       create : views  
       create : viewserror.jade  
       create : viewsindex.jade  
       create : viewslayout.jade  
       create : app.js  
       create : package.json  
       create : bin  
       create : binwww  
      
       install dependencies:  
         > npm install  
      
       run the app:  
         > SET DEBUG=node10:* & npm start
    

    注意我们在运行时,系统有提示“destination is not empty, continue? [y/N]”,直接输入"y"就好。这是因为我们在forms目录下创建,并且该目录下已有部分通过"npm -i"创建的项目文件。

    1. 运行"npm install"安装express相关依赖包
    D:Projects
    odejsNodeDemoforms>npm install  
    added 4 packages from 3 contributors, removed 2 packages, updated 16 packages and audited 141 packages in 12.091s  
    found 0 vulnerabilities
    
    1. 运行项目"npm start"
    D:Projects
    odejsNodeDemoforms>npm start  
      
    > forms@0.0.0 start D:Projects
    odejsNodeDemoforms  
    > node ./bin/www  
      
    GET / 200 17.703 ms - 207  
    GET /stylesheets/style.css 200 5.473 ms - 111
    

    此时,打开自己的浏览器,访问http://localhos:3000/即可显示express创建的项目的主页。

    node.js 10 Web框架Express 介绍,安装,静态页面,路由

    expressjs homepage

    ExpressJS 静态页面处理

    使用框架有一个好处,那就是很多底层的处理不需要自己通过代码一行一行敲,框架的价值在于可以提供很多封装好的接口。

    在静态页面的处理上,我们不需要在通过fs模块读取文件,通过response返回给客户端。在express中,只需要调用response.render()方法,传入模板文件名称即可。

    示例代码:/routes/index.js

    //引入express  
    var express = require('express');  
    var router = express.Router();  
      
    /* 获取静态页面 */  
    router.get('/', function(req, res, next) {  
      res.render('index', { title: 'Express' });  
    });  
    //导出抹开  
    module.exports = router;
    

    上面的代码从express创建的项目的代码中抽取,可以看到返回静态页面只需要引入express模块,调用路由Router,然后通过get方法,调用response.render()读取到index模板文件,将该静态模板文件返回客户端即可。注意,在这里有一个{title:'Express'}是模板中的参数,我们后面会介绍。

    短短数行代码,没有绕人的逻辑,静态页面处理就完成了。

    ExpressJS 路由

    在上面的静态页面处理过程中,我们已经使用了路由Router。路由的具体使用方法如下:

    1. 在入口文件app.js中引入实际处理的路由。比如我们实际处理静态页面index的路由是/routes/index.js, 那么在app.js中我们可以通过下列代码引入index 路由router
    var indexRouter = require('./routes/index');
    
    1. 设定静态页面/模板目录
    app.set('views', path.join(__dirname, 'views'));  
    ......  
    //中间省略数行代码  
    ......  
    app.use(express.static(path.join(__dirname, 'public')));
    

    这里的__dirname表示当前目录,这行代码指定了静态页面/模板的目录。

    3.通过app.use指定相关路径的处理路由

    app.use('/', indexRouter);
    

    这里表示,当访问网站时,系统会使用index路由处理,即/routes/index.js。

    而前面我们讲到过在index.js中,系统调用了res.render()方法传入模板文件,即返回浏览器静态页面。

    ExpressJS 动态页面处理

    通过res.send()方法进行。

    router.get('/', function(req, res, next) {  
      res.send('respond with a resource');  
    });
    

    示例代码可以查看/routes/users.js

    这就是处理路径/users的路由,将路由信息在app.js中写入即可。

    var usersRouter = require('./routes/users');  
    app.use('/users', usersRouter);
    

    当用户通过浏览器访问http://localhost:3000/users时,系统会调用/routes/users.js中的response.get()方法返回信息给客户端。

    node.js 10 Web框架Express 介绍,安装,静态页面,路由

    users路由

  • 相关阅读:
    CentOS中怎样卸载旧版本Git并安装高版本Git
    下载抖音无水印视频工具 python webdriver 2020.09.02
    axel-2.17.9 aria2c-1.35.0 wget-1.20.3 curl-7.72.0 最新CLI下载工具在win10环境测试下载速度
    wget-1.20.3 static for win32
    undefined reference to `inet_pton' under MSYS
    undefined reference to `gnutls_protocol_set_priority'
    wget2 for windows 2020.08.28
    Unicode转义(uXXXX)的编码和解码 go-nascii 类似于 native2ascii
    正则表达式零宽断言 grep sift ripgrep(rg)
    编译 jq git版本
  • 原文地址:https://www.cnblogs.com/lihanlin/p/12562314.html
Copyright © 2011-2022 走看看