Node.js
知识点
- 模块系统
- 核心模块
- 第三方模块
- 自己写的模块
- npm
- package.json
- Express
- 第三方Web开发框架
- 高度封装了http模块
- 更加专注于业务,而非底层细节
- 知其所以然
- 增删改查
- 使用文件来保存数据(锻炼异步编码)
- MongoDB
- 所有方法都封装好了
软件开发版本介绍
x(新增功能比较多,甚至可能去除了某些功能).x(加入了新功能).x(修复bug,提升性能)
第三方模块
- 凡是第三方模块都必须通过npm来下载
- 使用的时候可以通过require('包名')的方式来进行加载才可以使用
- 不可能有任何一个第三方包和核心模块名字是一样的
- 既不是核心模块、也不是路径形式的模块
- 先找到当前文件所处目录的node_modules目录
- node_modules/art-template
- node_modules/art-template/package.json文件
- node_modules/art-template/package.json文件中的main属性
- main属性中就记录了art-template的入口模块,然后加载使用这个第三方包,实际上最终加载的还是文件
- 如果package.json文件不存在或者main指定的入口模块是也没有则node会自动找该目录下的index.js,也就是说,index.js会作为一个默认备选项
- 如果以上所有条件都不成立,则会进入上一级目录中的node_modules目录查找,如果上一级还是没有,则继续往上上级查找,以此类推,如果直到当前磁盘根目录还找不到,则报错。
- 注意:一个项目有且只有一个node_modules,放在项目根目录中,这样的话项目中所有的子目录都可以加载到
模块查找机制
- 优先从缓存加载
- 核心模块
- 路径形式的文件模块
- 第三方模块
package.json
建议每个项目都要有一个package.json文件(包描述文件,就像产品说明书一样)
这个文件可能通过npm init 的方式来创建
通过npm安装jquery,并在package.json中添加dependencies信息
npm install jquery --save
如果已经存在package.json文件,并且node_modules删除了,使用npm install
就会自动把package.json中的dependencies中的所有依赖项下载回来。
npm
node package manager
查看版本
1
npm --version
升级npm
1
npm install --global npm
常用命令
- npm init
- npm init -y 可以跳过向导,快速生成
- npm install(npm i)
- 将dependencies中所有依赖项全部安装
- npm install 包名(npm i 包名)
- 仅下载
- npm install --save 包名(npm i -S 包名)
- 下载并保存依赖项(package.json文件中)
- npm uninstall 包名(npm un 包名)
- 只删除,如果有依赖项会依然保存
- npm unstall --save 包名(npm un -S 包名)
- 删除同时,依赖项信息也删除
- npm --help
- 查看使用帮助
- npm 命令 --help
- 查看指定命令的使用帮助
Express
安装
1 | npm i express --save |
代码基本结构
1 | var express = require('express') |
实现热更新
使用一个第三方工具nodemon实现,nodemon是一个基于node.js开发的一个第三方命令行工具,我们使用的时候需要独立安装:
1 | npm install nodemon -G |
安装完后,使用nodemon启动:
1 | nodemon app.js |
只要通过nodemon app.js启动服务,则它会监视文件变化,当文件发生变化时,会自动重启服务器
静态服务
1 | // 使用静态资源 |
Express中使用art-template
安装
1 | npm install art-template --save |
配置
1 | // 配置使用art-template模板引擎 |
使用
1 | app.get('/',function(req,res){ |
在Express中获取表单POST请求数据
在express中没有内置获取表单POST请求体的API,这里需要使用第三方包:body-parser
安装
1 | npm install body-parser --save |
配置
1 | // 引包 |
获取数据
1 | app.post('/post',function(req,res){ |