- 1. mysql模块
- 1.1 mysql模块的作用
- mysql模块是一个第三方模块,专门用来操作MySQL数据库。 可以执行增删改查操作。
- 1.3 查询 --- read
- ==执行查询类型的SQL语句,查询结果(result)是一个数组,每个单元是对象,对象的属性是数据表的字段名==
- 占位符模式:当SQL语句中使用了占位符,则query方法需要使用参数
- 1.4 添加 --- insert
- ==执行添加类型的SQL语句,查询结果(result)是一个对象,该对象中有两个属性需要记住==
- 占位符形式:数据添加时,占位符需要一个对象。 对象的属性是数据表字段名,值是要写入数据表的数据
- 1.5 修改 --- update
- 执行修改类型的SQL语句,查询结果(result)是一个对象,该对象中有 affectedRows 属性
- 占位符模式: 数据修改通常需要两个占位符。 占位符是要修改的数据,对象形式,属性是数据表字段;占位符2是修改条件,通常是主键值
- 1.6 删除 --- delete
- 执行删除类型的SQL语句,查询结果(result)是一个对象,该对象中有 affectedRows 属性
- 2. Node中的模块化
- 2.1 什么是模块化
- 事实上模块化开发最终的目的是将程序划分成一个个小的结构;
- 这个结构中编写属于自己的逻辑代码,有自己的作用域,定义变量名词时不会影响到其他的结构;
- 这个结构可以将自己希望暴露的变量、函数、对象等导出给其结构使用;
- 也可以通过某种方式,导入另外结构中的变量、函数、对象等;
- 上面说提到的结构,就是模块;按照这种结构划分开发程序的过程,就是模块化开发的过程;
- 无论你多么喜欢JavaScript,以及它现在发展的有多好,它都有很多的缺陷:
- 比如JavaScript的面向对象并不能像常规面向对象语言一样使用class;
- 模块化的历史
- 在网页开发的早期,Brendan Eich开发JavaScript仅仅作为一种脚本语言,做一些简单的表单验证或动画实现等,那个时候代码还是很少的:这个时候我们只需要讲JavaScript代码写到<script>标签中即可;并没有必要放到多个文件中来编写;甚至流行:通常来说 JavaScript 程序的长度只有一行。
- 2.2 全局作用域和局部作用域
- 局部作用域(模块的作用域):
- 在一个js文件中定义的属性(变量、常量)和方法,默认都只能在当前js文件中使用
- 案例: 创建index.js、user.js两个模块。 user.js 模块中定义属性和方法,index.js导入user.js模块
- 全局作用域:
- 在node中有一个 global 对象,是 node 的顶级对象,地位相当于浏览器中的 window
- 在js文件中声明的属性和方法如果都挂载到global对象下;当其他js文件导入该模块后,就能使用该模块下的属性和方法了。
- 案例: 创建index.js、user.js两个模块。 user.js 模块中定义属性和方法并挂载到global对象下,index.js导入user.js模块
- 2.3 module.exports 导出属性和方法
- 将变量、对象、函数等挂载到global对象上并不推荐,因为容易造成变量污染。
- 推荐使用 module.exports 导出模块中定义好的变量、对象、方法
- 使用require加载(导入)模块后,就能使用模块中定义好的变量、对象、方法了
- 案例: user.js中定义变量、对象、方法,最后使用 module.exports 导出
- 2.4 封装 db.js 模块
- 核心思想: mysql操作流程是固定的,尤其是前三步。将前三部封装到一个模块,导出链接对象。 链接对象就可以调用query方法执行sql语句,也能执行end方法关闭链接
- 2.5 require函数
- ① 如果require参数是模块名,首先查找系统模块,如果系统模块中没有则查找第三方模块
- 1) 先去当前项目目录下查找 node_modules文件夹。如果有则进入;如果没有则去上层目录查找,还没有则继续向上层目录查找,直到磁盘根目录。如果都没有,则报错
- 2) 进入node_modules,查找模块名对应的文件夹。如果有则进入,没有则报错
- 3) 进入模块文件夹后查找 package.json 文件,进入文件继续查找 main 配置项,该配置项指明了应该加载哪个文件。该文件一般是 index.js
- 4)如果没有package.json文件,或者package.json文件中没有 main 配置项,则加载 index.js 文件
|