nodeJS的知识点

  • 模块化:
    • 系统模块:http,url,fs。
    • assert:断言测试
    • buffer:二进制数据
    • c/c++addons:
    • child processes:子进程
    • Crypto:加密(MD5,sha256)
    • dns:域名解析
    • domain:舍弃
    • errors:各类错误提示
    • events:事件
    • globals:
    • net:各类各样的网络操做
    • OS:跟操做系统的信息
    • Path:处理文件路径
    • Stream:流操做
    • Timers:定时器
    • util:工具类
    • vm:虚拟机
    • zlib:压缩操做
nodeJS的模块不少,也很实用。咱们会慢慢介绍
  • 模块组成:
    • 模块的引入:
    • [x] require:请求;引入模块的;在nodeJS中使用这个,对于自定义的模块引入的时候须要加上./的标志。由于这个能够告诉它这个是nodeJS本身的系统模块,仍是你本身写的。若是本身写的模块不想写./,那就把本身的模块加入到node_modules文件夹。require通常先从系统模块找,找不到再去node_modules去找。
    • [x] module:模块。若是对外输出大量的东西和变量。module.exports={};通俗的说就是批量输出的。
    • [x] exports:输出;对外想输出东西加上exports这个变量。例如:exports.a=12;单个输出
    • [x] module.exports == exports是成立的。
    • nodeJS中全部的文件都是.js结尾的,因此引入的时候,能够省略js。
  • npm的讲解:
nodeJS包管理器。好处:1.统一的下载路径(相似软件管家的平台);2.自动下载依赖;3.若是速度太慢,能够安装淘宝镜像。
  • 下载:npm install xxx(下载某一项需求);
  • 卸载:npm uninstall xxx(卸载某一项);
  • 登陆帐号: npm login,输入名字和密码
  • 提交模块的流程:首先npm init:初始化包的信息package.json;写完本身的模块后,而后发布:npm publish;每次发布的时候更新本身的版本号。更新:npm update;删除本身的模块:npm -force unpublish;
    -express框架:(安装,配置,接受请求,响应) express保留了原生的功能.添加了一些方法。加强原有的功能。
安装:npm install express;你们能够看看官网的API;下载完后,引入express模块;const express =require(“express”);
  1. var server = express();建立服务并设置监听接口;server.listen();
  2. server.use(“url”,function(req,res){处理页面的地址
    res.send();
    });经过use来处理用户的处理。req和res中的参数是通过express处理过的(加强版)。send功能改进了。
  3. express中有get,post,use.三种方法。use属于通吃,get和post均可以。
  4. express中有不少实用的插件,所谓的中间件。由于有丰富的插件,因此使用者比较多。
  5. 安装express的static的中间件。方便获取静态资源。
    6.数据的获取:get和post数据如何获取: express中有req.query获取到get传过来的信息,不须要任何中间件。
  6. 对于express中post数据,咱们是从req.body中获得。须要中间件来辅助获取。
  7. express中的链式操做:须要在回调函数中,声明next,告诉它,我须要链式操做。
  8. next表明下一个步骤。把选择权交给了使用者。javascript

  9. 在链式操做中next声明后,数据中的req的数据是能够传递的.html

  10. 固然咱们也能够本身去写中间件,用原生的知识去书写本身的中间件。
  11. cookie和session的使用:cookie存在浏览器端(客户端)
    • 为何要使用这些。http协议传输是无状态的.
    • cookie在浏览器保存一些数据。每次请求都会带过来。不太安全,空间有限(4k).cookie空间很是小,要省着用.
    • 第一次访问服务器,cookie是空的。服务器会给浏览器种植一个cookie。
    • cookie中会有一个session的ID.服务器就是利用sessionid找到session文件读取,写入。
    • 存在session劫持。
    • 发送cookie。res.cookie(填写对应的信息),其中的singed:tue表明签名;例如:path路径,maxAge:毫秒数.
    • cookie加密:咱们须要cookie-parser这个中间件,cookieParser(‘签名字符串’);
    • 读取cookie,咱们须要cookie-parser这个中间件;
    • req.cookies:未签名的cookie;req.signedCookies 签名版的cookie读取
    • 删除cookie,res.clearCookie(名字);就能够删除本身想删除的cookie.
    • cookie-encrypter:加密cookie的中间件.
  12. session:保存数据,保存在服务器端。相对安全,空间无限。是基于cookie实现的.经过cookie-session中间件使用.
    • 写入:req.session;使用keys。session也有签名.也有有效期.
    • 删除:delete res.session[“名字”];
  13. post数据不只仅是数据,也多是文件上传,这里咱们介绍form中的enctype中的三种传输。

    enctype="application/x-www-form-urlencoded";//上传值 中间件:body-parser 数据在req.body中
    enctype="multipart/form-data"; //分隔为多个部分 中间件:multer 数据在req.files中
    enctype="text/plain"; //通常用途很少,纯文本
    body-parser:解析post数据
    multer:解析post文件(先生成一个对象,而后能够指定上传文件的路径,上传文件的类型)
  14. fs模块有重命名的功能,fs.rename(“原始文件名”,”新的文件名”,function(err){
    代码块
    });
  15. path模块的使用,里面有不少参数:root, dir,name,base等等。能够从中获取咱们想要的信息。
  16. 中间件的consolidate,功能:统一模板引擎的识别.整合大部分的模板引擎。下载并引入就可使用.java

    引入:
    const consolidate = require("consolidate");
    配置和使用:
    -1 输出什么东西
    server.set("view engine","html");
    -2 模板文件在哪里
    server.set("view","./views");//模板文件目录
    -3 咱们使用什么模板引擎
    server.engine("html",consolidate.ejs);
  17. router(路由的使用):把大型的网站拆分为一个一个的模块,把不一样的目录,对应到不一样的模块。一个字就是:拆。
  18. Router的使用:express.Router();把router加入到服务器中。
  19. 网站的数据放在哪里呢?通常放在数据库.数据库的种类比较多。好比:MySQL(免费,中小网站首选。性能不错),Oracle(金融,大公司的大型应用,收费。性能很不错),SQL,Access(忽略,太差),db2等等。
  20. 文件型的:sqlite,mongodb等。
  21. 接下来咱们开始学习MySQL.分为Sever端 Client端
  22. Navicat来管理数据库的。
  23. 数据库的基本概念:两种单位:库(文件夹)用来管理的。自己没法存数据;表:(文件),存数据的。
  24. 表:长得很像Excel。分为行和列;行:一条数据;列(字段,区域):一个数据项。
  25. 主键:惟一,性能高。惟一识别符。
  26. nodeJS是不支持MySQL.那么咱们须要借助模块。npm install mysql
  27. 而后 const mysql =require(‘mysql’);
  28. 而后咱们链接:var db = mysql.createConnetion({host:”哪台服务器”,user:”用户名”,password:”密码”,database:”库”});
  29. 而后:查询.node

    db.query(SQL语句,function(err,data){})   //query(干啥,回调)
  30. SQL:四大查询语句:增删改查.标准写法:关键字大写;库,表,字段须要加上“.mysql

    增:instert
    INSERT INTO 表(字段列表) VALUES(值列表) 删:DELETE 改:uodate 查:SELECT SELECT 什么 FROM
  31. 待续….