【nodejs】模块

链接: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)
}/**/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值