区块链技术博客
www.b2bchain.cn

六、8. 模块化求职学习资料

D0b2wT.gif

本文介绍了六、8. 模块化求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

本书所指的模块,都是代码模块,而非业务功能模块。

我们在前面学习了很多方法,用于拆分代码的规模。例如把一段逻辑封装为函数,把一些实例提炼成为类。

我们在用很多方式把一个大的问题,化解为小的问题。

模块化,就是在这种思路下提炼出来的工程化解决方案。因此,我们可以在一定的规范之下,引入别人已经封装好的模块用于解决自己的问题,而不需要自己重复封装。

模块最核心的思想是隔离。要有自己的内部属性,内部方法,以及自己来决定哪些属性与方法能够被其他模块访问。但是 JavaScript 在最初并没有模块相关的支持语法。因此我们只能利用许多别的类似的,具备隔离属性的方式来模拟模块。

一、模块的发展历程

了解模块发展历程有助于增加我们的知识厚度。目前在实践中,我们仅使用最新的模块化语法。

1、 函数自执行

因为没有模块化语法,我们常常用自执行函数来模拟模块。

// 自执行函数模拟模块化  // Person 模块 (() => {   // 实例个数,模块内部变量,外部无法直接访问,   let number = 0   function Person(name, age) {     number ++     this.name = name     this.age = age   }    Person.prototype.getName = function() {     return this.name   }    Person.getInstanceNumber = function() {     return number   }    // 对外抛出接口   window.Person = Person })();   // main 模块 (() => {   // 引入模块   const Person = window.Person    const p1 = new Person('Tom', 20)   const p2 = new Person('Jake', 20)   const p3 = new Person('Alex', 20)    p1.getName()    console.log('实例化个数', Person.getInstanceNumber()) })()

2、CommonJS 规范

Node 应用的模块,就是采用 CommonJS 规范来实现。

在 nodejs 中,每一个文件就是一个模块,有自己的作用域。因此,在该文件中,定义的变量、函数、类都是私有的。

每个模块内部,module 用于代表当前模块。

并且使用 module.exports 对外暴露接口。

在其他模块,可以使用 require 加载该模块,加载的结果,就是 module.exports 的合集。

// person 模块 // person.js let number = 0 function Person(name, age) {   number++   this.name = name   this.age = age }  // 对外暴露接口 Person.prototype.getName = function () {   return this.name }  // 对外暴露接口 module.exports.getInstanceNumber = function () {   return number } module.exports.Person = Person
// main.js // 引入模块 const person = require('./person.js')  const {Person, getInstanceNumber} = person  const p1 = new Person('Tom', 20) const p2 = new Person('Jake', 20) const p3 = new Person('Alex', 20)  p1.getName() p2.getName() p3.getName()  console.log('实例化个数', getInstanceNumber())

3、AMD

AMD 是适用于浏览器环境的异步加载模块规范,它是一种依赖前置的规范。

依赖前置:所有的 require 都会提前执行

require.jscurl.js 实现了该规范。该规范使用 define 定义一个模块

// person.js define(function() {   let number = 0   function Person(name, age) {     number++     this.name = name     this.age = age   }    // 对外暴露接口   Person.prototype.getName = function () {     return this.name   }    function getInstanceNumber() {     return number   }    // 对外暴露接口   return {     getInstanceNumber,     Person   } })

“`js
// main.js

本书所指的模块,都是代码模块,而非业务功能模块。

我们在前面学习了很多方法,用于拆分代码的规模。例如把一段逻辑封装为函数,把一些实例提炼成为类。

我们在用很多方式把一个大的问题,化解为小的问题。

模块化,就是在这种思路下提炼出来的工程化解决方案。因此,我们可以在一定的规范之下,引入别人已经封装好的模块用于解决自己的问题,而不需要自己重复封装。

模块最核心的思想是隔离。要有自己的内部属性,内部方法,以及自己来决定哪些属性与方法能够被其他模块访问。但是 JavaScript 在最初并没有模块相关的支持语法。因此我们只能利用许多别的类似的,具备隔离属性的方式来模拟模块。

一、模块的发展历程

了解模块发展历程有助于增加我们的知识厚度。目前在实践中,我们仅使用最新的模块化语法。

1、 函数自执行

因为没有模块化语法,我们常常用自执行函数来模拟模块。

// 自执行函数模拟模块化  // Person 模块 (() => {   // 实例个数,模块内部变量,外部无法直接访问,   let number = 0   function Person(name, age) {     number ++     this.name = name     this.age = age   }    Person.prototype.getName = function() {     return this.name   }    Person.getInstanceNumber = function() {     return number   }    // 对外抛出接口   window.Person = Person })();   // main 模块 (() => {   // 引入模块   const Person = window.Person    const p1 = new Person('Tom', 20)   const p2 = new Person('Jake', 20)   const p3 = new Person('Alex', 20)    p1.getName()    console.log('实例化个数', Person.getInstanceNumber()) })()

2、CommonJS 规范

Node 应用的模块,就是采用 CommonJS 规范来实现。

在 nodejs 中,每一个文件就是一个模块,有自己的作用域。因此,在该文件中,定义的变量、函数、类都是私有的。

每个模块内部,module 用于代表当前模块。

并且使用 module.exports 对外暴露接口。

在其他模块,可以使用 require 加载该模块,加载的结果,就是 module.exports 的合集。

// person 模块 // person.js let number = 0 function Person(name, age) {   number++   this.name = name   this.age = age }  // 对外暴露接口 Person.prototype.getName = function () {   return this.name }  // 对外暴露接口 module.exports.getInstanceNumber = function () {   return number } module.exports.Person = Person
// main.js // 引入模块 const person = require('./person.js')  const {Person, getInstanceNumber} = person  const p1 = new Person('Tom', 20) const p2 = new Person('Jake', 20) const p3 = new Person('Alex', 20)  p1.getName() p2.getName() p3.getName()  console.log('实例化个数', getInstanceNumber())

3、AMD

AMD 是适用于浏览器环境的异步加载模块规范,它是一种依赖前置的规范。

依赖前置:所有的 require 都会提前执行

require.jscurl.js 实现了该规范。该规范使用 define 定义一个模块

// person.js define(function() {   let number = 0   function Person(name, age) {     number++     this.name = name     this.age = age   }    // 对外暴露接口   Person.prototype.getName = function () {     return this.name   }    function getInstanceNumber() {     return number   }    // 对外暴露接口   return {     getInstanceNumber,     Person   } })

“`js
// main.js

本书所指的模块,都是代码模块,而非业务功能模块。

我们在前面学习了很多方法,用于拆分代码的规模。例如把一段逻辑封装为函数,把一些实例提炼成为类。

我们在用很多方式把一个大的问题,化解为小的问题。

模块化,就是在这种思路下提炼出来的工程化解决方案。因此,我们可以在一定的规范之下,引入别人已经封装好的模块用于解决自己的问题,而不需要自己重复封装。

模块最核心的思想是隔离。要有自己的内部属性,内部方法,以及自己来决定哪些属性与方法能够被其他模块访问。但是 JavaScript 在最初并没有模块相关的支持语法。因此我们只能利用许多别的类似的,具备隔离属性的方式来模拟模块。

一、模块的发展历程

了解模块发展历程有助于增加我们的知识厚度。目前在实践中,我们仅使用最新的模块化语法。

1、 函数自执行

因为没有模块化语法,我们常常用自执行函数来模拟模块。

// 自执行函数模拟模块化  // Person 模块 (() => {   // 实例个数,模块内部变量,外部无法直接访问,   let number = 0   function Person(name, age) {     number ++     this.name = name     this.age = age   }    Person.prototype.getName = function() {     return this.name   }    Person.getInstanceNumber = function() {     return number   }    // 对外抛出接口   window.Person = Person })();   // main 模块 (() => {   // 引入模块   const Person = window.Person    const p1 = new Person('Tom', 20)   const p2 = new Person('Jake', 20)   const p3 = new Person('Alex', 20)    p1.getName()    console.log('实例化个数', Person.getInstanceNumber()) })()

2、CommonJS 规范

Node 应用的模块,就是采用 CommonJS 规范来实现。

在 nodejs 中,每一个文件就是一个模块,有自己的作用域。因此,在该文件中,定义的变量、函数、类都是私有的。

每个模块内部,module 用于代表当前模块。

并且使用 module.exports 对外暴露接口。

在其他模块,可以使用 require 加载该模块,加载的结果,就是 module.exports 的合集。

// person 模块 // person.js let number = 0 function Person(name, age) {   number++   this.name = name   this.age = age }  // 对外暴露接口 Person.prototype.getName = function () {   return this.name }  // 对外暴露接口 module.exports.getInstanceNumber = function () {   return number } module.exports.Person = Person
// main.js // 引入模块 const person = require('./person.js')  const {Person, getInstanceNumber} = person  const p1 = new Person('Tom', 20) const p2 = new Person('Jake', 20) const p3 = new Person('Alex', 20)  p1.getName() p2.getName() p3.getName()  console.log('实例化个数', getInstanceNumber())

3、AMD

AMD 是适用于浏览器环境的异步加载模块规范,它是一种依赖前置的规范。

依赖前置:所有的 require 都会提前执行

require.jscurl.js 实现了该规范。该规范使用 define 定义一个模块

// person.js define(function() {   let number = 0   function Person(name, age) {     number++     this.name = name     this.age = age   }    // 对外暴露接口   Person.prototype.getName = function () {     return this.name   }    function getInstanceNumber() {     return number   }    // 对外暴露接口   return {     getInstanceNumber,     Person   } })

“`js
// main.js

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 六、8. 模块化求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们