zoukankan      html  css  js  c++  java
  • nodejs学习笔记-第一课

    什么是Node.js

    简单来说是运行在服务器端的javascript。
    

    Node.js的特点

    基于 Chrome V8 引擎的 JavaScript 运行环境。

    Js的运行是依赖于Js引擎的,而所谓的Js引擎就是Js的虚拟机,这个虚拟机被附带在网页浏览器中,而Chrome V8引擎就是一款Js引擎。
    

    异步非阻塞式 I/O 的模型

    首先理解非阻塞式之前,我们了解一下什么是阻塞式的。在程序执行的过程中会涉及到很多的IO操作,读写操作等等,其中IO操作是最花费时间的。比如我要调用IO操作的时候,其他的程序就必须停下来等IO操作执行完成才可以。这样的执行过程无疑耽误了其他的程序执行。所以Nodejs的异步非阻塞式IO模型就避免了这个问题。
    

    创建一个简单的Node.js应用

    在创建以前我们来宏观的了解一下Node.js的创建的组成部分。
    
    1. 引入一个required模块:使用required指令来引入Node.js模块
    2. 创建服务器:创建一个Http服务器
    3. 接收请求与响应。

       下面我们用一个实际的列子来讲解
      
    var http_first = require('http');
    
    http_first.createServer(function (request, response) {
    
        // 发送 HTTP 头部 
        // HTTP 状态值: 200 : OK
        // 内容类型: text/plain
        response.writeHead(200, {'Content-Type': 'text/plain'});
    
        // 发送响应数据 "Hello World"
        response.end('Hello World
    ');
    }).listen(8888);
    
    console.log('服务器运行在 http://127.0.0.1:8888/');
    关于response.wirteHead():其中200是响应码([Http的响应码详解](http://blog.sina.com.cn/s/blog_4ae187490100x9u7.html))。
    关于content-type:[content-type](http://blog.csdn.net/junhuahouse/article/details/23040563)表示用什么编码的和类型。
    关于:text/plain:表示无编码格式正文。对比text/html:表示html编码格式。
    关于reponse.end:表是服务器停止工作,并返回当前结果。
    listen:表示监听某个端口。
    

    关于NPM

    什么是npm

    Node Package Manager(包管理工具),它的作用类似github,用户可以直接在命令行通过npm分享,下载,上传代码,管理你的包,代码等。而Node.js的安装包中自带了npm,也就是说安装好node.js就可以直接使用npm了。
    当然npm还有许多的其他功能,大家可以自己去百度。
    

    什么是commonjs

    commonjs并不是一种框架(像jquery),而是js的一种代码规范,这是由于js的历史原因导致的,commonjs的出现,使得在大规模编码或者协同作业的时候可以避免代码污染等问题。
    

    nodejs的模块

    nodejs中模块就是文件,模块可以使js文件,json文件等等(这就是代码模块化)。
    nodejs的模块分为核心模块,文件模块和第三方模块。
    

    模块的引用方式

    1. 路径引用
    2. 模块名引用

      下面的实例是通过路径来引用模块
      创建main.js和hi.js

      在main.js中

    //通过require获取一个模块,模块就是一个文件,获取的方式就是当前路径
    var hi = require('./hi');
    //用hi调用boy()方法
    hi.boy();
    在hi.js中
    
    //所谓的创建模块就是创建一个文件
    //exports表示提供公共的一个接口,类似java中的public
    exports.boy = function(){
        console.log('你好哟!');
    }
    在控制台输出"你好哟!"
    

    我们可以总结出一个简单的模块流程

    1. 创建模块:创建文件(比如创建一个new.js的文件)
    2. 导出模块:exports.youfunction = function(){}
    3. 加载模块:var getModule = require(./new.js);
    4. 使用模块:getModule.aMathod();

    在回顾上面的代码,其中exports.boy可以替换成module.exports
    在main.js中

    //通过require获取一个模块,模块就是一个文件,获取的方式就是当前路径
    var hi = require('./hi');
    //这个使用boy就不是函数了,而是一个对象
    hi = new hi();
    hi.boy;

    在hi.js中

    function boy(){
        console.log('你好哟!');
    }
    
    module.exports = boy;

    那么module.exports和exports的区别是什么呢?
    在每一个nodejs的模块被创建的时候,都会自动创建一个module.exports = {}的空对象,而exports是对module.exports的引用,而require返回的是module.exprots的引用。

  • 相关阅读:
    css基础面试题
    hack-checkbox
    装饰性属性
    【CF809E】Surprise me!
    [SCOI2012]奇怪的游戏
    [HAOI2018]奇怪的背包
    CF1139D Steps to One
    [CTSC2018]假面
    写在省选前
    [SDOI2015]寻宝游戏
  • 原文地址:https://www.cnblogs.com/comefuture/p/8305936.html
Copyright © 2011-2022 走看看