node的模块
node的模块化
const moduleA = require("./moduleA");
const moduleB = require("./moduleB");
// console.log(moduleA);
// // console.log(name);
// console.log(moduleA.age);
// moduleA.jump();
// moduleA.sayHi();
console.log(moduleB);
moduleB();
// nodejs每一个js文件都是一个独立的作用域
// 在这个作用内部写的一些变量或者方法 外部肯定不到
// 使用一个固定的语法来暴露出想要外界访问的接口
// 暴露的接口是固定的 module.exports = {} 里面暴露的是什么 外部就访问到什么
// 什么是面向对象?
// 面向对象 的前提是首先得有一个对象
// 我们需要的数据和方法都设置到对象里面去 使用的对象的方式统一管理
// 在后续使用的时候 我们直接照这个对象就可以
// 对于对象来说 继承的方式就是prototype
// common.js 一套标准
// 只是在模块的使用上面会起作用 模块导入必须使用require 模块暴露接口 必须使用module.exports
模块的缓存
var module1 = require("./moduleA");
var module2 = require("./moduleA");
console.log(module1 === module2); // true说明多次导入的情况下 在服务器内部是有缓存
缓存的好处 : 不用每次导入都重新导 避免浪费内存
抽取mysql模块并操作数据库
// 导入mysql模块
var mysql = require('mysql');
// 创建数据库连接对象 配置相关的信息
var connection = mysql.createConnection({
host : 'localhost', //主机名
user : 'root', // 用户名
password : 'root', // 密码
database : 'test' // 数据库名
});
// 创建数据库连接 可以省略
// connection.connect();
// 修改数据
// connection.query('update students set name="王小二", score=100 where id=2', (error, results, fields) => {
// if (error) throw error;
// console.log(results);
// });
module.exports = (sql, callback) => {
connection.query(sql, (error, results, fields) => {
if (error) throw error;
console.log(results);
callback(results);
});
}
// 关闭数据库连接 可以省略 但是如果写的话 不可以直接写在最后 因为暴露出去的接口方法是异步的 不能先关闭数据库
// connection.end();
// 导入抽取的mysql模块
const query = require("./03-抽取mysql模块");
console.log(query);
query('update students set name="王小", score=100 where id=2', results => {
console.log(results);
})
query('select * from students', results => {
console.log(results);
})