zoukankan      html  css  js  c++  java
  • node.js相关

    node


    - node最大的特点是单线程,因此一个只能有一个任务运行,大量采用异步操作。 - 某一个任务的后续操作一般采用回调函数的形式 ``` var callback = function (error, value) { if (error) { return console.log(error); } console.log(value); } ```

    全局对象

    • global:所在的环境,类似浏览器的window的对象
    • process:当前进程,指向Node内置的process模块,允许开发者与当前进程互动
    • console:指向Node内置的console模块,提供命令行环境中的标准输入、标准输出功能。
    • module:模块内部局部变量,所有模块都适用,看做半个全局变量。表示当前模块,module.exports变量表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量

    全局变量

    • _filename:指向当前运行的脚本文件名
    • _dirname:指向当前运行的脚本所在的目录

    全局函数

    • 定时器函数:共有4个,分别是setTimeout(), clearTimeout(), setInterval(), clearInterval()
    • require:用于加载模块

    模块

    核心模块

    • http:提供HTTP服务器功能
    • url:解析URL
    • fs:与文件系统交互
    • querystring:解析URL的查询字符串
    • child_process:新建子进程
    • util:提供一系列实用小工具
    • path:处理文件路径
    • crypto:提供加密和解密功能,基本上是对OpenSSL的包装

    自定义模块

    • module.exports:对外输出模块接口
    • require:引用模块

    .和..的区别##

    • 一个点:定位同一个文件夹下的另一文件
    • 两个点:不同文件夹路径下的文件
    • 没有:直接从根目录下开始

    express框架


    基于nodejs的web开发框架 express框架的核心是对nodejs中http模块的封装。在http模块上加了一个中间层,把http模块生成服务器等代码封装成相应api,直接调用。 ## 中间件 ## 中间件是处理http请求的函数,完成各种任务。一个中间件处理完,再传递给下一个中间件。 ``` function uselessMiddleware(req, res, next) { next(); } ``` 当一个HTTP请求进入服务器,服务器实例会调用第一个中间件(函数),完成后根据设置,决定是否再调用下一个中间件(函数)。 - req:http请求 - res:http回应 - next:传递到下一个中间件(函数)

    express中调用中间件的方法:use

    use是express调用中间件的方法,简单说,先匹配路由(可以直接匹配,也可以模式匹配),然后生成一个http服务器,调用一系列函数(又名中间件),完成一些操作。并且可以顺序调用其他中间件。

    use方法的一些别名

    • all
    • get
    • post
    • put
    • del

    requst对象

    • requst.ip:获得HTTP请求的IP地址
    • requst.file:获取上传的文件
    • request.params.id: 获取url中的id
    • request.body.
    express.get('admin/update/:id',function(req,res){
    	var id=req.params.id;
    

    response对象

    • response.redirect:网址的重定向
    • response.sendFile:用于发送文件
    • response.render:渲染网页
    • response.send:发送字符串

    express设置:set

    指定变量的值

    app.set("views", __dirname + "/views");
    app.set("view engine", "jade");
    

    # MongoDB #
    流行的noSQL数据库,专为nodejs开发。首先说明一下,noSQL可不是“not sql”的意思,而是“not only sql”! 用两种方式组织数据以及数据之间的关系:reference和embedded documents。 ## reference ## ![](http://i.imgur.com/lTxLpF4.png) reference类似于传统数据库模型中的外键,把各个表联系起来。 ## embedded data ## ![](http://i.imgur.com/S5FhTpw.png) 这种方法就是noSQL数据库的独有部分了。它能在单一的一个文档结构存储相互关联的数据,隐形地储存了这些数据之间的关系。这样做的好处是可以一次查询获取所有数据。而传统的查询需要先通过查询username获取userid,然后在表contact和access通过userid查询对应数据。 ## 示例1 ## ### 传统 ### ![](http://i.imgur.com/zfKoYzv.png) 假设要存储用户和用户地址,最简单的方法就是用户建一个表,用户地址建一个表。通过名字查询地址时,先查用户表找到用户id,然后通过用户id在地址表里查询地址。 ### noSQL ### ![](http://i.imgur.com/ZEjlr6V.png) 和传统数据库模型不同,noSQL把用户和地址这种对应关系存在一个文档结构中,只需一次查询即可。 ## 示例2 ## 当数据关系是一对多时? ### 传统 ### ![](http://i.imgur.com/m1gpJlw.png) ### noSQL ### ![](http://i.imgur.com/bwD14lZ.png) 同上分析,假设用户有多个地址,可以采用对象数组的方式存在用户表中,一次查询获得所有地址。 ## 示例3 ## 根据上面的分析来看,是不是noSQL数据库中只需要一个数据表就能存储所有数据了呢?用传统的思维简直没法想象啊。看看下面的例子。 ### noSQL ### ![](http://i.imgur.com/4p84AiD.png) 假设为出版社和图书建表。将出版社直接作为对象加在图书数据表后面。问题是:如果一个出版社出版了多本图书,那么会重复存储多遍出版社的信息,资源浪费。 此时,就可以为出版社也建立一个文档结构,用"reference"联系图书和出版社,如下: ### reference模式 ### ![](http://i.imgur.com/j26ekXQ.png) 其实还有一个问题,让图书号是出版社的reference,还是出版社是图书的reference? 这要看哪种方式存储的数据量小。如果一个出版社出版的图书数量众多,与其在出版社表里添加图书id,还不如在图书表里添加出版社id。反之亦然。
    # MongoDB和nodejs的中间件:mongoose #

    后续补充。。。

  • 相关阅读:
    售后返修管理软件流程设计图
    Easyui datagrid加载数据时默认全选的问题
    如何做好售后管理之售后返修品管理
    您需要售后返修管理软件的N个理由
    使用软件量化考核售后维修人员业绩?
    如何使用NET Reactor为您的.Net(C#,VB.Net) 源代码加密!
    VS.Net开发必备,让您的代码自动收缩,如何实现!
    vs生成dll,却没有生成相应的lib
    c++、webServices、gsoap、tinyxml、iconv
    gsoap、c++。webservice的client。
  • 原文地址:https://www.cnblogs.com/smoothLily/p/4231772.html
Copyright © 2011-2022 走看看