• Node学习2-基础知识/HelloWorld/模块调用/global/process


    编辑器使用Visual Studio Code

    在编辑器下方就继承了终端,可以直接看输出,非常好用

    CommondJS规范

    就是一个规范而已

    模块化,因为不可能把代码都放一块,太多了。只需要实现模块化,需要什么模块的代码直接声明和使用。

    Nodejs里面会有很多模块。

    比如上面这个代码,虽然只有一行,但是Nodejs帮我们加了一些东西

    每个文件是一个模块,有自己的作用域

    在模块内部moudle变量代表模块本身

    moudle.exports代表模块对外接口

    exports就是moudle.exports的快捷方式

    require 引用其他模块的规则

    / 绝对路径

    ./相对于当前文件

    没有拓展名的话,会依次尝试js/json/node

    模块的例子

    02_run.js

    console.log('this is a module');
    
    const testVar = 100;
    
    function test(){
        console.log('Hello World');
    }
    
    // 定义向外输出的东西
    module.exports.testVar = testVar;
    module.exports.testFn = test;

    调用模块

    const mod = require('./02_run.js');
    
    //mod.testFn这个是变量名
    //mod.testFn()才是函数调用
    mod.testFn();
    console.log(mod.testVar);

    require特性

    1、第一次会加载(执行该模块所有语句),以后会缓存

    2、循环加载,ArequireB,BrequireA,在Nodejs里面不会死锁。

    它会输出已经执行的部分,没有执行的不会输出(这一步就意味着它不会继续纠结没完成的东西了,所以不会死锁)。

    但是最后都会完全加载完毕(执行到最后一句)。

    所以写代码不要这样写

    调用系统内置模块

    fs:file system

    会提醒你,回调函数所需的参数

    虽然自己也应该记住

    const fs = require('fs');

    //读取自己,神奇吧
    //文件路径
    //回掉函数,也就是读取完之后会处理的操作(事件驱动)
    //箭头函数
    fs.readFile('./fs_run.js',(err,data)=>{
    
        if(err){
            console.log(err);
        }else{
            console.log(data);
    } }); console.log(
    'Hello');

    可以看见,Hello会先输出。

    因为程序根本没有等I待/O,而是直接执行后面的语句。IO完成后再执行回调函数。

    //这样就能转换为字符串了
    data.toString()

    调用第三方模块

    先安装,例如chalk

    文件夹下会多出一个文件夹node_moudles(存放该项目的依赖,以及依赖的依赖)

    chalk也依赖了别的模块

    const chalk = require('chalk');
    
    console.log(chalk.red('Hello World'));
    console.log(chalk.yellow('Hello World'));
    console.log(chalk.green('Hello World'));

    global全局对象

    //在一个模块里面给global添加了成员
    global.test = 100;
    
    //别的文件引用了这个模块之后
    //可以直接
    console.log(test)
    //不需要exportxxx

    process当前执行的进程

    //注意下列的语法
    //从对象里面抽取数据
    const {argv,argv0,execArgv,execPath} = process;
    
    //遍历,箭头表达式
    argv.forEach(element => {
        console.log(element)
    });
    
    console.log(execArgv);
    
    console.log(execPath)

  • 相关阅读:
    sudo配置临时取得root权限
    Linux 前台 和 后台进程 说明
    延迟加载
    事件代理
    字符串方法总结
    javascript
    HTML
    通用样式,如清除浮动
    html脱离文档流事件
    经典容易忽略的行内块
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9284710.html
Copyright © 2020-2023  润新知