链接:https://v3.bootcss.com/examples/dashboard/ 模板
-
模块化
-
模块作用域
-
加载require
-
导出exports
例子:exports是module.exports的一个引用
exports === module.exports
注:直接exports赋值是不管用的。因为最后return的是module.exports
main.js
var foo = require("./foo")
console.dir(foo.foo)
console.dir(foo) //module导出的值
console.dir(foo.add1) //module导出的值
console.dir(foo.add2) //module导出的值
foo.js
var foo = "dddd"
exports.foo = foo //可以到处多个成员
module.exports.add1 = "hello1" //会覆盖上面的
module.exports.add2 = "hello11" //会覆盖上面的
- 优先缓存加载
- require加载规则
require(“模块标识符”) - 核心模块
- 第三方模块
- 自己写的模块
./ 当前目录,不可省略
…/ 上级目录,不可省略
/xxxx (几乎不用)
d:/xxx (几乎不用)
.js结尾的,可以省略.js - npm(安装下载包)
npm init // 刻字机选择信息
npm init -y //快速生成,可以跳过想到
升级npm
npm install --global npm
下载包
npm install
npm i
npm install 包名 //下载
npm i 包名
npm install --save 包名 //下载并保存依赖项
npm i -S 包名
npm uninstall 包名 //只删除(依赖项依然存在)
npm un 包名
npm uninstall --save 包名 //只删除(依赖项也删除)
npm un -S 包名
npm help //查看使用帮助
- package.json(包说明:依赖)
- 文件操作路径,模块标识路径问题
文件操作中的相对路径可以省略./
/磁盘根目录
./当前文件所在目录的路径
模块标识路径不可省略./
Express(Web开发框架)
1、导入
//导入express
var express = require('express')
//创建app
var app = express()
//访问路径,express做了封装,简化了url的判断
app.get('/',function (req,res) {
res.send("hello express")
})
app.get('/about',function (req,res) {
res.send("hello about")
})
//开放端口
app.listen(3000,function () {
console.log("app is running at port 3000")
})
2、访问静态资源
//放开权限:公开指定目录(/public/xxxx访问所有资源)
app.use('/public/',express.static('./public/'))
//当省略第一个参数的时候可以通过省略/public的方式来访问
//app.use(express.static('./public/'))
3、基本路由
//把路由挂载到app服务中
app.use(router)
/**
* 路由
*/
//方法二:express方式
var express = require('express')
//创建路由容器
var router = express.Router()
//把路由挂载到路由容器中
//访问路径,express做了封装,简化了url的判断
router.get('/',function (req,res) {
res.render("index.html",{name:"zhangsan"})
//res.send()
})
router.post('/post',function (req,res) {
//获取表单Post 使用第三方
//获取参数
console.log(req.body)
//处理
//发送响应
})
//把router导出
module.exports = router
4、配置art-templte
npm install --save art-template
npm install --save express-art-template
//配置art-template
app.engine('html',require('express-art-template'))
res.render('html模板名',{模板数据}) 默认views文件夹下
app.get('/',function (req,res) {
//获取参数
console.log(req.query)
res.render("index.html",{name:"zhangsan"})
//res.send()
})
app.get('/about',function (req,res) {
//获取参数
console.log(req.query)
res.redirect('/')//重定向
})
5、post表单
安装body-parser
npm install --save body-parser
配置
//post数据获取插件body-parser
var bodyParser = require('body-parser')
//配置body-parser,只要加入配置,req上回多出一个属性req.body
app.use(bodyParser.urlencoded({extend:false}))
app.use(bodyParser.json())
取值
app.post('/post',function (req,res) {
//获取表单Post 使用第三方
//获取参数
console.log(req.body)
//处理
//发送响应
})
6、回调函数
nodejs为异步操作,返回值会有影响,采用回调函数的方式解决。
function fn(name,callback){
setTimeout(function () {
var data = name
callback(data)
},1000)
}
fn("ssss",function(data){
console.dir(data)
})
6、session
npm install express-session
//配置session
app.use(session({
secret:'keyboard cat',//配置加密字符串,安全性,防止客户端恶意伪造
resave:false,//
saveUninitialized:true//无论是否使用session,默认直接分配钥匙
}))
//使用
req.session.foo = 'ssss' //保存
req.session.foo//取值
//清空
req.session.foo = null
7、mysql的增删改查
导入库、
npm install mysql --save
配置db.js
var mysql = require("mysql");
var pool = mysql.createPool({
host:"localhost",
user:"root",
password:"root",
database:"oa"
});
function query(sql,callback){
pool.getConnection(function(err,connection){
connection.query(sql, function (err,rows) {
callback(err,rows);
connection.release();
});
});
}
exports.query = query;
调用http接口
/**
* 调用http接口
* @type {module:http}
*/
var http = require("http");
//项目名
var projectName = '/layui/'
var host = 'localhost'
var port = '8080'
exports.service =async function (path,data,type,callback) {
var opt = {
host:host,
port:port,
method:type,
path:projectName+path,
headers:{
"Content-Type": 'application/json',
"Content-Length": data.length
}
}
var body = '';
var req =await http.request(opt, function(res) {
console.log("response: " + res.statusCode);
res.on('data',function(data){
body += data;
}).on('end', function(){
console.log(body)
});
}).on('error', function(e) {
console.log("error: " + e.message);
})
req.end()
callback(body)
}/**/