林秀栋的技术博客

express安装和使用

基础安装

假设已安装node

生成package.json,可全部用默认设置

npm init

安装express

npm install express –save

开始一个demo,输出 hello world

新建index.js文件

const express = require('express')
const app = express()

app.get('/', (req, res) => res.send('Hello World!'))

app.listen(3000, () => console.log('Example app listening on port 3000!'))

启动(若npm init时配置入口文件为app.js,则写node app.js)

node index.js

监听3000端口,返回’Hello World!’

快速创建应用骨架

安装应用生成器工具 express-generator

npm install express-generator -g

创建一个名称为 myapp 的 Express 应用。此应用将在当前目录下的 myapp 目录中创建,并且设置为使用 Pug 模板引擎(view engine):

express –view=pug myapp

进入文件夹,安装依赖

cd myapp

npm install

启动

set DEBUG=myapp:* & npm start

访问localhost:3000即可

使用art-template

生成的应用默认使用pug模板引擎,这里改为art-template

引入包

npm install art-template –save

npm install express-art-template –save

app.js中

/*引用模板引擎*/
var template = require('art-template');
var express_template = require('express-art-template');

// 设置模板路径
app.set('views', path.join(__dirname, 'views'));
//将express-art-template模板绑定到views后缀为.html的文件
app.engine('html', express_template);
//设置模板引擎
app.set('view engine', 'html');

原来绑定pug如下

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

改成上面的就可以了

结合路由使用

//app.js中
var indexRouter = require('./routes/index');
app.use('/', indexRouter);

//routes/index中
var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
    //第二个参数为模板引擎会使用到的参数
    res.render('index', { title: 'Express'});
});

module.exports = router;

//views/index.html中
<p></p>

渲染为 Express

连接mysql

下载mysql服务端(本文为8.0.13)和客户端(本文用了SQLyog)

npm下载mysql包(注意,这个包和上面的不一样,需另外下载)

npm install mysql –save

连接数据库

var $mysql = require("mysql");
var sql = require("./mysql");
//创建一个连接
var $sql = $mysql.createConnection(sql.mysql);
//连接
$sql.connect();

另外还可通过连接池连接

我的方案

//app.js
//引入mysql
let $mysql = require("mysql");
var db = require("./mysql/mysql");

//创建全局连接池
global.pool = $mysql.createPool(db.mysql);

//mysql/mysql.js
let $mysql = require("mysql");

let db = {
    //配置
    mysql: {
        host: "localhost",  //这是数据库的地址,本来好像有端口号3306,但加上就报错了,好像还有port参数,可能在那传值
        user: "root",            //需要用户的名字
        password: "123456",      //用户密码 ,如果你没有密码,直接双引号就是
        database: "demo"         //数据库名字
    },
    //连接数据库
	//如果用连接池连接的话,这个好像就没用了
    connect(){
        //创建一个连接
        let $sql = $mysql.createConnection(this.mysql);
        //连接
        $sql.connect();
    },
    //数据库操作
    query(sql, callback){
		//调用全局的连接池
        global.pool.getConnection(function(err,connection){
            connection.query(sql, function (err,rows) {
                callback(err,rows);
                //连接不再使用后,返回到连接池
                connection.release();
            });
        });
    }
};

module.exports = db;

//index.js
//使用
var db = require("../mysql/mysql");

router.get('/', function(req, res, next) {
    db.query("select * from t_user",function(err,rows){
        if(err){
            res.render("index",{title:"失败",datas:[]});
        }else{
            console.log(JSON.stringify(rows))
            res.render("index",{title:"成功",datas:rows});
        }
    });
});