zoukankan      html  css  js  c++  java
  • NodeJs学习笔记一

    教程参考

    • 进入命令交互模式
    //立即执行
    $ node
    > console.log('hello world!');
    hello world!
    
    //执行js文件
    //hellow.js内容
    function hello (){
        console.log('hello world!');
    }
    hello();
    
    //键入node hello.js
    $ node hello.js
    hello world!
    
    
    • 模块
      • require方法:用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象。模块名可使用相对路径(以./开头),或者是绝对路径(以/或C:之类的盘符开头)。另外,模块名中的.js扩展名可以省略。
      • exports对象:是当前模块的导出对象,用于导出模块公有方法和属性。别的模块通过require函数使用当前模块时得到的就是当前模块的exports对象。
      • module对象:通过module对象可以访问到当前模块的一些相关信息,但最多的用途是替换当前模块的导出对象。
      • 主模块的概念:通过命令行参数传递给NodeJS以启动程序的模块被称为主模块。主模块负责调度组成整个程序的其它模块完成工作。
    //1. require
    var foo1 = require('./foo');
    var foo2 = require('./foo.js');
    var foo3 = require('/home/user/foo');
    var foo4 = require('/home/user/foo.js');
    

    我的案例中,test.js导出一个hello方法,然后在test2.js中通过require方法获得。开始测试exports对象和module对象执行结果的不同。

    //2. exports对象
    
    //导出一个方法
    exprots.hello = function() {
        console.log('hello world');
    }
    

    exports导出的是一个对象,这个对象有一个hello的方法:

    image

    //3. module对象
    module.exports = function() {
        console.log('hello world');
    }
    

    通过module对象,test.js文件导出的从一个普通对象变成了fucntion:

    image

    //4. 主模块和子模块的私有变量
    //test.js
    var counter = 1;
    function count(){
        return counter ++;
    }
    
    exports.count = count;
    
    //test2.js
    var count1 = require('./test');
    var count2 = require('./test');
    console.log(count1.count());
    console.log(count2.count());
    console.log(count2.count());
    

    执行结果:

    image

    结论是:私有变量不会因为require次数而被初始化多次。

    • 二进制模块:NodeJS也支持使用C/C++编写二进制模块。编译好的二进制模块除了文件扩展名是.node外,和JS模块的使用方式相同。

    入门篇回顾

    1. NodeJS是一个JS脚本解析器,任何操作系统下安装NodeJS本质上做的事情都是把NodeJS执行程序复制到一个目录,然后保证这个目录在系统PATH环境变量下,以便终端下可以使用node命令。
    2. 终端下直接输入node命令可进入命令交互模式,很适合用来测试一些JS代码片段,比如正则表达式。
    3. NodeJS使用CMD模块系统,主模块作为程序入口点,所有模块在执行过程中只初始化一次。
    4. 除非JS模块不能满足需求,否则不要轻易使用二进制模块,否则你的用户会叫苦连天。
  • 相关阅读:
    jquery获取input的checked属性
    归并排序法
    Pascal's Triangle II —LeetCode
    01背包之求第K优解——Bone Collector II
    Intellij IDEA 14隐藏被排除的文件夹
    LeetCode——Majority Element
    多线程爬虫Java调用wget下载文件,独立线程读取输出缓冲区
    LeetCode——Restore IP Addresses
    LeetCode——Pascal's Triangle
    LeetCode——Permutations
  • 原文地址:https://www.cnblogs.com/foxNike/p/6337218.html
Copyright © 2011-2022 走看看