Node.js模块化思想和npm相关用法、let和var定义变量的区别,nodemon模块,配置镜像源下载

142 阅读4分钟

同步和异步

JS是单线程,通过异步可以实现同时执行多个任务,但不是真正的同时执行。
执行策略:
  • 看到同步代码,就直接执行
  • 看到异步代码,放到一个队列中
  • 所有的同步代码执行完毕后,再从异步队列中执行异步任务
注意:

常见的异步任务有:ajax 请求、setTimeout、setInterval、node api 中的异步方法(例:writeFile,readFile)....

模块化

常见作用:

在一个js文件中引入另一个js文件或解决引用不明确的问题

模块化思想:

编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块

模块化规范

在实际的发展中,js模块化大体有如下几种规范

  • AMD
  • CMD
  • CommonJS
  • ES6 模块化-官网标准,正规军

node.js中默认使用的就是commonjs模块化规范

如何模块化开发?
  • Node.js规定一个JavaScript文件就是一个模块,每一个模块都是一个单独的作用域,模块内部定义的变量和函数默认情况下在外部无法得到
  • 模块内部可以使用exports对象进行成员导出,使用require方法导入其他模块
引入其他模块的步骤:
  1. require('xx'),require引入模块并赋值给一个变量,方便使用该模块的变量或函数,若是自定义模块需写路径,可以省略后缀名

  2. 在需要引入的模块中,导出想要使用的变量,exports.属性名称=变量名(属性名称随便起);

    还有module.exports.属性名称也可以用来导出变量(且可以同时导出多个,减少代码)

    let name='lxy'
    let age=18
    let address='深圳'  
    ​
    function sayHello(){
        console.log('hello')
    }
    ​
    module.exports={
        name:name,
        age:age,
        address:address,
        sayHello:sayHello
    }
    推荐方式
    注意:如果对象中的属性名称,与变量名称一致,可以使用属性的简写方式,上面改写如下:
    module.exports={
        name,
        age,
        address,
        sayHello
    }
    注意点2:若直接使用exports
    exports={
        name,
        age,
        address,
        sayHello
    }
    // 则导出的对象为空对象
    ​
    
    • 处理函数方法

      function sayHello(){
          console.log('hello')
      }
      exports.sayHello=sayHello
      
    • 简洁写法

      省略一个变量的写法,直接将值赋值给属性,可以省略定义变量和函数的步骤

      exports.gender='男'
      exports.goodBy=function(){
          console.log('byby')
      }
      
  3. 调用引入模块的变量或函数(利用属性名称/函数名调用)

    var a_module=require('./a')   //引入自定义模块需要写路径
    console.log(a_module)  //对象类型
    console.log(a_module.age) //引用变量
    a_module.sayHello() //引用函数
    

let

let和var的区别
  • var 声明的都是全局变量
  • let 可以声明块级作用域变量
注意:
  • let 在 for循环、while{ }循环、花括号中声明的变量就是块级(局部变量),且函数内部声明的也是局部变量
  • 若直接在最外面声明的变量,不论是let声明的,还是var声明的,都是全局变量
  • 建议声明变量尽量使用 let

第三方模块

npm(安装"包"工具)

安装/卸载某个包

npm install 包名

npm uninstall 包名

注意:
  • 使用npm安装的模块,直接引用,不用加路径
  • 下载安装好一个模块后,会自动在当前路径中加一个node_modules文件夹,安装好的包就在下面;并且还有两个js文件(package-lock.json和package.json)且这两个文件和node_modules文件夹同级
  • 默认本地安装(只能在当前项目用)
  • npm install 可以简写为 npm i
全局安装/卸载

npm install [包名] -g

npm uninstall [包名] -g

注意:
  • 全局安装的默认目录是:C:\Users\用户名\AppData\Roaming\npm\node_modules
  • 安装全局后就所有项目都可以使用该模块了
nodemon模块(自动化运行)
安装:npm i nodemon -g
注意:
  • 则之后打开要运行的文件就变为:nodemon .\nodemon自动化测试.js
  • 若该文件改动后,保存之后,则该文件就会自动运行了
http-server模块(打开网页)
简介:
  • nodejs中的http模块中封装了一个HTPP服务器和一个简易的HTTP客户端,http.Server是一个基于事件的http服务器,http.request则是一个http客户端工具,用于向http服务器发起请求
用法:
  • 在对应的网页路径中,shift+右击,打开powershell,看到的一些网址
  • 打开网址对应的即使网页的内容
安装慢的问题
默认下载的网址在国外: jquery - npm (npmjs.com)

配置国内镜像(推荐法):

  1. 先安装 nrm 模块

    nrm是一个npm源管理器,npm源管理器,意思就是说npm包来源的网址,对它进行管理

  2. nrm ls

    查看源地址

  3. 设置新的下载源地址

    nrm use taobao(淘宝的地址)

    提示: Registry has been set to: registry.npmmirror.com/这句话即为成功了!

  4. 则之后使用 npm install [xxx],就不是使用默认的国外的地址了,而是按你设置的淘宝的源地址了,提升速度

\