Node.js初使用

一、Node,js简介

在 Node.js 之前,JavaScript 只能运行在浏览器中,作为网页脚本使用,为网页添加一些特效,或者和服务器进行通信。有了 Node.js 以后,JavaScript 就可以脱离浏览器,像其它编程语言一样直接在计算机上使用,想干什么就干什么,再也不受浏览器的限制了。

Node.js 不是一门新的编程语言,也不是一个 JavaScript 框架,它是一套 JavaScript 运行环境,用来支持 JavaScript 代码的执行。用编程术语来讲,Node.js 是一个 JavaScript 运行时(Runtime)。

JavaScript作为一门编程语言的要素,包括基本类型和变量、函数和对象等,都与其他编程语言无异。

JavaScript的最大缺陷在于它是专门为了在浏览器中运行而设计的,在设计之初没有考虑到和I/0设备交互的情形。  

为了让JavaScript能够直接在本地机器上运行并利用所有资源,Node对JavaScript做了大量拓展。

包括模块系统、文件系统、流处理以及多进程支持。

【I/0设备】

I-Input-输入/0-0utput-输出  

I/0设备-输入输出设备-是数据处理系统的关键外部设备之一,可以和计算机本体进行交互使用。  

如:键盘、写字板、麦克风、音响、显示器

二、Node.js使用

    使用js文件,去执行NodeJS代码(掌握):

1.在代码文件夹中,【新建js文件】(不要新建成html),里面写任意js代码。

2.来到代码文件夹,在上面的路径处输入【cmd】,就弹出了小黑窗。

3.输入【node 文件名】,就能执行代码。// node 文件名

技巧:

node -v:查看node下载版本.

文件名太长,可以输入一半,按tab键补足。 按方向键↑,可以切换到上一条敲过的命令。

    运行node,直接在终端写代码(了解):    

这种方式是不需要JS文件的,在任意小黑窗输入node,就进入node执行环境.

这时任意写JS代码都可.

三、模块(Module)

1、概念

    [模块化的概念]  

模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。 

必要性:

JS发展初期,使用寥寥数语实现简单的页面交互逻辑即可  

随着大前端时代的到来,前端代码日益膨胀,此时在JS方面就会考虑使用模块化规范去管理  

概念:

把一个大的程序拆分成相互依赖的n个小文件

这些小文件还可以通过特定的语法组合到一起    

这个过程称之为模块化  

优点:

避免命名冲突(减少命名空间污染)    ;更好的分离,按需加载  ;更高复用性  ;高可维护性  

缺点:

没有缺点    ; 需要学习模块化语法  

2、规范

    [前端模块化规范]  

    AMD(Asynchronous Module Definition):异步模块定义规范。  

专门用于浏览器端,模块的加载是异步的。

AMD主要通过require.js实现模块化。(通过define方法,将代码定义成模块;通过require方法,实现代码的模块加载。)// 目前用的很少,很少,了解即可。

在require.js中,使用require.js提供的函数require()来应用一个模块

require(['模块文件的路径(不带.js后缀)',function(){
//模块加载成功之后的回调函数
 }])

    CMD(Common Module Definition):公共模块定义规范。

CMD是另一种JS模块化方案,它与AMD很类似。

不同点在于:AMD推崇依赖前置、提前执行:CMD推崇依赖就近,延迟执行。//CMD主要通过sea.js实现此规范。// 目前看到的很少,很少,了解即可。

使用define函数,传入的一般是一个函数,这个函数接受三个参数,分别是require、exports、module。

define(function(require,exports,module){
    const a = require('a')//同步导入
    const b = require.async('b',function(b){
    console.log(b);}) //异步导入
})

CommomJS

Node.js是CommonJS的主要实践者,Node.js中内置CommonJS。

接下来我们学习的模块化语法,就是Common.js。

[概述]

每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。

在服务器端,模块的加载是运行时同步加载的。在浏览器端,模块需要提前编译打包处理。

[特点]

所有的代码都运行在模块作用域,不会污染全局作用域。

模块可以多次加载,但是只会在第一次加载是运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。

模块加载的顺序,按照其在代码中出现的顺序。

[语法]

暴露模块

module exports = value

exports xxx = value

引入模块

require(xxx)

在第三方模块中,xxx为模块名。在自定义模块中,xxx为模块文件路径。

 ESM(常用,JS官方语法,vue中使用):ES6 Module    

ES6在语言标准的层面上,实现了模块功能,逐渐会成为浏览器和服务器通用的模块解决方案。

导出模块: export

引入模块:import

3、分类

Node.js中的模块主要有3个分类:

自定义模块// 自己写的模块

NodeJS中,创建的JS文件都是自定义模块。(万物皆模块)

内置模块(核心模块)

安装Node之后,自带了很多内置模块,我们可以直接加载使用他们。

第三方模块

其他人编写的模块,发布到npm网站上,我们可以下载使用.

4、代码演示

const name = '张三'
const sex = '男'
const age = 18

function rge(look) {
    console.log('看'+ look);
}
//暴露模块
//module.exports = 暴露的数据(一般暴露一个对象)
module.exports = {
    name,
    sex,
    age,
    rge
}
//导入模块
// const 变量 = require('路径')
const zou = require('./order')

console.log(zou);
console.log(zou.name);
console.log(zou.age);
console.log(zou.sex);

zou.rge('你喜欢看什么')

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值