基础安装
假设已安装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});
}
});
});
林秀栋的技术博客