node.js的使用
console.log('小邹最黑');
// 使用js文件,去执行NodeJS代码(掌握):
// 1.在代码文件夹中,【新建js文件】(不要新建成html),里面写任意js代码。
// const skill ='喵喵拳'
// console.log('我的技能'+ skill);
// 2.来到代码文件夹,在上面的路径处输入【cmd】,就弹出了小黑窗。
// 3.输入【node 文件名】,就能执行代码。
// node 文件名
// 技巧:
// node -v:查看node下载版本.
// 文件名太长,可以输入一半,按tab键补足。
// 按方向键↑,可以切换到上一条敲过的命令。
// 运行node,直接在终端写代码(了解):
// 这种方式是不需要JS文件的,在任意小黑窗输入node,就进入node执行环境.
// 这时任意写JS代码都可.
模块化的概念
必要性:
JS发展初期,使用寥寥数语实现简单的页面交互逻辑即可
随着大前端时代的到来,前端代码日益膨胀,此时在JS方面就会考虑使用模块化规范去管理
概念:
把一个大的程序拆分成相互依赖的n个小文件
这些小文件还可以通过特定的语法组合到一起
这个过程称之为模块化
优点:
避免命名冲突(减少命名空间污染)
更好的分离,按需加载
更高复用性
高可维护性
缺点:
没有缺点
: 需要学习模块化语法
模块化的规范
Node.js中的模块主要有3个分类:
自定义模块
自己写的模块
NodeJS中,创建的JS文件都是自定义模块。(万物皆模块)
内置模块(核心模块)
安装Node之后,自带了很多内置模块,我们可以直接加载使用他们。
第三方模块
其他人编写的模块,发布到npm网站上,我们可以下载使用.
[前端模块化规范]
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
index
console.log('这是一段代码,需要引入别的模块的内容');
// 导入模块
// const 变量 = require(‘路径’)
const order = require ('./order ')
console.log(order);
console.log(order.goodsName);
console.log(order.money);
console.log(order.info);
order.red('小邹怎么减肥')
order
const money = 9.9
const goodsName = '小黄有点虚'
const info = '把肾割了买iphone'
function read(book){
console.log('读' + book);
}
// 暴露模块
// module.exports = 暴露的数据(一般暴露一个对象)
module.exports = {
// 暴露对象出去
money,
goodsName,
info
}