什么是工程化

骆驼祥子简介2023-01-29  36

工程化是在较短的时间内多人合作,做出一个功能强大、健壮性好的项目事件。

随着人类文明的发展,人们可以建造出比单一产品更大、更复杂的产品,这些产品不再是结构或功能单一的东西。

而是各种各样的所谓“人造系统”(比如建筑物、轮船、铁路工程、海上工程、地下工程、飞机等等),于是工程的概念就产生了,并且它逐渐发展为一门独立的学科和技艺。

工程的所有各分支领域都有如下主要职能:

1、研究:应用数学和自然科学概念、原理、实验技术等,探求新的工作原理和方法。

2、开发:解决把研究成果应用于实际过程中所遇到的各种问题。

3、设计:选择不同的方法、特定的材料并确定符合技术要求和性能规格的设计方案,以满足结构或产品的要求。

4、施工:包括准备场地、材料存放、选定既经济又安全并能达到质量要求的工作步骤,以及人员的组织和设备利用。

5、生产:在考虑人和经济因素的情况下,选择工厂布局、生产设备、工具、材料、元件和工艺流程,进行产品的试验和检查。

前端工程本质上是软件工程的一种。软件工程化关注的是性能、稳定性、可用性、可维护性等方面,注重基本的开发效率、运行效率的同时,思考维护效率。一切以这些为目标的工作都是'前端工程化'。工程化是一种思想而不是某种技术。

前端工程化需要考虑哪些因素?

1. 模块化

简单来说,模块化就是将一个大文件拆分成相互依赖的小文件,再进行统一的拼装和加载。(方便了多人协作)。

分而治之是软件工程中的重要思想,是复杂系统开发和维护的基石,这点放在前端开发中同样适用。模块化是目前前端最流行的分治手段。

模块化开发的最大价值应该是分治!

不管你将来是否要复用某段代码,你都有充分的理由将其分治为一个模块。

JS模块化方案

AMD/CommonJS/UMD/ES6 Module等等。

CommonJS的核心思想是把一个文件当做一个模块,要在哪里使用这个模块,就在哪里require这个模块,然后require方法开始加载这个模块并且执行其中的代码,最后会返回你指定的export对象。

module.export = function() { hello: function() { alert('你好')}}var a = require('./xxx/a.js')a.hello()// ==>弹窗“你好”

CommonJS 加载模块是同步的,所以只有加载完成才能执行后面的操作,不能非阻塞的并行加载多个模块。

AMD(异步模块定义,Asynchronous Module Definition),特点是可以实现异步加载模块,等所有模块都加载并且解释执行完成后,才会执行接下来的代码。

// 通过AMD载入模块// define(// module_id /*可选*/, // [dependencies] 可选, // definition function /*回调 用来初始化模块或对象的函数*/// )define(['myModule', 'myOtherModule'], function(myModule, myOtherModule) {console.log(myModule.hello()) //会先并行加载所有的模块a b 并执行其中模块的代码后,在执行逐步执行下面的 consolerequire('a') console.log('a required') require('b') console.log('b required') console.log('all modules have been required')})

在一些同时需要AMD和CommonJS功能的项目中,你需要使用另一种规范:Universal Module Definition(通用模块定义规范)。UMD创造了一种同时使用两种规范的方法,并且也支持全局变量定义。所以UMD的模块可以同时在客户端和服务端使用。

幸运的是在JS的最新规范ECMAScript 6 (ES6)中,引入了模块功能。

ES6 的模块功能汲取了CommonJS 和 AMD 的优点,拥有简洁的语法并支持异步加载,并且还有其他诸多更好的支持(例如导入是实时只读的。(CommonJS 只是相当于把导出的代码复制过来))。


转载请注明原文地址:https://juke.outofmemory.cn/read/2821796.html

最新回复(0)