nodejs 开发网页(express框架)

原文链接:https://www.cnblogs.com/zhongweiv/p/nodejs_express.html

Express是一个轻量级、简洁、易用的Node.js Web MVC开发框架,它基于Node.js原有进行了很多Web开发所需的功能封装...

  http://expressjs.com/

  https://www.npmjs.org/package/express

  

  安装

npm install -g express-generator

  https://github.com/visionmedia/express#quick-start

  -g:表示全局安装

  

  

   到此express就在全局环境中安装成功!

   PS:用npm安装有时可能进度不动,多试几次!

运行第一个基于express框架的Web 

   1.创建一个testWebApp

express testWebApp

   

  2.安装依赖项

  注意上一步安装成功后的提示,需要cd到网站目录,并执行npm install命令安装项目依赖项(可以在项目的package.json文件的dependencies节点下看到需要哪些依赖

  3.修改app.js文件并运行

  在testWebApp根目录下找到app.js并增加端口监听,在sublime中Ctrl+B运行

app.listen(8100,function(){
    console.log("Server Start!");
});

  

  4.通过浏览器访问,看看效果

  

 

  到此成功的运行起来基本express框架的Web!

 

  相关提示:

  1.在sublime中运行过后,如果想要关闭,去任务管理器中结束node.exe进程

  2.不在sublime中运行,可以在cmd中执行node app,关闭使用快捷键Ctrl+C

模版引擎 ejs

  在上面创建的testWebApp中express默认使用的模版擎为jade,个人觉得jade虽然简洁但不直观,所以选择了更易上手的ejs。

  ejs:Embedded JavaScript

  https://github.com/visionmedia/ejs

  1.创建一个express + ejs的项目

express -e testEjsWebApp

cd testEjsWebApp

npm install

  express参数

  Usage: express [options] [dir]

  Options:

    -h, --help          output usage information
    -V, --version       output the version number
    -e, --ejs           add ejs engine support (defaults to jade)
    -H, --hogan         add hogan.js engine support
    -c, --css <engine>  add stylesheet <engine> support (less|stylus|compass) (d
efaults to plain css)
    -f, --force         force on non-empty directory  

  2.创建成功后,打开app.js,添加8100端口监听

  3.打开routes文件夹下index.js,并修改代码如下

    

 

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res) {
  res.render('index', { title: '<h1>Express</h1>'
                          ,users:[{username: 'Wilson'},
                                {username: 'Wilson Zhong'},
                                {username: 'Zhong Wei'}] 
            });
});

module.exports = router;

  4.打开views文件夹下index.ejs,并修改代码如下

  

 

 

<!DOCTYPE html>
<html>
  <head>    
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>

    <%= title %>
    <%- title %>
    <% users.forEach(function(user){ %>
        <h6><%= user.username %></h6>
    <% }) %>
    
  </body>
</html>

  5.运行页面,查看结果

  

 

  在这里,我们还没有讲express的一些东西,所以大家先不要管太多细节部分,只要知道上面示例中当通过http://localhost:8100访问时,

  会转到index.js,而index.js而index.ejs传递了title和users对象作为参数。

 

  这里重点看看index.ejs

  ejs结尾的文件就是模版文件,可以看到在文件中我们用了三种标签方式(这种标签方式有过其它web开发经验的应该很好看懂)

  1.<%= %>

  这个标签在接到收到title: '<h1>Express</h1>'时,从显示效果来看,他直接输出HTML标签到页面上,输出的是转义后的变量值

  2.<%- %>   

  而这个标签,从显示效果上看,他没有直接输出HTML代码到页面上,输出的是没有转义后的变量值

  3.<% %>

  而这个标签,从显示上看,他循环了出来参数中的值,标签中是javascript逻辑代码,注意括号的开闭合

 

  在这里,简单认识一下ejs,下面开始看看express的结构!

 

express项目结构

  上面新建了一个叫testEjsWebApp的项目,模版引擎使用的ejs,先看看项目的结构

  

  1.node_modules文件夹

   这文件夹就是在创建完项目后,cd到项目目录执行npm install后生成的文件夹,下载了项目需要的依赖项

  2.package.json文件

  此文件是项目的配置文件(可定义应用程序名,版本,依赖项等等)

  node_modules文件夹下的依赖项是从哪里知道的呢?原因就是项目根目录下的这个package.json文件,执行npm install时会去找此文件中的dependencies,并安装指定的依赖项

  3.public文件夹(包含images、javascripts、stylesheets)

  这个文件夹做过Web开发的应该一看就知道,为了存放图片、脚本、样式等文件的

  4.routes文件夹

  用于存放路由文件,

  5.views文件夹

  用于存放模版文件

express项目分析

  先从app.js看起

  1.app.set(name,value)

  把名字为name的项的值设为value,用于设置参数

  app.set('views', path.join(__dirname, 'views'));   设置了模版文件夹的路径;主要清楚__dirname的意思就可以了,它是node.js中的全局变量,表示取当前执行文件的路径

  app.set('view engine', 'ejs');  设置使用的模版引擎,我们使用的ejs

  2.app.use([path], function)

     用这个方法来使用中间件,因为express依赖于connect,有大量的中间件,可以通过app.use来使用;path参数可以不填,默认为'/'  (项目中用到的就不分别解释了,用到的时候自已查一API的中间件部分)

  app.use(express.static(path.join(__dirname, 'public'))); 这一句中可能要注意一下,express.static( )是处理静态请求的,设置了public文件,public下所有文件都会以静态资料文件形式返回(如样式、脚本、图片素材等文件)

var routes = require('./routes/index');
var users = require('./routes/users');

app.use('/', routes);
app.use('/users', users);

  上面代码表示当用户使用/访问时,调用routes,即routes目录下的index.js文件,其中.js后缀省略,用/users访问时,调用routes目录下users.js文件

  这就是为什么,我们示例中用http://localhost:8100/访问是,修改的index.js里的文件代码可以执行(当然index.js文件中也要写对应的代码,才能是我们最终看到的效果)

  3.app.get(name)

  获取名为name的项的值

if (app.get('env') === 'development') {
    app.use(function(err, req, res, next) {
        res.status(err.status || 500);
        res.render('error', {
            message: err.message,
            error: err
        });
    });
}

  表示如果是开发环境,处理error时会输出堆栈信息

  4.路由文件index.js

  主要看下面这段代码

router.get('/', function(req, res) {
  res.render('index', { title: '<h1>Express</h1>'
                          ,users:[{username: 'Wilson'},
                                {username: 'Wilson Zhong'},
                                {username: 'Zhong Wei'}] 
            });
});

  这段表示,router.get表示通过get请求/时,响应后面的function处理,两个参数分别是request、response;

  res.render表示调用模版引擎解析名字index的模板,传并传入了title和users两个对象做为参数;

  为什么它会知道解板views目录下的index.ejs?而不是其它目录下的文件,或者后其它后缀名的文件?

  原因就是app.js中的设置:

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

  而这两个参数在index.ejs中可以使用,那么加上ejs的部分,就会返回最终生成的页面展现!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Express是一个基于Node.js平台的Web应用程序框架,它提供了一系列强大的功能和工具,使得开发Web应用程序变得更加简单和高效。Express框架具有灵活性和可扩展性,可以轻松地与其他Node.js模块和库集成,同时也支持多种模板引擎和中间件,使得开发者可以根据自己的需求进行定制和扩展。Express框架还提供了丰富的路由和HTTP请求处理功能,使得开发者可以轻松 ### 回答2: Express是一个流行的Node.js Web应用程序开发框架。它提供了一组简单、灵活和易于使用的功能,可以帮助开发人员快速构建高性能的Web应用程序和API。 Express提供了许多有用的功能,包括路由、中间件、模板引擎等。通过使用Express,可以轻松地定义应用程序的不同路由,并将请求映射到相应的处理函数中。这使得应用程序的结构更清晰,并且可以更好地组织和管理代码。 Express还提供了中间件的概念,允许开发人员在请求和响应之间执行一些通用的功能。中间件可以用于处理身份验证、日志记录、错误处理等。使用中间件,可以将这些功能分离到单独的模块中,提高了代码的可重用性和可维护性。 另外,Express还支持多种模板引擎,如EJS、Handlebars等。这些模板引擎允许开发人员动态生成HTML页面,并将数据和逻辑与界面分离。使用模板引擎,可以更方便地构建可重用和可扩展的视图。 总的来说,Express是一个强大而灵活的Web应用程序开发框架。它提供了许多功能,简化了Node.js应用程序的开发过程。使用Express开发人员可以更快速、更高效地构建出高性能的Web应用程序和API。 ### 回答3: Express是一个流行的Node.js Web应用程序框架,它建立在Node.js的核心HTTP模块之上,旨在简化和加速Web应用程序的开发过程。 Express具有简单易用的API,使得创建Web服务器和处理HTTP请求变得容易。它提供了一组强大的功能和中间件,用于处理路由、模板引擎、HTTP请求和响应等。开发者可以使用Express轻松地创建和管理路由,处理GET、POST、PUT等HTTP请求,并返回各种类型的响应。 Express还支持各种模板引擎,如EJS和Handlebars,使得动态生成HTML页面变得简单。通过使用模板引擎,可以将动态数据嵌入到静态HTML页面中,并将结果返回给客户端。 此外,Express还提供了强大的中间件功能,用于处理HTTP请求和响应。中间件是在请求和响应之间执行的函数,用于执行各种任务,如处理身份验证、错误处理、日志记录等。开发者可以将多个中间件链接在一起,以便在请求到达路由处理之前,对请求进行预处理。 Express的优势之一是其灵活性和可扩展性。它允许开发者使用其他Node.js模块和库,以满足特定的需求。开发者可以自由地选择适合他们项目的组件和解决方案,并根据需要对其进行自定义。 总之,Express是一个强大而灵活的Node.js框架,用于快速构建Web应用程序。它提供了丰富的功能和易于使用的API,使得构建高性能的Web应用程序变得简单。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值