目录
JavaScript作为一门编程语言的要素,包括基本类型和变量、函数和对象等,都与其他编程语言无异。
JavaScript的最大缺陷在于它是专门为了在浏览器中运行而设计的,在设计之初没有考虑到和I/O设备交互的情形。
【I/O设备】
I-Input-输入/O-Output-输出
I/O设备-输入输出设备-是数据处理系统的关键外部设备之一,可以和计算机本体进行交互使用。
如:键盘、写字板、麦克风、音响、显示器
node的作用:让JavaScript能够直接在本地机器上运行并利用所有资源,并对JavaScript做了大量拓展,包括模块系统、文件系统、流处理以及多进程支持。
node的使用
实例
//使用js文件,去执行NodeJS代码(掌握): // 1.在代码文件夹中,【新建js文件】(不要新建成html),里面写任意js代码。 const hoppy = '运动' console.log('我的爱好'+ hoppy); // 2.来到代码文件夹,在上面的路径处输入【cmd】,就弹出了小黑窗。 // 3.在小黑窗中输入【node 文件名】,执行代码。
输出结果:
模块化
作用:解决大前端时代前端代码日益膨胀的问题
概念:
- 将一个较大的程序拆分成n个互相依赖的小文件
- 这些小文件可以通过特点的语法组合
- 该过程称为模块化
优点:
- 避免命名冲突
- 分离,按需加载
- 提高可维护性
分类
- 自定义模块/自己写的模块
- 内置模块(核心模块)
- 第三方模块
前端模块化规范
AMD规范
//AMD(Asynchronous Module Definition):异步模块定义规范。 //专门用于浏览器端,模块的加载是异步的。 //AMD主要通过require.js实现模块化。(通过define方法,将代码定义成模块;通过require方法,实现代码的模块加载。) //目前用的很少,很少,了解即可。 //在require.js中,使用require.js提供的函数require()来应用一个模块 require(['模块文件的路径(不带.js后缀)',function(){ //模块加载成功之后的回调函数 }])
CMD规范
//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); })//异步导入 })
CommonJS规范
// Node.js是CommonJS的主要实践者,Node.js中内置CommonJS。 //接下来我们学习的模块化语法,就是Common.js。 //[概述] //每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。 //在服务器端,模块的加载是运行时同步加载的。在浏览器端,模块需要提前编译打包处理。 //[特点] //所有的代码都运行在模块作用域,不会污染全局作用域。 //模块可以多次加载,但是只会在第一次加载是运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。 //模块加载的顺序,按照其在代码中出现的顺序。 //[语法] //暴露模块 // module exports = valuel // exports xxx = value //引入模块 // require( xxx) //在第三方模块中, xxx为模块名。在自定义模块中,xxx为模块文件路径。
实例
order.js
const name = 'leo' const sex = 'male' const age = 22 function read(message) { console.log('我的' + message); } // 暴露模块 // module.exports = 暴露的数据(一般暴露一个对象) module.exports = { // 暴露对象出去 name, sex, age, read }
index.js
//导入模块 // const 变量 = require('路径') const order = require('./order') console.log(order); console.log(order.age); console.log(order.name); console.log(order.sex); order.read('个人信息')
cmd输出结果: