Node知识点笔记

Node安装:下载对应系统的版本安装

https://nodejs.org/en/download

Node详细教程:点此查看

Node中文文档:http://nodejs.cn/api/

Npm文档:https://www.npmjs.com/

Mongoo文档:https://mongoosejs.com/

Express文档:http://www.expressjs.com.cn/

 

1.node的特点:

1)它是一个Javascript运行环境
2)依赖于Chrome V8引擎进行代码解释
3)事件驱动
4)非阻塞I/O
5)轻量、可伸缩,适于实时数据交互应用
6)单进程,单线程

 

2.Exports和Module.exports区别

module.exports是真实存在的东西。exports只是module.exports的引用,
你的模块最终返回module.exports给调用者,而不是exports

let exports = module.exports;
function fn() {
console.log(‘123’);
}

console.log(arguments.callee.toString());
return module.exports;
}

 

3.express的优缺点

Express 的优点是线性逻辑:路由和中间件完美融合,通过中间件形式把业务逻辑细分,简化,一个请求进来经过一系列中间件处理后再响应给用户,再复杂的业务也是线性了,清晰明了。
Express 是基于 callback 来组合业务逻辑。Callback 有两大硬伤,一是不可组合,二是异常不可捕获。

 

4.什么是中间键,常见的中间键

Express是一个自身功能极简,完全是路由和中间件构成一个web开发框架:从本质上来说,一个Express应用就是在调用各种中间件。封装了一些或许复杂但肯定是通用的功能, 非内置的中间件需要通过安装后,require到文件就可以运行。
第三方中间件:
cookie-parser:解析cookie
ejs:ejs模板
express-session:解析session
http-errors:错误中间件处理
Moment:日期时间处理
Morgan:日志打印
Multer:文件上传
Nodemon:热更新
config-lite: 读取配置文件

 

5.什么是同步与异步

同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作。

异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容。

 

6.分页功能前后端是如何交互的

分页功能, 前后端都可以做, 如果是前端做分页的话, 根据翻的页码数, 截取后台返回的全部数据, 进行分段展示
如果是前后端配合做, 则需要传递当前页码数给后台, 后台会返回对应页码的数据

 

7.将npm服务器切到国内淘宝服务器(镜像服务器):

npm config set registry https://registry.npm.taobao.org –global
npm config set disturl https://npm.taobao.org/dist –global

 

 

8.常用的npm命令

npm -v 查看npm的版本
npm version 查看所有模块的版本
npm init 初始化项目(创建package.json)
创建package.json文件作用:记录我们当前node项目中依赖哪些第三方的包,当我们把node项目
发给别人或发布时,就可以删除node项目中已安装的第三包文件。
npm i/install 包名 安装指定的包 @版本号,不加版本默认为最新
npm i/install 包名 –save 安装指定的包并添加依赖
–save的功能:之前旧的npm命令如果不带–save参数,则在.json文件中不产生依赖项(dependencies)
npm i/install 包名 -g 全局安装(一般都是一些工具)
npm i/install 安装当前项目所依赖的包
npm s/search 包名 搜索包
npm r/remove 包名 删除一个包
npm uninstall 包名 删除

 

 

9.封装的一个mongoo数据库增删查改类

//引入mongoose
let mongoose = require('mongoose');



//***注意:通过mongoose操作mongodb数据库时,mongoose会自动对
//         表名加s或es
//定义通过mongoose操作mongodb数据库的类
class Mongooses {

    constructor(host, dbname, port) {
        this.tableModel = {}; //存放创建的表Model模型
        this.model = {}; //当前表的Model模型
        mongoose.connect(`mongodb://${host}:${port}/${dbname}`, { useUnifiedTopology: true, useNewUrlParser: true });
        //获取所有表定义及数据约束
        this.table = require('./tables.json');
    }

    //类中放属性及方法

    //定义Schema及创建Model模型
    getModels(tname) {
        this.model = this.tableModel[tname];
        if (!this.model) { // 当前表的Model不存在
            //创建Schema
            let schema = new mongoose.Schema(this.table[tname]);

            // console.log('testing...');
            //根据Schema创建Model模型
            this.model = mongoose.model(tname, schema);
            //将已创建的Model存放this.tableModel
            this.tableModel[tname] = this.model;
        }
    }

    //添加数据
    /**
     * 
     * @param String tables  表名
     * @param Object fields  要添加的数据
     * @param Function callback  回调函数
     */
    add(tables, fields, callback) {
        this.getModels(tables);
        this.model.create(fields, (err) => {
            callback(err);
        });
    }

    //查询数据
    /**
     * 
     * @param String tname  表名
     * @param Object cond   查询条件
     * @param Object fields   要显示的属性
     * @param Object sortlimit   选项:可以使用limit、skip、sort
     * @param Function callback  回调函数
     */
    search(tname, cond, fields, sortlimit, callback) {
        this.getModels(tname); //创建当前表的Model模型

        this.model.find(cond, fields, sortlimit, (err, data) => {
            callback(err, data)
        });
    }

    //根据条件查询数量
    searchCount(tname, cond, callback) {
        this.getModels(tname); //创建当前表的Model模型
        this.model.countDocuments(cond, (err, num) => {
            callback(err, num);
        });
    }

    //修改数据
    /**
     * 
     * @param String tname 表名
     * @param Object cond  条件
     * @param Object fields  修改后的对象
     * @param Function callback 回调函数
     */
    modify(tname, cond, fields, callback) {
        this.getModels(tname);
        this.model.update(cond, fields, { multi: true }, (err, data) => {
            callback(err, data);
        });
    }

    //删除数据
    del(tname, cond, callback) {
        this.getModels(tname);
        this.model.remove(cond, (err) => {
            callback(err);
        })
    }

}
// 暴露模块给其他地方使用
module.exports = new Mongooses("localhost", "baofeng", 27017);

 

 

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片