12

「构建程序/系统 」制作的概念基础

 4 years ago
source link: http://nakeman.cn/engineering/webprogramming/web-build-tools-basic.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

最近觉得React编程技术学得有一定操作能力,开始转向实操阶段,转向开发环境的学习。第一个任务,是学习和定制构建工具,或构建系统。

然而,名不正,言不顺,在尝试制作一个东西之前,必须对这个东西有一定深度的认识。构建程序,或构建系统 是什么,有什么用,相信有过一定项目经验都不陌生,但并不一定精确;如果你还不能为一个特殊的项目定制 构建系统,直接使用现成的脚手架, 也是你不精通的例证之一。

Table of Contents

  • 构建系统的实质和及其技术基础
    • 「构建系统」的工具特征?
    • 有通用的「构建系统」的吗?
    • 「构建系统」使用什么技术制作?
  • Web项目构建系统技术特征
    • 为什么Web项目或开发前端应用(WGP)需要安装Nodejs?
    • npm 和 package.json是什么

构建系统的实质和及其技术基础

「构建系统」是什么?

这里的构建系统,与常识build tool相通,是指协助开发者对大型软件项目执行的 开发构建、运行测试、发布部署 等日常任务的工具。

「构建系统」的工具特征?

构建系统的使用特征是提供了 像 start run test build常用的命令入口,你可以在项目的命令行,或集成的IDE上「使用」此工具;

有通用的「构建系统」的吗?

由于项目特性,没用完全适用于某个特定项目的 构建系统,但是有相当多的通用模板或脚手架,可供使用;例如:

「构建系统」怎么制作?

除非项目非常的简单,否则大多数的构建系统都是从现有的脚手架之上微调得到,像CRA。当然,能调整一个现成的 构建系统也就有了定制的能力前提了,因为我们需要掌握 制作构建系统的基础技术;

「构建系统」使用什么技术制作?

软件 构建系统 有一个自动化任务的传统,所谓的脚本script本质上也是一个“程序”,一个自动化脚本任务可以看成一个“子程序”。在Web开发领域,编写自动化脚本的技术目前最流行的要数gulp和npm script。

接下来主要讲,使用npm script制作Web开发项目的构建系统,不是gulp技术,也不是非Web项目,像桌面项目;

Web项目构建系统技术特征

Web项目的构建系统无一不使用nodejs作为基础技术,这有历史和其它多种原因。要定制和使用Web项目构建系统,必先厘清一下nodejs相关的必要知识。

为什么Web项目或开发前端应用(WGP)需要安装Nodejs?

这个问题对刚进入前端领域的开发者来比较常见问。Web应用程序(WGP)是基于浏览器的,的确运行不需要Node,开发工具也不必一定需要Node,只是人为和趋势所致而已,主要有以下一些原因:

  • 第一,Web应用 和 Node 应用都是JS应用,它们有共通的代码库可共享,所以 大型Web应用 对Node的全球代码库有一定的依赖;
  • 第二,大部分Web应用 有 服务端,Web应用 不但前端,后端也会依赖Node;选择已有第三方技术,例如PHP作用后端不一定是明智;
  • 第三,开发工具完全可以使用现有的工具,例如使用传统的Make作构建技术,但是如果可以直接用自己熟悉的JS来开发辅助工具不是灵活自由吗?

npm 和 package.json是什么

使用 nodejs 作为基础技术的另一个让新手困惑是关于 NPM和它的配置文件 package.json。NPM是nodejs平台自带的 全球代码库的客户端管理工具,对NPM的困惑主要源它被赋于了多重角色的原因,请看以来的我对NPM的不满:

! 我对 NPM的不满

NPM 这个工具(为了方便“老手”) 违反了 专职工具 的规则,给初学者带来困惑;

NPM字面上就是个管理 NODEJS平台软件包 的工具(包括给本机安装、删除包,和将开发好包发布到服务器等),例如:

$ npm install xxxx

$ npm publish xxxx

但是,它也亦可用来 配置NODE 项目的开发环境——为项目安装依赖包,和开发工具包(理由:既然我管理着大量源码库,直接提供开发接口不是更方便),例如:

$ npm init

$ npm install xxxx –save

$ npm install xxxx -D

还可以,执行 构建任务,用作构建工具(注:这个是对npm管理功能定制接口的混用,原script对象接口只是用来管理包使用),例如:

$ npm start

$ npm run build

一具多职,让新手很迷惑,完成没有这个必要,分为三个工具就很简单了。

复制代码由于多重角色,导致 配置文件 package.json混入多重涵义的数据。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK