转载:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp1.html

  • 前言
  • 新建express项目并自定义路由规则
  • 如何提取页面中的公共部分?
  • 如何提交表单并接收参数?
    • GET 方式
    • POST 方式
  • 如何字符串加密?
  • 如何使用session?
  • 如何使用cookies?
  • 如何清除session和cookies?
  • 写在之后

前言

 经过学习Node.js,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识!

 主要是些基础的东西,这里我们说下 express 项目分析...

 先从app.js看起

  • app.set(name,value)

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

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

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

  • 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文件中也要写对应的代码,才能是我们最终看到的效果)

  • app.get(name)

  获取名为name的项的值

modeJS 深了解(1): Node.js + Express 构建网站预备知识
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
        });
    });
}
modeJS 深了解(1): Node.js + Express 构建网站预备知识

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

  • 路由文件index.js

  主要看下面这段代码

modeJS 深了解(1): Node.js + Express 构建网站预备知识
router.get('/', function(req, res) {
  res.render('index', { title: '<h1>Express</h1>'
                          ,users:[{username: 'Wilson'},
                                {username: 'Wilson Zhong'},
                                {username: 'Zhong Wei'}] 
            });
});
modeJS 深了解(1): Node.js + Express 构建网站预备知识

  这段表示,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的部分,就会返回最终生成的页面展现!

 

  如何去创建路由规则、如何去提交表单并接收表单项的值、如何去给密码加密、如何去提取页面公共部分(相当于用户控件和母版页)等等...

  下面就一步步开始吧^_^!...

新建express项目并自定义路由规则

  • 首先用命令行express+ejs创建一个项目sampleEjsPre
cd 工作目录
express -e sampleEjsPre
cd sampleEjsPre && npm install
  • 默认会有routes目录下会有index.js和users.js文件,这里为了不产生其它示例外的困扰,删除user.js文件
  • 打开app.js文件删除下面两行代码
var users = require('./routes/users');

...

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

 

  • 在routes目录下添加subform.js、usesession.js、usecookies.js、usecrypto.js文件,并在对应的js文件中添加如下代码
    var express = require('express');
    var router = express.Router();
    
    /* GET home page. */
    router.get('/', function(req, res) {
      res.render('subform', { title: '提交表单及接收参数示例' });
    });
    
    module.exports = router;
    
    subform.js 代码
    subform.js

相关文章:

  • 2021-09-08
  • 2021-04-26
  • 2021-11-22
  • 2022-02-14
  • 2021-07-01
  • 2021-04-01
猜你喜欢
  • 2021-10-17
  • 2021-07-25
  • 2021-04-08
  • 2022-01-08
  • 2021-05-25
  • 2022-12-23
相关资源
相似解决方案