express紧急回顾随笔

四行代码搭建服务器

      var express = require('express');
      var app = express();
      //设定静态路径 所有请求优先在此路径查找
      //不要把服务器配置JS文件和静态页面放在同一个文件夹!!!!
      app.use(express.static(path.join(__dirname, 'static')));
      app.listen(9000);

 

常用插件

      //需要npm install
      //可以在服务器打印请求信息 超级好用
      var morgan = require('morgan');
      //就这样调用
      app.use(morgan('short'));

 

路由(妈个鸡,被坑了一上午)

  首先是主服务器配置的内容,需要引进对应的专业路由js文件。

      //引入对应的JS文件 可以省略js后缀 因为js会被优先查找
      var apiRouter = require("./router/api_router");
      //注意!!!第一个参数代表对应路径请求转接
      app.use("/index", apiRouter);

  然后是路由js文件对应的内容。

      //话不多说 先引这两
      var express = require("express");
      var path = require('path');
      //实例化一个路由对象
      var api = express.Router();
      //这个路由处理来自index的post请求
      api.post('/', function(req, res) {
            console.log(req.body);
            res.sendFile(path.join(__dirname, '../static/index.html'));
      });

  举个例子!

api.post('/', function(req, res) {
    //获取post请求传入的账号密码
    var user = req.body.username,
        password = req.body.password;
    //进行判断 老子还不会数据库啊
    if (user === 'admin' && password === 'admin') {
        //通过 给你index页面
        res.sendFile(path.join(__dirname, '../static/index.html'));
    } else {
        //失败 回去你的login吧
        res.redirect('./login.html');
    }
});

   又找到一个坑!

//为了解析post 这个需要在主配置中引用
app.use(bodyParser.urlencoded({ extended: false }));

//默认根路径会指向index.html
//需要在前面使用get劫持请求然后重定向
app.get('/', function(req, res) {
    console.log(12);
    res.redirect('./login.html');
});

//设定静态路径 所有请求优先在此路径查找
//不要把服务器配置JS文件和静态页面放在同一个文件夹!!!!
app.use(express.static(path.join(__dirname, 'static')));

  大功告成,假设静态目录下有login.html和index.html,login中有一个表单,输入账号密码然后post请求index页面,服务器这边就可以在路由里面搞事情处理这个跳转了。更多内容,等我再出bug。

  发现一个中间件,可以将webpack与node的热加载配合在一起,同时完成打包与页面热加载,吊的1B。

  话不多说,直接上代码。

//直接引用这个中间件
var webpackDevMiddleware = require("webpack-dev-middleware");
//获取webpack
var webpack = require("webpack");
//配置文件
var compiler = webpack({
    //入口文件为刚才的main.js
    entry: './static/js/main.js',
    //随便找个地方输出 
    output: {
        path: path.resolve(__dirname, './static'),
        publicPath: '/static/',

    },
    module: {
        rules: [
            //处理vue单文件
            {
                test: /\.vue$/,
                loader: 'vue-loader'
            },
            //处理import等语法
            {
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: /node_modules/
            },
        ]
    },
});
//链接webpack与express
app.use(webpackDevMiddleware(compiler, {
    // options
}));

  这时候,修改vue文件,保存之后,会直接自动打包,刷新后可以直接渲染更新到到页面上!

posted @ 2017-03-06 11:00  书生小龙  阅读(214)  评论(0编辑  收藏  举报